Objective-C. Fixes an obscuer crash caused by multiple inclusion of
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 27 May 2014 18:26:09 +0000 (18:26 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 27 May 2014 18:26:09 +0000 (18:26 +0000)
same framework after complaining about duplicate class definition.
// rdar://17024681

llvm-svn: 209672

clang/lib/Sema/SemaObjCProperty.cpp
clang/test/SemaObjC/arc-invalid.m

index 23fa024..bc98299 100644 (file)
@@ -1907,6 +1907,9 @@ void Sema::ProcessPropertyDecl(ObjCPropertyDecl *property,
 
   ObjCMethodDecl *GetterMethod, *SetterMethod;
 
+  if (CD->isInvalidDecl())
+    return;
+
   GetterMethod = CD->getInstanceMethod(property->getGetterName());
   SetterMethod = CD->getInstanceMethod(property->getSetterName());
   DiagnosePropertyAccessorMismatch(property, GetterMethod,
index c736ed4..07b6480 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fblocks -verify %s
+// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fblocks -Wno-objc-root-class -verify %s
 
 // rdar://problem/10982793
 // [p foo] in ARC creates a cleanup.
@@ -16,3 +16,29 @@ void test1(void) {
   __autoreleasing id p; // expected-note {{'p' declared here}}
   takeBlock(^{ (void) p; }); // expected-error {{cannot capture __autoreleasing variable in a block}}
 }
+
+// rdar://17024681
+@class WebFrame;
+@interface WebView  // expected-note {{previous definition is here}}
+- (WebFrame *)mainFrame;
+@end
+
+@interface WebView  // expected-error {{duplicate interface definition for class 'WebView'}}
+@property (nonatomic, readonly, strong) WebFrame *mainFrame;
+@end
+
+@interface UIWebDocumentView
+- (WebView *)webView;
+@end
+
+@interface UIWebBrowserView : UIWebDocumentView
+@end
+
+@interface StoreBanner @end
+
+@implementation StoreBanner
++ (void)readMetaTagContentForUIWebBrowserView:(UIWebBrowserView *)browserView
+{
+  [[browserView webView] mainFrame];
+}
+@end