Author: rikka Date: Wed Sep 30 13:23:35 2015 New Revision: 248928 URL: http://llvm.org/viewvc/llvm-project?rev=248928&view=rev Log: Don't correct non-class using declarations to class members.
Such declarations would be invalid anyway, and trying to make the correction will lead to a crash. Fixes PR 24781. Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp cfe/trunk/test/SemaCXX/typo-correction.cpp Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=248928&r1=248927&r2=248928&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Wed Sep 30 13:23:35 2015 @@ -8031,6 +8031,10 @@ public: // FIXME: Check that the base class member is accessible? } + } else { + auto *FoundRecord = dyn_cast<CXXRecordDecl>(ND); + if (FoundRecord && FoundRecord->isInjectedClassName()) + return false; } if (isa<TypeDecl>(ND)) Modified: cfe/trunk/test/SemaCXX/typo-correction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/typo-correction.cpp?rev=248928&r1=248927&r2=248928&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/typo-correction.cpp (original) +++ cfe/trunk/test/SemaCXX/typo-correction.cpp Wed Sep 30 13:23:35 2015 @@ -640,3 +640,19 @@ int has_include(int); // expected-note { // expected-error@+1 {{__has_include must be used within a preprocessing directive}} int foo = __has_include(42); // expected-error {{use of undeclared identifier '__has_include'; did you mean 'has_include'?}} } + +namespace PR24781_using_crash { +namespace A { +namespace B { +class Foofoo {}; // expected-note {{'A::B::Foofoo' declared here}} +} +} + +namespace C { +namespace D { +class Bar : public A::B::Foofoo {}; +} +} + +using C::D::Foofoo; // expected-error {{no member named 'Foofoo' in namespace 'PR24781_using_crash::C::D'; did you mean 'A::B::Foofoo'?}} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits