diff options
Diffstat (limited to 'test/SemaCXX')
-rw-r--r-- | test/SemaCXX/default-constructor-initializers.cpp | 56 | ||||
-rw-r--r-- | test/SemaCXX/using-directive.cpp | 2 |
2 files changed, 57 insertions, 1 deletions
diff --git a/test/SemaCXX/default-constructor-initializers.cpp b/test/SemaCXX/default-constructor-initializers.cpp new file mode 100644 index 000000000000..c5250f8912cc --- /dev/null +++ b/test/SemaCXX/default-constructor-initializers.cpp @@ -0,0 +1,56 @@ +// RUN: clang-cc -fsyntax-only -verify %s + +struct X1 { // has no implicit default constructor + X1(int); +}; + +struct X2 : X1 { // expected-note {{'struct X2' declared here}} \ + // expected-note {{'struct X2' declared here}} + X2(int); +}; + +struct X3 : public X2 { +}; +X3 x3; // expected-error {{cannot define the default constructor for 'struct X3', because member 'struct X2' does not have any implicit default constructor}} + + +struct X4 { + X2 x2; + X2 & rx2; // expected-note {{declared at}} +}; + +X4 x4; // expected-error {{cannot define the default constructor for 'struct X4', because base class 'struct X2' does not have any implicit default constructor}} \ + // expected-error {{cannot define the implicit default constructor for 'struct X4', because reference member rx2 cannot be default-initialized}} + + +struct Y1 { // has no implicit default constructor + Y1(int); +}; + +struct Y2 : Y1 { + Y2(int); + Y2(); +}; + +struct Y3 : public Y2 { +}; +Y3 y3; + +struct Y4 { + Y2 y2; +}; + +Y4 y4; + +// More tests + + +struct Z1 { + int& z; // expected-note {{declared at}} + const int c1; // expected-note {{declared at}} + volatile int v1; +}; + +Z1 z1; // expected-error {{cannot define the implicit default constructor for 'struct Z1', because reference member z cannot be default-initialized}} \ + // expected-error {{cannot define the implicit default constructor for 'struct Z1', because const member c1 cannot be default-initialized}} + diff --git a/test/SemaCXX/using-directive.cpp b/test/SemaCXX/using-directive.cpp index 924cf077b63f..78ad04293bf4 100644 --- a/test/SemaCXX/using-directive.cpp +++ b/test/SemaCXX/using-directive.cpp @@ -64,7 +64,7 @@ struct K2 k2; // expected-error{{reference to 'K2' is ambiguous}} \ class X { // expected-note{{candidate found by name lookup is 'X'}} // FIXME: produce a suitable error message for this - using namespace A; // expected-error{{expected member name or}} + using namespace A; // expected-error{{not allowed}} }; namespace N { |