summaryrefslogtreecommitdiff
path: root/test/SemaCXX
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2018-08-11 16:29:35 +0000
committerDimitry Andric <dim@FreeBSD.org>2018-08-11 16:29:35 +0000
commit46faa67da1d7e9450e8fa363f6633e2c68e33ff1 (patch)
treeba7f8dbcd8358d07c15d1da6c2c2cc38f0febeb6 /test/SemaCXX
parent874094833caedbee43fd17cca164dec53d500bdc (diff)
Vendor import of clang release_70 branch r339355:vendor/clang/clang-release_70-r339355
Notes
svn path=/vendor/clang/dist-release_70/; revision=337633 svn path=/vendor/clang/clang-release_70-r339355/; revision=337634; tag=vendor/clang/clang-release_70-r339355
Diffstat (limited to 'test/SemaCXX')
-rw-r--r--test/SemaCXX/constructor.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/SemaCXX/constructor.cpp b/test/SemaCXX/constructor.cpp
index 105605c6e37b..33ea49663491 100644
--- a/test/SemaCXX/constructor.cpp
+++ b/test/SemaCXX/constructor.cpp
@@ -86,3 +86,14 @@ A::S::operator int() { return 1; }
A::S::~S() {}
+namespace PR38286 {
+ // FIXME: It'd be nice to give more consistent diagnostics for these cases
+ // (but they're all failing for somewhat different reasons...).
+ template<typename> struct A;
+ template<typename T> A<T>::A() {} // expected-error {{incomplete type 'A' named in nested name specifier}}
+ /*FIXME: needed to recover properly from previous error*/;
+ template<typename> struct B;
+ template<typename T> void B<T>::f() {} // expected-error {{out-of-line definition of 'f' from class 'B<type-parameter-0-0>'}}
+ template<typename> struct C;
+ template<typename T> C<T>::~C() {} // expected-error {{no type named 'C' in 'C<type-parameter-0-0>'}}
+}