summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2014-10-01 18:03:51 +0000
committerFariborz Jahanian <fjahanian@apple.com>2014-10-01 18:03:51 +0000
commit7bd22e98be7d552e85b7f0516d1d6ff785c2757e (patch)
treef8e26007271ae479f8c5e1ee2662690c62f1f491 /clang/lib
parente261aa4311018816475f72c8cfba9a5e816ff6a8 (diff)
downloadbcm5719-llvm-7bd22e98be7d552e85b7f0516d1d6ff785c2757e.tar.gz
bcm5719-llvm-7bd22e98be7d552e85b7f0516d1d6ff785c2757e.zip
c++ error recovery. Build a valid AST when trying
to recover from parse error parsing the default argument. Patch prevents crash after spewing 100s of errors caused by someone who forgot to compile in c++11 mode. So no test. rdar://18508589 llvm-svn: 218780
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index b35bca2c84e..ed15012a160 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -353,7 +353,9 @@ void Sema::ActOnParamDefaultArgumentError(Decl *param,
Param->setInvalidDecl();
UnparsedDefaultArgLocs.erase(Param);
Param->setDefaultArg(new(Context)
- OpaqueValueExpr(EqualLoc, Param->getType(), VK_RValue));
+ OpaqueValueExpr(EqualLoc,
+ Param->getType().getNonReferenceType(),
+ VK_RValue));
}
/// CheckExtraCXXDefaultArguments - Check for any extra default
OpenPOWER on IntegriCloud