]> granicus.if.org Git - clang/commitdiff
c++ error recovery. Build a valid AST when trying
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 1 Oct 2014 18:03:51 +0000 (18:03 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 1 Oct 2014 18:03:51 +0000 (18:03 +0000)
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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@218780 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp

index b35bca2c84ed507c4a860c0981807717db7e675e..ed15012a1602d47af96edbfb7390afe198ce1f3b 100644 (file)
@@ -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