]> granicus.if.org Git - clang/commitdiff
ignore parens surounding the type when diagnosing
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 18 Nov 2009 22:16:17 +0000 (22:16 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 18 Nov 2009 22:16:17 +0000 (22:16 +0000)
pointer-to-member cast types used in expressions.

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

lib/Sema/SemaExprCXX.cpp
test/SemaCXX/cxx-member-pointer-op.cpp

index cf2c696c2b95751358c4d5345b582cac6c8c1090..462bf13540eb0bf4ce7d2f675f351b71537a9da0 100644 (file)
@@ -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;
index 88fe6ac166ed98cced17389848110ddf6f3eb617..63b29c723e0724d03a3289e86997c25c70e87d51 100644 (file)
@@ -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) {