mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 11:35:51 -04:00

The Objective-C common-type computation had a few problems that required a significant rework, including: - Quadradic behavior when finding the common base type; now it's linear. - Keeping around type arguments when computing the common type between a specialized and an unspecialized type - Introducing redundant protocol qualifiers. Part of rdar://problem/6294649. Also fixes rdar://problem/19572837 by addressing a longstanding bug in ASTContext::CollectInheritedProtocols(). llvm-svn: 241544
58 lines
938 B
Objective-C
58 lines
938 B
Objective-C
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
// expected-no-diagnostics
|
|
|
|
// rdar://9296866
|
|
@interface NSResponder
|
|
@end
|
|
|
|
|
|
@interface NSView : NSResponder
|
|
@end
|
|
|
|
@interface WebView : NSView
|
|
@end
|
|
|
|
@protocol WebDocumentView
|
|
@end
|
|
|
|
@implementation NSView
|
|
|
|
- (void) FUNC : (id)s {
|
|
WebView *m_webView;
|
|
NSView <WebDocumentView> *documentView;
|
|
NSView *coordinateView = s ? documentView : m_webView;
|
|
}
|
|
@end
|
|
|
|
// rdar://problem/19572837
|
|
@protocol NSObject
|
|
@end
|
|
|
|
__attribute__((objc_root_class))
|
|
@interface NSObject <NSObject>
|
|
@end
|
|
|
|
@protocol Goable <NSObject>
|
|
- (void)go;
|
|
@end
|
|
|
|
@protocol Drivable <Goable>
|
|
- (void)drive;
|
|
@end
|
|
|
|
@interface Car : NSObject
|
|
- (NSObject <Goable> *)bestGoable:(NSObject <Goable> *)drivable;
|
|
@end
|
|
|
|
@interface Car(Category) <Drivable>
|
|
@end
|
|
|
|
@interface Truck : Car
|
|
@end
|
|
|
|
@implementation Truck
|
|
- (NSObject <Goable> *)bestGoable:(NSObject <Goable> *)drivable value:(int)value{
|
|
return value > 0 ? self : drivable;
|
|
}
|
|
@end
|