From ebc790d4d80bd6aeed7a29b510071416b6509b74 Mon Sep 17 00:00:00 2001 From: Steve Naroff Date: Tue, 7 Apr 2009 15:07:57 +0000 Subject: Tweak Sema::ActOnInstanceMessage() to look for a class method when dealing with qualified id's. This change is motivated by our desire to not support the "Class" idiom. Note that the change makes perfect sense (since all ObjC classes are also id/instances). This allow us to document a simple migration path...change "Class " to "id ". This effects: - TASK: File source change radars for "qualified Class" errors - Protocol qualified Class is unsupported llvm-svn: 68517 --- .../protocol-qualified-class-unsupported.m | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 clang/test/SemaObjC/protocol-qualified-class-unsupported.m (limited to 'clang/test/SemaObjC/protocol-qualified-class-unsupported.m') diff --git a/clang/test/SemaObjC/protocol-qualified-class-unsupported.m b/clang/test/SemaObjC/protocol-qualified-class-unsupported.m new file mode 100644 index 00000000000..ad1ed5dc941 --- /dev/null +++ b/clang/test/SemaObjC/protocol-qualified-class-unsupported.m @@ -0,0 +1,40 @@ +// RUN: clang-cc -fsyntax-only -verify %s + +#include + +typedef struct objc_class *Class; +typedef struct objc_object { + Class isa; +} *id; +id objc_getClass(const char *s); + +@interface Object ++ self; +@end + +@protocol Func ++ (void) class_func0; +- (void) instance_func0; +@end + +@interface Derived: Object +@end + +@interface Derived2: Object +@end + +static void doSomething(Class unsupportedObjectType) { // expected-error {{protocol qualified 'Class' is unsupported}} + [unsupportedObjectType class_func0]; +} + +static void doSomethingElse(id pleaseConvertToThisType) { + [pleaseConvertToThisType class_func0]; +} + +int main(int argv, char *argc[]) { + doSomething([Derived self]); + doSomething([Derived2 self]); + doSomethingElse([Derived self]); + doSomethingElse([Derived2 self]); +} + -- cgit v1.2.1