aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Parse/ParseCXXInlineMethods.cpp
diff options
context:
space:
mode:
authorKadir Cetinkaya <kadircet@google.com>2023-08-14 15:46:01 +0200
committerKadir Cetinkaya <kadircet@google.com>2023-08-16 10:22:16 +0200
commit373fcd5d73a3ed5bedff771bcf6a3aba981155cc (patch)
tree9808909d5974b71e128b97b7c1ec7b1aa30478ee /clang/lib/Parse/ParseCXXInlineMethods.cpp
parent83695d45d62121ab306d0dc108b549d9056a2f28 (diff)
downloadllvm-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/ParseCXXInlineMethods.cpp')
-rw-r--r--clang/lib/Parse/ParseCXXInlineMethods.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseCXXInlineMethods.cpp b/clang/lib/Parse/ParseCXXInlineMethods.cpp
index 4951eb9a..573c90a 100644
--- a/clang/lib/Parse/ParseCXXInlineMethods.cpp
+++ b/clang/lib/Parse/ParseCXXInlineMethods.cpp
@@ -395,9 +395,10 @@ void Parser::ParseLexedMethodDeclaration(LateParsedMethodDeclaration &LM) {
DefArgResult = ParseBraceInitializer();
} else
DefArgResult = ParseAssignmentExpression();
- DefArgResult = Actions.CorrectDelayedTyposInExpr(DefArgResult);
+ DefArgResult = Actions.CorrectDelayedTyposInExpr(DefArgResult, Param);
if (DefArgResult.isInvalid()) {
- Actions.ActOnParamDefaultArgumentError(Param, EqualLoc);
+ Actions.ActOnParamDefaultArgumentError(Param, EqualLoc,
+ /*DefaultArg=*/nullptr);
} else {
if (Tok.isNot(tok::eof) || Tok.getEofData() != Param) {
// The last two tokens are the terminator and the saved value of