diff options
author | Richard Trieu <rtrieu@google.com> | 2012-01-19 22:01:51 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2012-01-19 22:01:51 +0000 |
commit | 4972a6dd080f6a85a2b86f5ca1a3999b05fbc3cd (patch) | |
tree | b9a010c21b0d4544a1a2d9ed4ce25253bb2cba4d /clang/lib/Parse/Parser.cpp | |
parent | 89e0d22cc66f963bef16b2fccfededf739aefceb (diff) | |
download | bcm5719-llvm-4972a6dd080f6a85a2b86f5ca1a3999b05fbc3cd.tar.gz bcm5719-llvm-4972a6dd080f6a85a2b86f5ca1a3999b05fbc3cd.zip |
Extend the error of invalid token after declarations to include fixits for
!=, %=, ^=, &=, *=, -=, |=, /=, <<=, <=, >=, and >>= to =.
llvm-svn: 148499
Diffstat (limited to 'clang/lib/Parse/Parser.cpp')
-rw-r--r-- | clang/lib/Parse/Parser.cpp | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp index 6342b105680..45b4a745838 100644 --- a/clang/lib/Parse/Parser.cpp +++ b/clang/lib/Parse/Parser.cpp @@ -1401,21 +1401,31 @@ bool Parser::TryAnnotateCXXScopeToken(bool EnteringContext) { return false; } -bool Parser::CreateTokenReplacement(tok::TokenKind ExpectedToken, - tok::TokenKind FoundToken, - unsigned DiagID) { - if (Tok.isNot(FoundToken)) +bool Parser::isTokenEqualOrEqualTypo() { + tok::TokenKind Kind = Tok.getKind(); + switch (Kind) { + default: return false; - - // We have FoundToken in a context that we would expect an ExpectedToken. - // The user probably made a typo, intending to type ExpectedToken. - // Emit diagnostic, fixit hint to turn ReplaceToken -> ExpectedToken - // and continue as if the user typed ExpectedToken. - Tok.setKind(ExpectedToken); - Diag(Tok, DiagID) - << FixItHint::CreateReplacement(SourceRange(Tok.getLocation()), - getTokenSimpleSpelling(ExpectedToken)); - return true; + case tok::ampequal: // &= + case tok::starequal: // *= + case tok::plusequal: // += + case tok::minusequal: // -= + case tok::exclaimequal: // != + case tok::slashequal: // /= + case tok::percentequal: // %= + case tok::lessequal: // <= + case tok::lesslessequal: // <<= + case tok::greaterequal: // >= + case tok::greatergreaterequal: // >>= + case tok::caretequal: // ^= + case tok::pipeequal: // |= + case tok::equalequal: // == + Diag(Tok, diag::err_invalid_token_after_declarator_suggest_equal) + << getTokenSimpleSpelling(Kind) + << FixItHint::CreateReplacement(SourceRange(Tok.getLocation()), "="); + case tok::equal: + return true; + } } SourceLocation Parser::handleUnexpectedCodeCompletionToken() { |