1/* Test whether casting 'id' to a specific class removes method lookup 2 ambiguity. */ 3/* Author: Ziemowit Laski <zlaski@apple.com>. */ 4 5/* { dg-do compile } */ 6 7#include <objc/objc.h> 8 9@class Int1, Int2; 10 11@interface Int1 12+ (Int1 *)classMethod1; 13+ (id)classMethod2; 14- (Int1 *)instanceMethod:(Int2 *)arg; /* { dg-bogus "using" } */ 15@end 16 17@interface Int2: Int1 18+ (Int1 *)classMethod1; 19+ (id)classMethod2; 20- (id)int2Method; 21- (int)instanceMethod:(int)arg; /* { dg-bogus "also found" } */ 22@end 23 24int main(void) { 25 id i = [(Int2 *)[Int1 classMethod1] int2Method]; /* { dg-line i_def } */ 26 /* { dg-bogus "may not respond to" "" { target *-*-* } i_def } */ 27 int j = [(Int2 *)[Int2 classMethod2] instanceMethod: 45]; /* { dg-bogus "multiple methods" } */ 28 /* { dg-bogus "invalid conversion" "" { target *-*-* } i_def } */ 29 /* { dg-bogus "invalid conversion" "" { target *-*-* } i_def } */ 30 return j; 31} 32