diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-02-25 17:36:15 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-02-25 17:36:15 +0000 |
commit | ced8bdf74a4f2b67b060588a08af8e7dbb684b36 (patch) | |
tree | be41948058ac4ea75c795c6f95e146e5ea0f711b /clang/lib/Parse/ParseExprCXX.cpp | |
parent | 6cd04ac9637508e996c12c88241cba18d3725cc3 (diff) | |
download | bcm5719-llvm-ced8bdf74a4f2b67b060588a08af8e7dbb684b36.tar.gz bcm5719-llvm-ced8bdf74a4f2b67b060588a08af8e7dbb684b36.zip |
Sema: Parenthesized bound destructor member expressions can be called
We would wrongfully reject (a.~A)() in both the destructor and
pseudo-destructor cases.
This fixes PR22668.
llvm-svn: 230512
Diffstat (limited to 'clang/lib/Parse/ParseExprCXX.cpp')
-rw-r--r-- | clang/lib/Parse/ParseExprCXX.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/clang/lib/Parse/ParseExprCXX.cpp b/clang/lib/Parse/ParseExprCXX.cpp index d91744115cc..6cff1c59975 100644 --- a/clang/lib/Parse/ParseExprCXX.cpp +++ b/clang/lib/Parse/ParseExprCXX.cpp @@ -1493,9 +1493,8 @@ Parser::ParseCXXPseudoDestructor(Expr *Base, SourceLocation OpLoc, ParseDecltypeSpecifier(DS); if (DS.getTypeSpecType() == TST_error) return ExprError(); - return Actions.ActOnPseudoDestructorExpr(getCurScope(), Base, OpLoc, - OpKind, TildeLoc, DS, - Tok.is(tok::l_paren)); + return Actions.ActOnPseudoDestructorExpr(getCurScope(), Base, OpLoc, OpKind, + TildeLoc, DS); } if (!Tok.is(tok::identifier)) { @@ -1518,11 +1517,9 @@ Parser::ParseCXXPseudoDestructor(Expr *Base, SourceLocation OpLoc, /*AssumeTemplateName=*/true)) return ExprError(); - return Actions.ActOnPseudoDestructorExpr(getCurScope(), Base, - OpLoc, OpKind, - SS, FirstTypeName, CCLoc, - TildeLoc, SecondTypeName, - Tok.is(tok::l_paren)); + return Actions.ActOnPseudoDestructorExpr(getCurScope(), Base, OpLoc, OpKind, + SS, FirstTypeName, CCLoc, TildeLoc, + SecondTypeName); } /// ParseCXXBoolLiteral - This handles the C++ Boolean literals. |