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