summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/instantiate-local-class.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-02-22 00:17:46 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-02-22 00:17:46 +0000
commita64cb5a019f7f194b7bf24a1dd1470953d302d32 (patch)
tree461e0f783d085fef728e92bcf507c8537f4a3202 /clang/test/SemaTemplate/instantiate-local-class.cpp
parenta349084a91025cff528bc3c4e5582ae5e049c2fc (diff)
downloadbcm5719-llvm-a64cb5a019f7f194b7bf24a1dd1470953d302d32.tar.gz
bcm5719-llvm-a64cb5a019f7f194b7bf24a1dd1470953d302d32.zip
Sema: Don't crash when trying to instantiate a local class with an invalid base specifier
It was previously thought that Sema::InstantiateClass could not fail from within this point in instantiate. However, it can happen if the class is invalid some way (i.e. invalid base specifier). This fixes PR18907. Differential Revision: http://llvm-reviews.chandlerc.com/D2850 llvm-svn: 201913
Diffstat (limited to 'clang/test/SemaTemplate/instantiate-local-class.cpp')
-rw-r--r--clang/test/SemaTemplate/instantiate-local-class.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/clang/test/SemaTemplate/instantiate-local-class.cpp b/clang/test/SemaTemplate/instantiate-local-class.cpp
index 2bf24c2188e..c9897b9c614 100644
--- a/clang/test/SemaTemplate/instantiate-local-class.cpp
+++ b/clang/test/SemaTemplate/instantiate-local-class.cpp
@@ -1,5 +1,4 @@
// RUN: %clang_cc1 -verify -std=c++11 %s
-// expected-no-diagnostics
template<typename T>
void f0() {
struct X;
@@ -181,3 +180,17 @@ namespace PR14373 {
return 0;
}
}
+
+namespace PR18907 {
+template <typename>
+class C : public C<int> {}; // expected-error{{within its own definition}}
+
+template <typename X>
+void F() {
+ struct A : C<X> {};
+}
+
+struct B {
+ void f() { F<int>(); }
+};
+}
OpenPOWER on IntegriCloud