diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-08-12 18:17:53 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-08-12 18:17:53 +0000 |
commit | 887cd6a8eb41bdc522f8a546a0e118eca9ae85b1 (patch) | |
tree | 1aee6f0fc938c925632afcf255ac831684ae98b5 | |
parent | 54be785be77bc19ad48f6ab3682932f62e80abb6 (diff) | |
download | bcm5719-llvm-887cd6a8eb41bdc522f8a546a0e118eca9ae85b1.tar.gz bcm5719-llvm-887cd6a8eb41bdc522f8a546a0e118eca9ae85b1.zip |
error on property of objc interface type instead of crashing
llvm-svn: 78826
-rw-r--r-- | clang/lib/Sema/SemaDeclObjC.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaObjC/invalid-objc-decls-1.m | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 18536afcf7a..75ac33673ca 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -1940,6 +1940,8 @@ Sema::DeclPtrTy Sema::ActOnProperty(Scope *S, SourceLocation AtLoc, Diag(AtLoc, diag::warn_implements_nscopying) << FD.D.getIdentifier(); } + if (T->isObjCInterfaceType()) + Diag(FD.D.getIdentifierLoc(), diag::err_statically_allocated_object); DeclContext *DC = dyn_cast<DeclContext>(ClassDecl); assert(DC && "ClassDecl is not a DeclContext"); diff --git a/clang/test/SemaObjC/invalid-objc-decls-1.m b/clang/test/SemaObjC/invalid-objc-decls-1.m index e3a94f62d5a..4a3732eff18 100644 --- a/clang/test/SemaObjC/invalid-objc-decls-1.m +++ b/clang/test/SemaObjC/invalid-objc-decls-1.m @@ -32,3 +32,11 @@ Super foo( // expected-error{{interface interface type 'Super' cannot be returne Super p1; // expected-error{{interface type cannot be statically allocated}} return p1; } + +@interface NSMutableSet @end + +@interface DVTDummyAnnotationProvider + @property(readonly) NSMutableSet annotations; // expected-error{{interface type cannot be statically allocated}} + +@end + |