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