// RUN: %clang_cc1 -fsyntax-only -verify %s // expected-no-diagnostics #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) { [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]); }