158878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s 258878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar 358878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainarnamespace PR23186 { 458878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainardecltype(ned); // expected-error-re {{use of undeclared identifier 'ned'{{$}}}} 558878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar// The code below was triggering an UNREACHABLE in ASTContext::getTypeInfoImpl 658878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar// once the above code failed to recover properly after making the bogus 758878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar// correction of 'ned' to 'new'. 858878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainartemplate <typename> 958878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainarstruct S { 1058878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar enum { V }; 1158878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar void f() { 1258878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar switch (0) 1358878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar case V: 1458878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar ; 1558878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar } 1658878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar}; 1758878f85ab89b13e9eea4af3ccf055e42c557bc8Pirama Arumuga Nainar} 18b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar 19b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarnamespace PR23140 { 20b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarauto lneed = gned.*[] {}; // expected-error-re {{use of undeclared identifier 'gned'{{$}}}} 21b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar 22b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvoid test(int aaa, int bbb, int thisvar) { // expected-note {{'thisvar' declared here}} 23b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar int thatval = aaa * (bbb + thatvar); // expected-error {{use of undeclared identifier 'thatvar'; did you mean 'thisvar'?}} 24b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar} 25b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar} 26b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar 27b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarnamespace PR18854 { 28b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainarvoid f() { 29b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar for (auto&& x : e) { // expected-error-re {{use of undeclared identifier 'e'{{$}}}} 30b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar auto Functor = [x]() {}; 31b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar long Alignment = __alignof__(Functor); 32b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar } 33b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar} 34b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar} 3587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar 3687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarnamespace NewTypoExprFromResolvingTypoAmbiguity { 3787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstruct A { 3887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar void Swap(A *other); 3987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}; 4087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar 4187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstruct pair { 4287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar int first; 4387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar A *second; 4487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}; 4587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar 4687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstruct map { 4787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarpublic: 4887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar void swap(map &x); 4987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar pair find(int x); 5087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}; 5187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar 5287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarvoid run(A *annotations) { 5387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar map new_annotations; 5487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar 5587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar auto &annotation = *annotations; 5687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar auto new_it = new_annotations.find(5); 5787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar auto &new_anotation = new_it.second; // expected-note {{'new_anotation' declared here}} 5887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar new_annotation->Swap(&annotation); // expected-error {{use of undeclared identifier 'new_annotation'; did you mean 'new_anotation'?}} 5987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar} 6087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar} 61