r197280 - Add a testcase and a FIXME for an accepts-invalid.
Richard Smith
richard-llvm at metafoo.co.uk
Fri Dec 13 14:28:48 PST 2013
Author: rsmith
Date: Fri Dec 13 16:28:48 2013
New Revision: 197280
URL: http://llvm.org/viewvc/llvm-project?rev=197280&view=rev
Log:
Add a testcase and a FIXME for an accepts-invalid.
Modified:
cfe/trunk/test/SemaTemplate/ms-function-specialization-class-scope.cpp
Modified: cfe/trunk/test/SemaTemplate/ms-function-specialization-class-scope.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/ms-function-specialization-class-scope.cpp?rev=197280&r1=197279&r2=197280&view=diff
==============================================================================
--- cfe/trunk/test/SemaTemplate/ms-function-specialization-class-scope.cpp (original)
+++ cfe/trunk/test/SemaTemplate/ms-function-specialization-class-scope.cpp Fri Dec 13 16:28:48 2013
@@ -51,16 +51,27 @@ void test2() {
}
namespace PR12709 {
+ template<class T> class TemplateClass {
+ void member_function() { specialized_member_template<false>(); }
-template<class T> class TemplateClass {
- void member_function() { specialized_member_template<false>(); }
+ template<bool b> void specialized_member_template() {}
- template<bool b> void specialized_member_template() {}
+ template<> void specialized_member_template<false>() {
+ // expected-warning at -1 {{explicit specialization of 'specialized_member_template' within class scope is a Microsoft extension}}
+ }
+ };
- template<> void specialized_member_template<false>() {
- // expected-warning at -1 {{explicit specialization of 'specialized_member_template' within class scope is a Microsoft extension}}
- }
-};
+ void f() { TemplateClass<int> t; }
+}
+
+namespace Duplicates {
+ template<typename T> struct A {
+ template<typename U> void f();
+ template<> void f<int>() {} // expected-warning {{Microsoft extension}}
+ template<> void f<T>() {} // expected-warning {{Microsoft extension}}
+ };
-void f() { TemplateClass<int> t; }
+ // FIXME: We should diagnose the duplicate explicit specialization definitions
+ // here.
+ template struct A<int>;
}
More information about the cfe-commits
mailing list