summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-11-18 22:16:17 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-11-18 22:16:17 +0000
commitfff3fb2b355c77ae30c16fb57fe7bf8d18b863f9 (patch)
tree23df0bd319a5dacdd7ad691f3c521edded0f7752
parent5d87f7d5f8471972063934f5cbe8c594e0ac30d3 (diff)
downloadbcm5719-llvm-fff3fb2b355c77ae30c16fb57fe7bf8d18b863f9.tar.gz
bcm5719-llvm-fff3fb2b355c77ae30c16fb57fe7bf8d18b863f9.zip
ignore parens surounding the type when diagnosing
pointer-to-member cast types used in expressions. llvm-svn: 89255
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp2
-rw-r--r--clang/test/SemaCXX/cxx-member-pointer-op.cpp2
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) {
OpenPOWER on IntegriCloud