summaryrefslogtreecommitdiff
path: root/test/SemaCXX/copy-constructor-error.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaCXX/copy-constructor-error.cpp')
-rw-r--r--test/SemaCXX/copy-constructor-error.cpp40
1 files changed, 37 insertions, 3 deletions
diff --git a/test/SemaCXX/copy-constructor-error.cpp b/test/SemaCXX/copy-constructor-error.cpp
index 64a7d58e19ef..6ffed9bf222a 100644
--- a/test/SemaCXX/copy-constructor-error.cpp
+++ b/test/SemaCXX/copy-constructor-error.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fsyntax-only -verify %s
struct S {
S (S); // expected-error {{copy constructor must pass its first argument by reference}}
@@ -10,16 +10,50 @@ void g() {
S a( f() );
}
+class foo {
+ foo(foo&, int); // expected-note {{previous}}
+ foo(int); // expected-note {{previous}}
+ foo(const foo&); // expected-note {{previous}}
+};
+
+foo::foo(foo&, int = 0) { } // expected-error {{makes this constructor a copy constructor}}
+foo::foo(int = 0) { } // expected-error {{makes this constructor a default constructor}}
+foo::foo(const foo& = 0) { } //expected-error {{makes this constructor a default constructor}}
+
namespace PR6064 {
struct A {
A() { }
- inline A(A&, int); // expected-note {{was not a special member function}}
+ inline A(A&, int); // expected-note {{previous}}
};
- A::A(A&, int = 0) { } // expected-warning {{makes this constructor a copy constructor}}
+ A::A(A&, int = 0) { } // expected-error {{makes this constructor a copy constructor}}
void f() {
A const a;
A b(a);
}
}
+
+namespace PR10618 {
+ struct A {
+ A(int, int, int); // expected-note {{previous}}
+ };
+ A::A(int a = 0, // expected-error {{makes this constructor a default constructor}}
+ int b = 0,
+ int c = 0) {}
+
+ struct B {
+ B(int);
+ B(const B&, int); // expected-note {{previous}}
+ };
+ B::B(const B& = B(0), // expected-error {{makes this constructor a default constructor}}
+ int = 0) {
+ }
+
+ struct C {
+ C(const C&, int); // expected-note {{previous}}
+ };
+ C::C(const C&,
+ int = 0) { // expected-error {{makes this constructor a copy constructor}}
+ }
+}