objc: fixes a bug where struct used inside an

objc class was not being exported to parent decl
context resulting in bogus mismatch warning later on.
// rdar://10655530

llvm-svn: 148320
This commit is contained in:
Fariborz Jahanian 2012-01-17 18:52:07 +00:00
parent da6e05476d
commit 9d7cf2baaf
2 changed files with 22 additions and 1 deletions

View File

@ -7872,7 +7872,8 @@ Decl *Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK,
// Find the context where we'll be declaring the tag.
// FIXME: We would like to maintain the current DeclContext as the
// lexical context,
while (SearchDC->isRecord() || SearchDC->isTransparentContext())
while (SearchDC->isRecord() || SearchDC->isTransparentContext() ||
SearchDC->isObjCContainer())
SearchDC = SearchDC->getParent();
// Find the scope where we'll be declaring the tag.

View File

@ -41,3 +41,23 @@ typedef struct {
@property (readwrite) NSString *foo; // expected-error {{type of property 'NSString *' in continuation class does not match property type in primary class}}
@property (readwrite, strong) NSRect bar; // expected-error {{type of property 'NSRect' in continuation class does not match property type in primary class}}
@end
// rdar://10655530
struct S;
struct S1;
@interface STAdKitContext
@property (nonatomic, readonly, assign) struct evhttp_request *httpRequest;
@property (nonatomic, readonly, assign) struct S *httpRequest2;
@property (nonatomic, readonly, assign) struct S1 *httpRequest3;
@property (nonatomic, readonly, assign) struct S2 *httpRequest4;
@end
struct evhttp_request;
struct S1;
@interface STAdKitContext()
@property (nonatomic, readwrite, assign) struct evhttp_request *httpRequest;
@property (nonatomic, readwrite, assign) struct S *httpRequest2;
@property (nonatomic, readwrite, assign) struct S1 *httpRequest3;
@property (nonatomic, readwrite, assign) struct S2 *httpRequest4;
@end