diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-02-16 19:28:15 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-02-16 19:28:15 +0000 |
commit | 71ad477ab3b8baa60cf7cc882b1ad924db9f37e6 (patch) | |
tree | 21be8589dc252d63566a5d85a3ee37025276454a /clang/test/SemaTemplate/explicit-specialization-member.cpp | |
parent | 10e3022b10d2a9ce18f91ccd9727221af9cd6d3c (diff) | |
download | bcm5719-llvm-71ad477ab3b8baa60cf7cc882b1ad924db9f37e6.tar.gz bcm5719-llvm-71ad477ab3b8baa60cf7cc882b1ad924db9f37e6.zip |
Do not try to instantiate invalid declarations. It's a recipe for
disaster. Fixes PR6161.
llvm-svn: 96371
Diffstat (limited to 'clang/test/SemaTemplate/explicit-specialization-member.cpp')
-rw-r--r-- | clang/test/SemaTemplate/explicit-specialization-member.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/explicit-specialization-member.cpp b/clang/test/SemaTemplate/explicit-specialization-member.cpp index 06dd382fc7a..417cdc1f198 100644 --- a/clang/test/SemaTemplate/explicit-specialization-member.cpp +++ b/clang/test/SemaTemplate/explicit-specialization-member.cpp @@ -9,3 +9,15 @@ struct X0 { template<> void X0<char>::f0(char); template<> void X0<char>::f1(type); + +namespace PR6161 { + template<typename _CharT> + class numpunct : public locale::facet // expected-error{{use of undeclared identifier 'locale'}} \ + // expected-error{{expected class name}} \ + // expected-note{{attempt to specialize declaration here}} + { + static locale::id id; // expected-error{{use of undeclared identifier}} + }; + numpunct<char>::~numpunct(); // expected-error{{template specialization requires 'template<>'}} \ + // expected-error{{specialization of member 'PR6161::numpunct<char>::~numpunct' does not specialize an instantiated member}} +} |