summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/member-pointer.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2009-01-26 19:54:48 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2009-01-26 19:54:48 +0000
commita7bc8473a3837fc7552452973c191721d8eb5d5a (patch)
tree5f1df9635f518278192b90d9037d8f00cae53780 /clang/test/SemaCXX/member-pointer.cpp
parent54cb4c88e1885b5d08291ebf00d076bba20fd869 (diff)
downloadbcm5719-llvm-a7bc8473a3837fc7552452973c191721d8eb5d5a.tar.gz
bcm5719-llvm-a7bc8473a3837fc7552452973c191721d8eb5d5a.zip
Remove an implemented FIXME and extend test cases. Follow-up on Doug's review.
llvm-svn: 63032
Diffstat (limited to 'clang/test/SemaCXX/member-pointer.cpp')
-rw-r--r--clang/test/SemaCXX/member-pointer.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/member-pointer.cpp b/clang/test/SemaCXX/member-pointer.cpp
index 4aa30984610..bcd3dd65e84 100644
--- a/clang/test/SemaCXX/member-pointer.cpp
+++ b/clang/test/SemaCXX/member-pointer.cpp
@@ -4,6 +4,9 @@ struct A {};
enum B { Dummy };
namespace C {}
struct D : A {};
+struct E : A {};
+struct F : D, E {};
+struct G : virtual D {};
int A::*pdi1;
int (::A::*pdi2);
@@ -29,4 +32,8 @@ void f() {
// Conversion to member of derived.
int D::*pdid = pdi1;
pdid = pdi2;
+
+ // Fail conversion due to ambiguity and virtuality.
+ int F::*pdif = pdi1; // expected-error {{ambiguous conversion from pointer to member of base class 'struct A' to pointer to member of derived class 'struct F'}} expected-error {{incompatible type}}
+ int G::*pdig = pdi1; // expected-error {{conversion from pointer to member of class 'struct A' to pointer to member of class 'struct G' via virtual base 'struct D' is not allowed}} expected-error {{incompatible type}}
}
OpenPOWER on IntegriCloud