diff options
author | Chris Lattner <sabre@nondot.org> | 2009-12-10 02:08:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-12-10 02:08:07 +0000 |
commit | 932dff777d58a23e3a26967a61bb52697c542fd4 (patch) | |
tree | 15c343d9ba56c3a30f25c816c4bfa1cffbfabc09 /lib/Parse/ParseExpr.cpp | |
parent | a69d0ed3ab66e96393586664a103e9482ec59e6f (diff) |
If we enter parens, colons can become un-sacred, allowing us to emit
a better diagnostic in the second example.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91040 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseExpr.cpp')
-rw-r--r-- | lib/Parse/ParseExpr.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index 2536cee1cb..bdbc67f782 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -565,9 +565,15 @@ Parser::OwningExprResult Parser::ParseCastExpression(bool isUnaryExpression, TypeTy *CastTy; SourceLocation LParenLoc = Tok.getLocation(); SourceLocation RParenLoc; - Res = ParseParenExpression(ParenExprType, false/*stopIfCastExr*/, - TypeOfCast, CastTy, RParenLoc); - if (Res.isInvalid()) return move(Res); + + { + // The inside of the parens don't need to be a colon protected scope. + ColonProtectionRAIIObject X(*this, false); + + Res = ParseParenExpression(ParenExprType, false/*stopIfCastExr*/, + TypeOfCast, CastTy, RParenLoc); + if (Res.isInvalid()) return move(Res); + } switch (ParenExprType) { case SimpleExpr: break; // Nothing else to do. |