diff options
author | Kaelyn Takata <rikka@google.com> | 2014-11-20 22:06:40 +0000 |
---|---|---|
committer | Kaelyn Takata <rikka@google.com> | 2014-11-20 22:06:40 +0000 |
commit | b16e632c64666bfab88518b369ecaab989a4915d (patch) | |
tree | 6eaba0dc0d1b23be2565cb80e4e7e173c7cdbef5 /clang/lib/Parse/ParseDecl.cpp | |
parent | 6f71ce2e212df2d0b834bf71ad128ea95508adbe (diff) | |
download | bcm5719-llvm-b16e632c64666bfab88518b369ecaab989a4915d.tar.gz bcm5719-llvm-b16e632c64666bfab88518b369ecaab989a4915d.zip |
Wire up delayed typo correction to DiagnoseEmptyLookup and set up
Sema::ActOnIdExpression to use the new functionality.
Among other things, this allows recovery in several cases where it
wasn't possible before (e.g. correcting a mistyped static_cast<>).
llvm-svn: 222464
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 9266644c590..f84b4dae8d5 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -302,7 +302,8 @@ unsigned Parser::ParseAttributeArgsCommon( Unevaluated.reset( new EnterExpressionEvaluationContext(Actions, Sema::Unevaluated)); - ExprResult ArgExpr(ParseAssignmentExpression()); + ExprResult ArgExpr( + Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression())); if (ArgExpr.isInvalid()) { SkipUntil(tok::r_paren, StopAtSemi); return 0; @@ -5566,6 +5567,7 @@ void Parser::ParseParameterDeclarationClause( DefArgResult = ParseBraceInitializer(); } else DefArgResult = ParseAssignmentExpression(); + DefArgResult = Actions.CorrectDelayedTyposInExpr(DefArgResult); if (DefArgResult.isInvalid()) { Actions.ActOnParamDefaultArgumentError(Param, EqualLoc); SkipUntil(tok::comma, tok::r_paren, StopAtSemi | StopBeforeMatch); |