llvm-project/clang/test/SemaObjC/bad-receiver-1.m
John McCall 80c93a0793 Perform the receiver-expression transformations regardless of
whether we already have a method.  Fixes a bug where we were
failing to properly contextually convert a message receiver
during template instantiation.

As a side-effect, we now actually perform correct method lookup
after adjusting a message-send to integral or non-ObjC pointer
types (legal outside of ARC).

rdar://13305374

llvm-svn: 176339
2013-03-01 09:20:14 +00:00

21 lines
497 B
Objective-C

// RUN: %clang_cc1 -fsyntax-only -verify %s
@interface I
- (id) retain;
@end
int objc_lookUpClass(const char*);
void __raiseExc1() {
[objc_lookUpClass("NSString") retain]; // expected-warning {{receiver type 'int' is not 'id'}}
}
typedef const struct __CFString * CFStringRef;
void func() {
CFStringRef obj;
[obj self]; // expected-warning {{receiver type 'CFStringRef' (aka 'const struct __CFString *') is not 'id'}} \\
expected-warning {{method '-self' not found}}
}