summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/SemaCXX/address-of.cpp8
-rw-r--r--clang/test/SemaCXX/undefined-internal.cpp19
2 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/address-of.cpp b/clang/test/SemaCXX/address-of.cpp
index 69fcaff8f1e..677dc8966ba 100644
--- a/clang/test/SemaCXX/address-of.cpp
+++ b/clang/test/SemaCXX/address-of.cpp
@@ -44,3 +44,11 @@ void PR11066::test() {
int (PR11066::*ptr)(int) = & &PR11066::foo; // expected-error{{address expression must be an lvalue or a function designator}}
}
+namespace test3 {
+ // emit no error
+ template<typename T> struct S {
+ virtual void f() = 0;
+ };
+ template<typename T> void S<T>::f() { T::error; }
+ void (S<int>::*p)() = &S<int>::f;
+}
diff --git a/clang/test/SemaCXX/undefined-internal.cpp b/clang/test/SemaCXX/undefined-internal.cpp
index 62c6ff96ca9..227e6b4a85e 100644
--- a/clang/test/SemaCXX/undefined-internal.cpp
+++ b/clang/test/SemaCXX/undefined-internal.cpp
@@ -212,3 +212,22 @@ namespace test9 {
x.X::used(); // expected-note {{used here}}
}
}
+
+namespace test10 {
+ namespace {
+ struct X {
+ virtual void notused() = 0;
+ virtual void used() = 0; // expected-warning {{function 'test10::<anonymous namespace>::X::used' has internal linkage but is not defined}}
+
+ void test() {
+ notused();
+ (void)&X::notused;
+ (this->*&X::notused)();
+ X::used(); // expected-note {{used here}}
+ }
+ };
+ struct Y : X {
+ using X::notused;
+ };
+ }
+}
OpenPOWER on IntegriCloud