Allow taking the address of data members, resulting in a member pointer.
Pointers to functions don't work yet, and pointers to overloaded functions even less. Also, far too much illegal code is accepted.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63655 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaCXX/member-pointer.cpp b/test/SemaCXX/member-pointer.cpp
index 31973c1..450fdba 100644
--- a/test/SemaCXX/member-pointer.cpp
+++ b/test/SemaCXX/member-pointer.cpp
@@ -40,3 +40,23 @@
// Conversion to member of base.
pdi1 = pdid; // expected-error {{incompatible type assigning 'int struct D::*', expected 'int struct A::*'}}
}
+
+struct HasMembers
+{
+ int i;
+ void f();
+};
+
+namespace Fake
+{
+ int i;
+ void f();
+}
+
+void g() {
+ int HasMembers::*pmi = &HasMembers::i;
+ int *pni = &Fake::i;
+
+ // FIXME: Test the member function, too.
+ void (*pnf)() = &Fake::f;
+}