aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/PR40395.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-02-05 18:39:15 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-02-05 18:39:15 +0000
commitd87c9e7da2e87f224c426832f08897269c2e5636 (patch)
tree9492632723d36c1c80f3daca3974f362eea84a7a /test/SemaCXX/PR40395.cpp
parent292698a8537d1e51bbcd339f8a19b2b7d7f1e1f6 (diff)
Notes
Diffstat (limited to 'test/SemaCXX/PR40395.cpp')
-rw-r--r--test/SemaCXX/PR40395.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/SemaCXX/PR40395.cpp b/test/SemaCXX/PR40395.cpp
new file mode 100644
index 000000000000..469c86d56209
--- /dev/null
+++ b/test/SemaCXX/PR40395.cpp
@@ -0,0 +1,16 @@
+// RUN: %clang_cc1 -std=c++17 -fms-extensions -triple=x86_64-pc-win32 -verify %s
+// expected-no-diagnostics
+
+// PR40395 - ConstantExpr shouldn't cause the template object to infinitely
+// expand.
+struct _GUID {};
+struct __declspec(uuid("{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}")) B {};
+
+template <const _GUID* piid>
+struct A {
+ virtual void baz() { A<piid>(); }
+};
+
+void f() {
+ A<&__uuidof(B)>();
+}