]> granicus.if.org Git - clang/commitdiff
This test works now; enable it.
authorJohn McCall <rjmccall@apple.com>
Tue, 12 Apr 2011 00:57:12 +0000 (00:57 +0000)
committerJohn McCall <rjmccall@apple.com>
Tue, 12 Apr 2011 00:57:12 +0000 (00:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129335 91177308-0d34-0410-b5e6-96231b3b80d8

test/CXX/class/class.union/p1.cpp

index b5dd4dfd705db296345f3fbeb33808fbfb55e0d7..011185fb49e48fea9e362a49f828e3058039d09b 100644 (file)
@@ -7,30 +7,30 @@ class Okay {
 };
 
 class Virtual {
-  virtual void foo() { abort(); } // expected-note 3 {{because type 'Virtual' has a virtual member function}}
+  virtual void foo() { abort(); } // expected-note 4 {{because type 'Virtual' has a virtual member function}}
 };
 
-class VirtualBase : virtual Okay { // expected-note 3 {{because type 'VirtualBase' has a virtual base class}}
+class VirtualBase : virtual Okay { // expected-note 4 {{because type 'VirtualBase' has a virtual base class}}
 };
 
 class Ctor {
-  Ctor() { abort(); } // expected-note 3 {{because type 'Ctor' has a user-declared constructor}}
+  Ctor() { abort(); } // expected-note 4 {{because type 'Ctor' has a user-declared constructor}}
 };
 class Ctor2 {
   Ctor2(); // expected-note 3 {{because type 'Ctor2' has a user-declared constructor}}
 };
 
 class CopyCtor {
-  CopyCtor(CopyCtor &cc) { abort(); } // expected-note 3 {{because type 'CopyCtor' has a user-declared copy constructor}}
+  CopyCtor(CopyCtor &cc) { abort(); } // expected-note 4 {{because type 'CopyCtor' has a user-declared copy constructor}}
 };
 
 // FIXME: this should eventually trigger on the operator's declaration line
-class CopyAssign { // expected-note 3 {{because type 'CopyAssign' has a user-declared copy assignment operator}}
+class CopyAssign { // expected-note 4 {{because type 'CopyAssign' has a user-declared copy assignment operator}}
   CopyAssign& operator=(CopyAssign& CA) { abort(); }
 };
 
 class Dtor {
-  ~Dtor() { abort(); } // expected-note 3 {{because type 'Dtor' has a user-declared destructor}}
+  ~Dtor() { abort(); } // expected-note 4 {{because type 'Dtor' has a user-declared destructor}}
 };
 
 union U1 {
@@ -100,23 +100,21 @@ union U5 {
 
 template <class A, class B> struct Either {
   bool tag;
-  union {
+  union { // expected-note 6 {{in instantiation of member class}}
     A a;
-    B b;
+    B b; // expected-error 6 {{non-trivial}}
   };
 
-  Either(A& a) : tag(true), a(a) {}
-  Either(B& b) : tag(false), b(b) {}
+  Either(const A& a) : tag(true), a(a) {}
+  Either(const B& b) : tag(false), b(b) {}
 };
 
-/* FIXME: this should work, but crashes in template code.
 void fred() {
-  Either<int,Virtual> virt(0);
-  Either<int,VirtualBase> vbase(0);
-  Either<int,Ctor> ctor(0);
-  Either<int,CopyCtor> copyctor(0);
-  Either<int,CopyAssign> copyassign(0);
-  Either<int,Dtor> dtor(0);
+  Either<int,Virtual> virt(0); // expected-note {{in instantiation of template}}
+  Either<int,VirtualBase> vbase(0); // expected-note {{in instantiation of template}}
+  Either<int,Ctor> ctor(0); // expected-note {{in instantiation of template}}
+  Either<int,CopyCtor> copyctor(0); // expected-note {{in instantiation of template}}
+  Either<int,CopyAssign> copyassign(0); // expected-note {{in instantiation of template}}
+  Either<int,Dtor> dtor(0); // expected-note {{in instantiation of template}}
   Either<int,Okay> okay(0);
 }
- */