diff options
Diffstat (limited to 'clang/test/SemaObjC/sizeof-interface.m')
-rw-r--r-- | clang/test/SemaObjC/sizeof-interface.m | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/sizeof-interface.m b/clang/test/SemaObjC/sizeof-interface.m new file mode 100644 index 00000000000..775f5d7f568 --- /dev/null +++ b/clang/test/SemaObjC/sizeof-interface.m @@ -0,0 +1,35 @@ +// RUN: clang-cc -triple x86_64-apple-darwin9 -fsyntax-only %t + +@class I0; +// FIXME: Reject sizeof on incomplete interface; this breaks the test! +//int g0 = sizeof(I0); // exxpected-error{{invalid application of 'sizeof' to an incomplete type ...}} + +@interface I0 { + char x[4]; +} + +@property int p0; +@end + +// size == 4 +int g1[ sizeof(I0) == 4 ? 1 : -1]; + +@implementation I0 +@synthesize p0 = _p0; +@end + +// size == 4 (we do not include extended properties in the +// sizeof). +int g2[ sizeof(I0) == 4 ? 1 : -1]; + +@interface I1 +@property int p0; +@end + +@implementation I1 +@synthesize p0 = _p0; +@end + +// FIXME: This is currently broken due to the way the record layout we +// create is tied to whether we have seen synthesized properties. Ugh. +// int g3[ sizeof(I1) == 0 ? 1 : -1]; |