/* Ensure that overload resolution does not produce warnings as side-effects. */ /* { dg-do run } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include "../objc-obj-c++-shared/TestsuiteObject.m" #include #define CHECK_IF(E) if(!(E)) abort () @interface MyCursor: TestsuiteObject + (MyCursor *)crosshairCursor; @end @class MyImage; class A { public: A(); int foo(MyImage *); int foo(MyCursor *); }; A::A() {} int A::foo(MyCursor * c) { return 17; } int A::foo(MyImage * i) { return 29; } @implementation MyCursor + (MyCursor *)crosshairCursor { return self; } @end int main(void) { A a; int r = a.foo([MyCursor crosshairCursor]); CHECK_IF (r == 17); return 0; }