diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CXX/drs/dr0xx.cpp | 5 | ||||
-rw-r--r-- | clang/test/CXX/except/except.spec/p5-pointers.cpp | 12 | ||||
-rw-r--r-- | clang/test/SemaCXX/ambig-user-defined-conversions.cpp | 5 | ||||
-rw-r--r-- | clang/test/SemaCXX/derived-to-base-ambig.cpp | 4 |
4 files changed, 15 insertions, 11 deletions
diff --git a/clang/test/CXX/drs/dr0xx.cpp b/clang/test/CXX/drs/dr0xx.cpp index 69cb776c330..d598cfa33bd 100644 --- a/clang/test/CXX/drs/dr0xx.cpp +++ b/clang/test/CXX/drs/dr0xx.cpp @@ -286,10 +286,9 @@ namespace dr25 { // dr25: yes void (A::*i2)() throw () = 0; void (A::*j)() throw (int, char) = &A::f; void x() { - // FIXME: Don't produce the second error here. - g2 = f; // expected-error {{is not superset}} expected-error {{incompatible}} + g2 = f; // expected-error {{is not superset}} h = f; - i2 = &A::f; // expected-error {{is not superset}} expected-error {{incompatible}} + i2 = &A::f; // expected-error {{is not superset}} j = &A::f; } } diff --git a/clang/test/CXX/except/except.spec/p5-pointers.cpp b/clang/test/CXX/except/except.spec/p5-pointers.cpp index fe4a264587f..dedc5bd376f 100644 --- a/clang/test/CXX/except/except.spec/p5-pointers.cpp +++ b/clang/test/CXX/except/except.spec/p5-pointers.cpp @@ -41,25 +41,25 @@ void fnptrs() { // Assignment and initialization of function pointers. void (*t1)() throw() = &s1; // valid - t1 = &s2; // expected-error {{not superset}} expected-error {{incompatible type}} - t1 = &s3; // expected-error {{not superset}} expected-error {{incompatible type}} + t1 = &s2; // expected-error {{not superset}} + t1 = &s3; // expected-error {{not superset}} void (&t2)() throw() = s2; // expected-error {{not superset}} void (*t3)() throw(int) = &s2; // valid void (*t4)() throw(A) = &s1; // valid t4 = &s3; // valid t4 = &s4; // valid - t4 = &s5; // expected-error {{not superset}} expected-error {{incompatible type}} + t4 = &s5; // expected-error {{not superset}} void (*t5)() = &s1; // valid t5 = &s2; // valid t5 = &s6; // valid t5 = &s7; // valid - t1 = t3; // expected-error {{not superset}} expected-error {{incompatible type}} + t1 = t3; // expected-error {{not superset}} t3 = t1; // valid void (*t6)() throw(B1); - t6 = t4; // expected-error {{not superset}} expected-error {{incompatible type}} + t6 = t4; // expected-error {{not superset}} t4 = t6; // valid t5 = t1; // valid - t1 = t5; // expected-error {{not superset}} expected-error {{incompatible type}} + t1 = t5; // expected-error {{not superset}} // return types and arguments must match exactly, no inheritance allowed void (*(*t7)())() throw(B1) = &s8; // valid diff --git a/clang/test/SemaCXX/ambig-user-defined-conversions.cpp b/clang/test/SemaCXX/ambig-user-defined-conversions.cpp index 1a3c102f034..276c1b07b5d 100644 --- a/clang/test/SemaCXX/ambig-user-defined-conversions.cpp +++ b/clang/test/SemaCXX/ambig-user-defined-conversions.cpp @@ -65,3 +65,8 @@ namespace rdar8876150 { bool f(D d) { return !d; } // expected-error{{ambiguous conversion from derived class 'rdar8876150::D' to base class 'rdar8876150::A':}} } + +namespace assignment { + struct A { operator short(); operator bool(); }; // expected-note 2{{candidate}} + void f(int n, A a) { n = a; } // expected-error{{ambiguous}} +} diff --git a/clang/test/SemaCXX/derived-to-base-ambig.cpp b/clang/test/SemaCXX/derived-to-base-ambig.cpp index 93bd3619ccd..5d1d56b7661 100644 --- a/clang/test/SemaCXX/derived-to-base-ambig.cpp +++ b/clang/test/SemaCXX/derived-to-base-ambig.cpp @@ -6,7 +6,7 @@ class D : public B, public C { }; void f(D* d) { A* a; - a = d; // expected-error{{ambiguous conversion from derived class 'D' to base class 'A':}} expected-error{{assigning to 'A *' from incompatible type 'D *'}} + a = d; // expected-error{{ambiguous conversion from derived class 'D' to base class 'A':}} } class Object2 { }; @@ -20,7 +20,7 @@ class F2 : public E2, public A2 { }; // expected-warning{{direct base 'A2' is in void g(E2* e2, F2* f2) { Object2* o2; o2 = e2; - o2 = f2; // expected-error{{ambiguous conversion from derived class 'F2' to base class 'Object2':}} expected-error{{assigning to 'Object2 *' from incompatible type 'F2 *'}} + o2 = f2; // expected-error{{ambiguous conversion from derived class 'F2' to base class 'Object2':}} } // Test that ambiguous/inaccessibility checking does not trigger too |