diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/cxx-member-pointer-op.cpp | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index cf2c696c2b9..462bf13540e 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -1445,7 +1445,7 @@ QualType Sema::CheckPointerToMemberOperands( } } - if (isa<CXXZeroInitValueExpr>(rex)) { + if (isa<CXXZeroInitValueExpr>(rex->IgnoreParens())) { // Diagnose use of pointer-to-member type which when used as // the functional cast in a pointer-to-member expression. Diag(Loc, diag::err_pointer_to_member_type) << isIndirect; diff --git a/clang/test/SemaCXX/cxx-member-pointer-op.cpp b/clang/test/SemaCXX/cxx-member-pointer-op.cpp index 88fe6ac166e..63b29c723e0 100644 --- a/clang/test/SemaCXX/cxx-member-pointer-op.cpp +++ b/clang/test/SemaCXX/cxx-member-pointer-op.cpp @@ -11,6 +11,8 @@ void g(pmfc) { c->*pmfc(); // expected-error {{invalid use of pointer to member type after ->*}} C c1; c1.*pmfc(); // expected-error {{invalid use of pointer to member type after .*}} + c->*(pmfc()); // expected-error {{invalid use of pointer to member type after ->*}} + c1.*((pmfc())); // expected-error {{invalid use of pointer to member type after .*}} } int a(C* x) { |