forked from OSchip/llvm-project
Typo correction for identifiers within nested name specifiers, e.g.,
typo.cpp:18:1: error: use of undeclared identifier 'other_std'; did you mean 'otherstd'? other_std::strng str1; ^~~~~~~~~ otherstd llvm-svn: 92350
This commit is contained in:
parent
d5bace7092
commit
532e68f1f3
|
@ -428,6 +428,28 @@ Sema::CXXScopeTy *Sema::BuildCXXNestedNameSpecifier(Scope *S,
|
|||
}
|
||||
|
||||
// FIXME: Deal with ambiguities cleanly.
|
||||
|
||||
if (Found.empty() && !ErrorRecoveryLookup) {
|
||||
// We haven't found anything, and we're not recovering from a
|
||||
// different kind of error, so look for typos.
|
||||
DeclarationName Name = Found.getLookupName();
|
||||
if (CorrectTypo(Found, S, &SS, LookupCtx, EnteringContext) &&
|
||||
Found.isSingleResult() &&
|
||||
isAcceptableNestedNameSpecifier(Found.getAsSingle<NamedDecl>())) {
|
||||
if (LookupCtx)
|
||||
Diag(Found.getNameLoc(), diag::err_no_member_suggest)
|
||||
<< Name << LookupCtx << Found.getLookupName() << SS.getRange()
|
||||
<< CodeModificationHint::CreateReplacement(Found.getNameLoc(),
|
||||
Found.getLookupName().getAsString());
|
||||
else
|
||||
Diag(Found.getNameLoc(), diag::err_undeclared_var_use_suggest)
|
||||
<< Name << Found.getLookupName()
|
||||
<< CodeModificationHint::CreateReplacement(Found.getNameLoc(),
|
||||
Found.getLookupName().getAsString());
|
||||
} else
|
||||
Found.clear();
|
||||
}
|
||||
|
||||
NamedDecl *SD = Found.getAsSingle<NamedDecl>();
|
||||
if (isAcceptableNestedNameSpecifier(SD)) {
|
||||
if (!ObjectType.isNull() && !ObjectTypeSearchedInScope) {
|
||||
|
|
|
@ -15,7 +15,8 @@ namespace otherstd {
|
|||
|
||||
using namespace std;
|
||||
|
||||
otherstd::strng str1; // expected-error{{no type named 'strng' in namespace 'otherstd'; did you mean 'string'?}}
|
||||
other_std::strng str1; // expected-error{{use of undeclared identifier 'other_std'; did you mean 'otherstd'?}} \
|
||||
// expected-error{{no type named 'strng' in namespace 'otherstd'; did you mean 'string'?}}
|
||||
tring str2; // expected-error{{unknown type name 'tring'; did you mean 'string'?}}
|
||||
|
||||
float area(float radius, float pi) {
|
||||
|
|
Loading…
Reference in New Issue