/* Contributed by Nicola Pero , May 2011. */ /* { dg-do run } */ /* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ #include #include int main(int argc, void **args) { #ifdef __GNU_LIBOBJC__ /* This special test tests that, if you have a selector already registered in the runtime with full type information, you can use sel_registerTypedName() to get it even if you specify the type with incorrect argframe information. This is helpful as selectors generated by the compiler (which have correct argframe information) are usually registered before hand-written ones (which often have incorrect argframe information, but need the correct one). Note that in this hand-written test, even the type information of the first selector may be wrong (on this machine); but that's OK as we'll never actually use the selectors. */ SEL selector1 = sel_registerTypedName ("testMethod", "i8@0:4"); SEL selector2 = sel_registerTypedName ("testMethod", "i8@8:8"); /* We compare the selectors using ==, not using sel_isEqual(). This is because we are testing internals of the runtime and we know that in the current implementation they should be identical if the stuff is to work as expected. Don't do this at home. */ if (selector1 != selector2) abort (); #endif return 0; }