diff --git a/Test/objc_msgSend.m b/Test/objc_msgSend.m index 7d37d23..ff179cd 100644 --- a/Test/objc_msgSend.m +++ b/Test/objc_msgSend.m @@ -41,6 +41,13 @@ Class TestCls; s st = {1,2,3,4,5}; return st; } +- (s)sret +{ + assert((id)3 == self); + assert(strcmp("sret", sel_getName(_cmd)) == 0); + s st = {1,2,3,4,5}; + return st; +} + (void)printf: (const char*)str, ... { va_list ap; @@ -80,7 +87,7 @@ int main(void) assert((id)0x42 == a); a = objc_msgSend(TestCls, @selector(foo)); assert((id)0x42 == a); - objc_registerSmallObjectClass_np(objc_getClass("Test"), 1); + assert(objc_registerSmallObjectClass_np(objc_getClass("Test"), 1)); a = objc_msgSend((id)01, @selector(foo)); assert((id)0x42 == a); s ret = objc_msgSend_stret(TestCls, @selector(sret)); @@ -89,6 +96,16 @@ int main(void) assert(ret.c == 3); assert(ret.d == 4); assert(ret.e == 5); + if (sizeof(id) == 8) + { + assert(objc_registerSmallObjectClass_np(objc_getClass("Test"), 3)); + ret = objc_msgSend_stret((id)3, @selector(sret)); + assert(ret.a == 1); + assert(ret.b == 2); + assert(ret.c == 3); + assert(ret.d == 4); + assert(ret.e == 5); + } Fake *f = nil; assert(0 == [f izero]); assert(0 == [f dzero]);