summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-08-12 18:17:53 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-08-12 18:17:53 +0000
commit887cd6a8eb41bdc522f8a546a0e118eca9ae85b1 (patch)
tree1aee6f0fc938c925632afcf255ac831684ae98b5
parent54be785be77bc19ad48f6ab3682932f62e80abb6 (diff)
downloadbcm5719-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.cpp2
-rw-r--r--clang/test/SemaObjC/invalid-objc-decls-1.m8
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
+
OpenPOWER on IntegriCloud