aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/call-with-static-chain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaCXX/call-with-static-chain.cpp')
-rw-r--r--test/SemaCXX/call-with-static-chain.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/SemaCXX/call-with-static-chain.cpp b/test/SemaCXX/call-with-static-chain.cpp
new file mode 100644
index 000000000000..45fe2ac29472
--- /dev/null
+++ b/test/SemaCXX/call-with-static-chain.cpp
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+
+int &f();
+
+struct A {
+ void f();
+};
+
+typedef int I;
+
+void g() {
+ __builtin_call_with_static_chain(f(), f) = 42;
+ __builtin_call_with_static_chain(A().f(), f); // expected-error {{first argument to __builtin_call_with_static_chain must be a non-member call expression}}
+ __builtin_call_with_static_chain((42).~I(), f); // expected-error {{first argument to __builtin_call_with_static_chain must not be a pseudo-destructor call}}
+}