Teach the ARC compiler to not require __bridge casts when
passing/receiving CF objects at +0 to/from Objective-C methods
or audited C functions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142219 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaCXX/addr-of-overloaded-function.cpp b/test/SemaCXX/addr-of-overloaded-function.cpp
index a36fd58..c3360cc 100644
--- a/test/SemaCXX/addr-of-overloaded-function.cpp
+++ b/test/SemaCXX/addr-of-overloaded-function.cpp
@@ -57,8 +57,7 @@
struct C {
C &getC() {
- // FIXME: this error message is terrible
- return makeAC; // expected-error{{cannot bind to a value of unrelated type}}
+ return makeAC; // expected-error{{reference to non-static member function must be called}}
}
C &makeAC();
diff --git a/test/SemaCXX/member-pointer.cpp b/test/SemaCXX/member-pointer.cpp
index cf64810..4e8b4a8 100644
--- a/test/SemaCXX/member-pointer.cpp
+++ b/test/SemaCXX/member-pointer.cpp
@@ -278,7 +278,7 @@
typedef R T::*F;
F f_;
template<class U> int & call(U u)
- { return u->*f_; } // expected-error{{non-const lvalue reference to type 'int' cannot bind to a temporary of type '<bound member function type>'}}
+ { return u->*f_; } // expected-error{{reference to non-static member function must be called; did you mean to call it with no arguments?}} expected-error {{non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'}}
template<class U> int operator()(U u)
{ call(u); } // expected-note{{in instantiation of}}
diff --git a/test/SemaCXX/overloaded-name.cpp b/test/SemaCXX/overloaded-name.cpp
index a5ec51c..6da0354 100644
--- a/test/SemaCXX/overloaded-name.cpp
+++ b/test/SemaCXX/overloaded-name.cpp
@@ -21,11 +21,10 @@
public:
const char* text(void);
void g(void) {
- // FIXME: why 2x?
f(text());
- f(text); // expected-error 2{{reference to non-static member function must be called; did you mean to call it with no arguments?}}
+ f(text); // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}}
f(text());
- f(text); // expected-error 2{{reference to non-static member function must be called; did you mean to call it with no arguments?}}
+ f(text); // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}}
}
};
}
diff --git a/test/SemaCXX/overloaded-operator.cpp b/test/SemaCXX/overloaded-operator.cpp
index 1e4a3b7..d9b75f7 100644
--- a/test/SemaCXX/overloaded-operator.cpp
+++ b/test/SemaCXX/overloaded-operator.cpp
@@ -392,7 +392,7 @@
};
struct Y {
- Y &operator<<(int); // expected-note{{candidate function not viable: no known conversion from '<bound member function type>' to 'int'}}
+ Y &operator<<(int);
};
void f(X x, Y y) {
diff --git a/test/SemaCXX/unknown-anytype.cpp b/test/SemaCXX/unknown-anytype.cpp
index ba52122..a07ec83 100644
--- a/test/SemaCXX/unknown-anytype.cpp
+++ b/test/SemaCXX/unknown-anytype.cpp
@@ -14,9 +14,9 @@
// making sure that these locations check for placeholder types
// properly.
- int x = foo; // expected-error {{cannot initialize}}
+ int x = foo; // expected-error {{'foo' has unknown type}}
int y = 0 + foo; // expected-error {{'foo' has unknown type}}
- return foo; // expected-error {{cannot initialize}}
+ return foo; // expected-error {{'foo' has unknown type}}
}
}