/* Warn about "slightly" mismatched method signatures if -Wstrict-selector-match is on. */ /* { dg-do compile } */ /* { dg-options "-Wstrict-selector-match" } */ #include @interface Base - (id) meth1: (Base *)arg1; /* { dg-message "using .\\-\\(id\\)meth1:\\(Base \\*\\)arg1." } */ - (id) window; /* { dg-message "using .\\-\\(id\\)window" } */ @end @interface Derived: Base - (id) meth1: (Derived *)arg1; /* { dg-message "also found .\\-\\(id\\)meth1:\\(Derived \\*\\)arg1." } */ - (Base *) window; /* { dg-message "also found .\\-\\(Base \\*\\)window." } */ @end void foo(void) { id r; [r meth1:r]; /* { dg-warning "multiple methods named .\\-meth1:. found" } */ [r window]; /* { dg-warning "multiple methods named .\\-window. found" } */ }