#include #include @interface A : NSObject { int x; char y; } @property int x; @property char y; @end @implementation A -(int) x { return x + 2; } -(void) setX: (int) arg { x = arg * 3 + 1; } @synthesize y; @end int main() { A *a = [[A alloc] init]; int res = (a.x += 1); printf("res: %d\n", res); // This is a case where clang diverges from gcc in Objective-C code // generation. Clang correctly truncates the value in the this assignment to // char, and extends, which is consistent with C semantics. res = (a.y = 0xFFFF); printf("res: %d\n", res); return 0; }