diff options
author | Kadir Cetinkaya <kadircet@google.com> | 2023-08-14 15:46:01 +0200 |
---|---|---|
committer | Kadir Cetinkaya <kadircet@google.com> | 2023-08-16 10:22:16 +0200 |
commit | 373fcd5d73a3ed5bedff771bcf6a3aba981155cc (patch) | |
tree | 9808909d5974b71e128b97b7c1ec7b1aa30478ee /clang/lib/Parse/ParseDecl.cpp | |
parent | 83695d45d62121ab306d0dc108b549d9056a2f28 (diff) | |
download | llvm-373fcd5d73a3ed5bedff771bcf6a3aba981155cc.zip llvm-373fcd5d73a3ed5bedff771bcf6a3aba981155cc.tar.gz llvm-373fcd5d73a3ed5bedff771bcf6a3aba981155cc.tar.bz2 |
[clang] Use RecoveryExprs for broken defaultargs, instead of OpaqueValueExprs
This makes sure we can preserve invalid-ness for consumers of this
node, it prevents crashes. It also aligns better with rest of the places that
store invalid expressions.
Differential Revision: https://reviews.llvm.org/D157868
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index b5a3ee1..cd7c5dc 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -7548,7 +7548,8 @@ void Parser::ParseParameterDeclarationClause( } else { if (Tok.is(tok::l_paren) && NextToken().is(tok::l_brace)) { Diag(Tok, diag::err_stmt_expr_in_default_arg) << 0; - Actions.ActOnParamDefaultArgumentError(Param, EqualLoc); + Actions.ActOnParamDefaultArgumentError(Param, EqualLoc, + /*DefaultArg=*/nullptr); // Skip the statement expression and continue parsing SkipUntil(tok::comma, StopBeforeMatch); continue; @@ -7557,7 +7558,8 @@ void Parser::ParseParameterDeclarationClause( } DefArgResult = Actions.CorrectDelayedTyposInExpr(DefArgResult); if (DefArgResult.isInvalid()) { - Actions.ActOnParamDefaultArgumentError(Param, EqualLoc); + Actions.ActOnParamDefaultArgumentError(Param, EqualLoc, + /*DefaultArg=*/nullptr); SkipUntil(tok::comma, tok::r_paren, StopAtSemi | StopBeforeMatch); } else { // Inform the actions module about the default argument |