diff options
author | Brad King <brad.king@kitware.com> | 2014-04-08 15:12:23 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-04-09 20:43:27 (GMT) |
commit | 7f62b3ae7ba4ada760b1f519e2c70569b02b84d0 (patch) | |
tree | e000d3effe2d7356aaa26ba077ee5fa9e6d75cf2 /src | |
parent | 44a6a6db4a918490061b35bbb24316e14bd0bf6f (diff) | |
download | CastXML-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 'src')
0 files changed, 0 insertions, 0 deletions