summaryrefslogtreecommitdiffstats
path: root/test/CMakeLists.txt
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-04-08 15:12:23 (GMT)
committerBrad King <brad.king@kitware.com>2014-04-09 20:43:27 (GMT)
commit7f62b3ae7ba4ada760b1f519e2c70569b02b84d0 (patch)
treee000d3effe2d7356aaa26ba077ee5fa9e6d75cf2 /test/CMakeLists.txt
parent44a6a6db4a918490061b35bbb24316e14bd0bf6f (diff)
downloadCastXML-7f62b3ae7ba4ada760b1f519e2c70569b02b84d0.zip
CastXML-7f62b3ae7ba4ada760b1f519e2c70569b02b84d0.tar.gz
CastXML-7f62b3ae7ba4ada760b1f519e2c70569b02b84d0.tar.bz2
test: Show failure when implicit member needs bad template instantiation
When a function template (or member of a class template) is instantiated by an implicit class member definition, Clang delays the instantiation for later handling by clang::Sema::PerformPendingInstantiations during clang::Sema::ActOnEndOfTranslationUnit. If the instantiation causes errors they are not suppressed because our clang::Sema::SFINAETrap has gone out of scope. Even if we could keep a clang::Sema::SFINAETrap in scope, the clang::Sema::InstantiatingTemplate::Initialize method sets sema.InNonInstantiationSFINAEContext to false and adds an entry to sema.ActiveTemplateInstantiations. This prevents the clang::Sema::EmitCurrentDiagnostic call to isSFINAEContext from returning a valid SFINAE context, so errors are still not suppressed. Add a test case demonstrating this known failure, and mark it as "broken". This will require changes to Clang to fix.
Diffstat (limited to 'test/CMakeLists.txt')
-rw-r--r--test/CMakeLists.txt1
1 files changed, 1 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index f386e41..11110ee 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -163,5 +163,6 @@ castxml_test_gccxml_c(Typedef-called-class)
castxml_test_gccxml_c(invalid)
+castxml_test_gccxml_broken(Class-implicit-member-bad-base)
castxml_test_gccxml_broken(Class-template-constructor-template)
castxml_test_gccxml_broken(ReferenceType-to-Class-template)