/* Test whether casting 'id' to a specific class removes method lookup ambiguity. */ /* Author: Ziemowit Laski . */ /* { dg-do compile } */ #include @class Int1, Int2; @interface Int1 + (Int1 *)classMethod1; + (id)classMethod2; - (Int1 *)instanceMethod:(Int2 *)arg; /* { dg-bogus "using" } */ @end @interface Int2: Int1 + (Int1 *)classMethod1; + (id)classMethod2; - (id)int2Method; - (int)instanceMethod:(int)arg; /* { dg-bogus "also found" } */ @end int main(void) { id i = [(Int2 *)[Int1 classMethod1] int2Method]; /* { dg-bogus "may not respond to" } */ int j = [(Int2 *)[Int2 classMethod2] instanceMethod: 45]; /* { dg-bogus "multiple methods" } */ /* { dg-bogus "invalid conversion" "" { target *-*-* } 25 } */ /* { dg-bogus "invalid conversion" "" { target *-*-* } 25 } */ return j; }