diff --git a/lib/Sema/SemaCXXScopeSpec.cpp b/lib/Sema/SemaCXXScopeSpec.cpp index f7aace625a9266b69fa51a31d0508e780b2126d1..2e774dd28ce5bde148f2f66f62a22d4e4d1dbf87 100644 --- a/lib/Sema/SemaCXXScopeSpec.cpp +++ b/lib/Sema/SemaCXXScopeSpec.cpp @@ -606,6 +606,10 @@ bool Sema::BuildCXXNestedNameSpecifier(Scope *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()); diff --git a/test/SemaCXX/typo-correction-crash.cpp b/test/SemaCXX/typo-correction-crash.cpp index f01facd603eeec9569a87872f893e6383c0c021e..6349937ccd9de1a7590e56faddc07d5bf017bf43 100644 --- a/test/SemaCXX/typo-correction-crash.cpp +++ b/test/SemaCXX/typo-correction-crash.cpp @@ -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'?}}