diff options
Diffstat (limited to 'clang/test/SemaCXX')
-rw-r--r-- | clang/test/SemaCXX/constant-expression-cxx11.cpp | 9 | ||||
-rw-r--r-- | clang/test/SemaCXX/constexpr-default-arg.cpp | 4 | ||||
-rw-r--r-- | clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp | 9 | ||||
-rw-r--r-- | clang/test/SemaCXX/eval-crashes.cpp | 6 | ||||
-rw-r--r-- | clang/test/SemaCXX/member-init.cpp | 3 | ||||
-rw-r--r-- | clang/test/SemaCXX/warn-dangling-field.cpp | 6 |
6 files changed, 19 insertions, 18 deletions
diff --git a/clang/test/SemaCXX/constant-expression-cxx11.cpp b/clang/test/SemaCXX/constant-expression-cxx11.cpp index 4b4bd436349..e921634b1bf 100644 --- a/clang/test/SemaCXX/constant-expression-cxx11.cpp +++ b/clang/test/SemaCXX/constant-expression-cxx11.cpp @@ -1892,14 +1892,15 @@ namespace Lifetime { } constexpr int &get(int &&n) { return n; } + constexpr int &&get_rv(int &&n) { return static_cast<int&&>(n); } struct S { - int &&r; // expected-note 2{{declared here}} + int &&r; int &s; int t; - constexpr S() : r(0), s(get(0)), t(r) {} // expected-warning {{temporary}} - constexpr S(int) : r(0), s(get(0)), t(s) {} // expected-warning {{temporary}} expected-note {{read of object outside its lifetime}} + constexpr S() : r(get_rv(0)), s(get(0)), t(r) {} // expected-note {{read of object outside its lifetime}} + constexpr S(int) : r(get_rv(0)), s(get(0)), t(s) {} // expected-note {{read of object outside its lifetime}} }; - constexpr int k1 = S().t; // ok, int is lifetime-extended to end of constructor + constexpr int k1 = S().t; // expected-error {{constant expression}} expected-note {{in call}} constexpr int k2 = S(0).t; // expected-error {{constant expression}} expected-note {{in call}} } diff --git a/clang/test/SemaCXX/constexpr-default-arg.cpp b/clang/test/SemaCXX/constexpr-default-arg.cpp index 2fc873c3e5b..165c31aab63 100644 --- a/clang/test/SemaCXX/constexpr-default-arg.cpp +++ b/clang/test/SemaCXX/constexpr-default-arg.cpp @@ -31,8 +31,8 @@ void test_default_arg2() { } // Check that multiple CXXDefaultInitExprs don't cause an assertion failure. -struct A { int &&r = 0; }; // expected-warning {{binding reference member}} // expected-note {{reference member declared here}} +struct A { int &&r = 0; }; // expected-warning 2{{not supported}} struct B { A x, y; }; -B b = {}; +B b = {}; // expected-note 2{{in default member initializer for field 'r' used here}} } diff --git a/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp b/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp index 860a4aa6c6f..ece014d93a5 100644 --- a/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp +++ b/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp @@ -153,13 +153,14 @@ void dangle() { } struct haslist1 { - std::initializer_list<int> il = {1, 2, 3}; // expected-warning{{at the end of the constructor}} - std::initializer_list<int> jl{1, 2, 3}; // expected-warning{{at the end of the constructor}} + std::initializer_list<int> il // expected-note {{declared here}} + = {1, 2, 3}; // ok, unused + std::initializer_list<int> jl{1, 2, 3}; // expected-error {{backing array for 'std::initializer_list' member 'jl' is a temporary object}} haslist1(); }; -haslist1::haslist1() -: il{1, 2, 3} // expected-warning{{at the end of the constructor}} +haslist1::haslist1() // expected-note {{used here}} +: il{1, 2, 3} // expected-error {{backing array for 'std::initializer_list' member 'il' is a temporary object}} {} namespace PR12119 { diff --git a/clang/test/SemaCXX/eval-crashes.cpp b/clang/test/SemaCXX/eval-crashes.cpp index 23946845d8e..33bde75de6b 100644 --- a/clang/test/SemaCXX/eval-crashes.cpp +++ b/clang/test/SemaCXX/eval-crashes.cpp @@ -26,10 +26,10 @@ namespace pr33140_0b { namespace pr33140_2 { // FIXME: The declaration of 'b' below should lifetime-extend two int - // temporaries, invalidating this warning to some extent. - struct A { int &&r = 0; }; // expected-warning {{binding reference member 'r' to a temporary}} expected-note {{here}} + // temporaries. + struct A { int &&r = 0; }; // expected-warning 2{{not supported}} struct B { A x, y; }; - B b = {}; + B b = {}; // expected-note 2{{used here}} } namespace pr33140_3 { diff --git a/clang/test/SemaCXX/member-init.cpp b/clang/test/SemaCXX/member-init.cpp index ad4a8f15b29..8a13eca2f17 100644 --- a/clang/test/SemaCXX/member-init.cpp +++ b/clang/test/SemaCXX/member-init.cpp @@ -86,9 +86,8 @@ namespace PR14838 { }; struct thing {}; struct another { - another() : r(thing()) {} + another() : r(thing()) {} // expected-error {{binds to a temporary object}} // expected-error@-1 {{temporary of type 'PR14838::function' has private destructor}} - // expected-warning@-2 {{binding reference member 'r' to a temporary value}} const function &r; // expected-note {{reference member declared here}} } af; } diff --git a/clang/test/SemaCXX/warn-dangling-field.cpp b/clang/test/SemaCXX/warn-dangling-field.cpp index eb65bd06692..97d4331c1f7 100644 --- a/clang/test/SemaCXX/warn-dangling-field.cpp +++ b/clang/test/SemaCXX/warn-dangling-field.cpp @@ -20,7 +20,7 @@ struct S { struct S2 { const X &x; // expected-note {{reference member declared here}} - S2(int i) : x(i) {} // expected-warning {{binding reference member 'x' to a temporary}} + S2(int i) : x(i) {} // expected-error {{member 'x' binds to a temporary}} }; struct S3 { @@ -43,9 +43,9 @@ S5 s5 = { 0 }; // ok, lifetime-extended struct S6 { S5 s5; // expected-note {{here}} - S6() : s5 { 0 } {} // expected-warning {{binding reference subobject of member 's5' to a temporary}} + S6() : s5 { 0 } {} // expected-error {{reference subobject of member 's5' binds to a temporary}} }; struct S7 : S5 { - S7() : S5 { 0 } {} // expected-warning {{binding reference member 'x' to a temporary}} + S7() : S5 { 0 } {} // expected-error {{reference member 'x' binds to a temporary}} }; |