Author: rnk Date: Tue Feb 16 13:16:20 2016 New Revision: 260993 URL: http://llvm.org/viewvc/llvm-project?rev=260993&view=rev Log: [typo-correction] Apply name specifier corrections when forming a NNS
Previously we would leave behind the old name specifier prefix, which creates an invalid AST. Other callers of CorrectTypo update their CXXScopeSpec objects with the correction specifier if one is present. Modified: cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp cfe/trunk/test/SemaCXX/typo-correction-crash.cpp Modified: cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp?rev=260993&r1=260992&r2=260993&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp (original) +++ cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp Tue Feb 16 13:16:20 2016 @@ -606,6 +606,10 @@ bool Sema::BuildCXXNestedNameSpecifier(S diagnoseTypo(Corrected, PDiag(diag::err_undeclared_var_use_suggest) << Name); + if (Corrected.getCorrectionSpecifier()) + SS.MakeTrivial(Context, Corrected.getCorrectionSpecifier(), + SourceRange(Found.getNameLoc())); + if (NamedDecl *ND = Corrected.getFoundDecl()) Found.addDecl(ND); Found.setLookupName(Corrected.getCorrection()); Modified: cfe/trunk/test/SemaCXX/typo-correction-crash.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/typo-correction-crash.cpp?rev=260993&r1=260992&r2=260993&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/typo-correction-crash.cpp (original) +++ cfe/trunk/test/SemaCXX/typo-correction-crash.cpp Tue Feb 16 13:16:20 2016 @@ -9,3 +9,11 @@ auto check2() { return "s"; return tes; // expected-error {{use of undeclared identifier 'tes'; did you mean 'test'?}} } + +namespace BarNamespace { +namespace NestedNamespace { // expected-note {{'BarNamespace::NestedNamespace' declared here}} +typedef int type; +} +} +struct FooRecord { }; +FooRecord::NestedNamespace::type x; // expected-error {{no member named 'NestedNamespace' in 'FooRecord'; did you mean 'BarNamespace::NestedNamespace'?}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits