| // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s | 
 |  | 
 | namespace PR23186 { | 
 | decltype(ned);  // expected-error-re {{use of undeclared identifier 'ned'{{$}}}} | 
 | // The code below was triggering an UNREACHABLE in ASTContext::getTypeInfoImpl | 
 | // once the above code failed to recover properly after making the bogus | 
 | // correction of 'ned' to 'new'. | 
 | template <typename> | 
 | struct S { | 
 |   enum { V }; | 
 |   void f() { | 
 |     switch (0) | 
 |     case V: | 
 |       ; | 
 |   } | 
 | }; | 
 | } | 
 |  | 
 | namespace PR23140 { | 
 | auto lneed = gned.*[] {};  // expected-error-re {{use of undeclared identifier 'gned'{{$}}}} | 
 |  | 
 | void test(int aaa, int bbb, int thisvar) {  // expected-note {{'thisvar' declared here}} | 
 |   int thatval = aaa * (bbb + thatvar);  // expected-error {{use of undeclared identifier 'thatvar'; did you mean 'thisvar'?}} | 
 | } | 
 | } | 
 |  | 
 | namespace PR18854 { | 
 | void f() { | 
 |   for (auto&& x : e) {  // expected-error-re {{use of undeclared identifier 'e'{{$}}}} | 
 |     auto Functor = [x]() {}; | 
 |     long Alignment = __alignof__(Functor); | 
 |   } | 
 | } | 
 | } | 
 |  | 
 | namespace NewTypoExprFromResolvingTypoAmbiguity { | 
 | struct A { | 
 |   void Swap(A *other); | 
 | }; | 
 |  | 
 | struct pair { | 
 |   int first; | 
 |   A *second; | 
 | }; | 
 |  | 
 | struct map { | 
 | public: | 
 |   void swap(map &x); | 
 |   pair find(int x); | 
 | }; | 
 |  | 
 | void run(A *annotations) { | 
 |   map new_annotations; | 
 |  | 
 |   auto &annotation = *annotations; | 
 |   auto new_it = new_annotations.find(5); | 
 |   auto &new_anotation = new_it.second;  // expected-note {{'new_anotation' declared here}} | 
 |   new_annotation->Swap(&annotation);  // expected-error {{use of undeclared identifier 'new_annotation'; did you mean 'new_anotation'?}} | 
 | } | 
 | } |