diff options
author | Richard Trieu <rtrieu@google.com> | 2012-01-18 22:54:52 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2012-01-18 22:54:52 +0000 |
commit | d6c7c67313634b317a0d63c32be0511a121bb33d (patch) | |
tree | 6ad1b344b9e35abc16feaf2077bb26eb258ef6b6 /lib/Parse/ParseExprCXX.cpp | |
parent | 8e87490124b02ffb8eaa06fab26dfc78625613f5 (diff) |
Change the error when a '+=' follows a declaration to suggest a fixit to '=' instead of just suggesting a ';'.
Old error:
plusequaldeclare1.cc:3:8: error: expected ';' at end of declaration
int x += 6;
^
;
New error:
plusequaldeclare1.cc:3:9: error: invalid '+=' at end of declaration; did you
mean '='?
int x += 6;
^~
=
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148433 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseExprCXX.cpp')
-rw-r--r-- | lib/Parse/ParseExprCXX.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Parse/ParseExprCXX.cpp b/lib/Parse/ParseExprCXX.cpp index f1cedfebfd..831c446fbb 100644 --- a/lib/Parse/ParseExprCXX.cpp +++ b/lib/Parse/ParseExprCXX.cpp @@ -1259,8 +1259,12 @@ bool Parser::ParseCXXCondition(ExprResult &ExprOut, ExprOut = ExprError(); // '=' assignment-expression - if (isTokenEqualOrMistypedEqualEqual( - diag::err_invalid_equalequal_after_declarator)) { + // If a '==' or '+=' is found, suggest a fixit to '='. + if (Tok.is(tok::equal) || + CreateTokenReplacement(tok::equal, tok::equalequal, + diag::err_invalid_equalequal_after_declarator) || + CreateTokenReplacement(tok::equal, tok::plusequal, + diag::err_invalid_plusequal_after_declarator)) { ConsumeToken(); ExprResult AssignExpr(ParseAssignmentExpression()); if (!AssignExpr.isInvalid()) |