| // 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'?}} |
| } |
| } |