Skip to content

Commit

Permalink
In Sema::ClassifyName, try to avoid nonsensical corrections to
Browse files Browse the repository at this point in the history
keywords when doing type correction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159464 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
Kaelyn Uhrain committed Jun 29, 2012
1 parent 529cdf4 commit 4ac5751
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
13 changes: 13 additions & 0 deletions lib/Sema/SemaDecl.cpp
Expand Up @@ -634,6 +634,19 @@ Sema::NameClassification Sema::ClassifyName(Scope *S,
if (!SecondTry) {
SecondTry = true;
CorrectionCandidateCallback DefaultValidator;
// Try to limit which sets of keywords should be included in typo
// correction based on what the next token is.
DefaultValidator.WantTypeSpecifiers =
NextToken.is(tok::l_paren) || NextToken.is(tok::less) ||
NextToken.is(tok::identifier) || NextToken.is(tok::star) ||
NextToken.is(tok::amp) || NextToken.is(tok::l_square);
DefaultValidator.WantExpressionKeywords =
NextToken.is(tok::l_paren) || NextToken.is(tok::identifier) ||
NextToken.is(tok::arrow) || NextToken.is(tok::period);
DefaultValidator.WantRemainingKeywords =
NextToken.is(tok::l_paren) || NextToken.is(tok::semi) ||
NextToken.is(tok::identifier) || NextToken.is(tok::l_brace);
DefaultValidator.WantCXXNamedCasts = false;
if (TypoCorrection Corrected = CorrectTypo(Result.getLookupNameInfo(),
Result.getLookupKind(), S,
&SS, DefaultValidator)) {
Expand Down
7 changes: 7 additions & 0 deletions test/SemaCXX/typo-correction.cpp
Expand Up @@ -227,3 +227,10 @@ class foo { }; // expected-note{{'foo' declared here}}
// 'boo' to 'bool' is the same edit distance as correcting 'boo' to 'foo'.
class bar : boo { }; // expected-error{{unknown class name 'boo'; did you mean 'foo'?}}
}

namespace bogus_keyword_suggestion {
void test() {
status = "OK"; // expected-error-re{{use of undeclared identifier 'status'$}}
return status; // expected-error-re{{use of undeclared identifier 'status'$}}
}
}

0 comments on commit 4ac5751

Please sign in to comment.