diff options
| -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) {   | 

