mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
If we can't resolve a cross-reference unambiguously, we're supposed to produce an llvm::Error and let the calling code handle it. However, if we couldn't even resolve the /type/ of the cross-reference, we would just crash. Follow the supported error path in that case too -- in many cases the error can just propagate upwards to something that can handle it. rdar://problem/34821187, plus an extra test case from rdar://problem/35157494. (The latter will be fixed better later, but meanwhile let's not regress on the crashing part.)
137 lines
3.3 KiB
Objective-C
137 lines
3.3 KiB
Objective-C
@interface Object
|
|
- (nonnull instancetype)init;
|
|
@end
|
|
|
|
@interface Base : Object
|
|
#if !BAD
|
|
- (void)disappearingMethod;
|
|
- (nullable id)nullabilityChangeMethod;
|
|
- (nonnull id)typeChangeMethod;
|
|
@property (readonly) long disappearingProperty;
|
|
#else
|
|
//- (void)disappearingMethod;
|
|
- (nonnull id)nullabilityChangeMethod;
|
|
- (nonnull Base *)typeChangeMethod;
|
|
// @property (readonly) long disappearingProperty;
|
|
#endif
|
|
@end
|
|
|
|
@interface Base (ExtraMethodsToTriggerCircularReferences)
|
|
#if !BAD
|
|
- (void)disappearingMethodWithOverload;
|
|
#else
|
|
//- (void)disappearingMethodWithOverload;
|
|
#endif
|
|
@end
|
|
|
|
@interface GenericBase<Element>: Object
|
|
#if !BAD
|
|
- (void)disappearingMethod;
|
|
- (nullable Element)nullabilityChangeMethod;
|
|
- (nonnull id)typeChangeMethod;
|
|
#else
|
|
//- (void)disappearingMethod;
|
|
- (nonnull Element)nullabilityChangeMethod;
|
|
- (nonnull Element)typeChangeMethod;
|
|
#endif
|
|
@end
|
|
|
|
|
|
@interface IndexedSubscriptDisappearsBase : Object
|
|
#if !BAD
|
|
- (nonnull id)objectAtIndexedSubscript:(long)index;
|
|
#else
|
|
//- (nonnull id)objectAtIndexedSubscript:(long)index;
|
|
#endif
|
|
@end
|
|
|
|
@interface KeyedSubscriptDisappearsBase : Object
|
|
#if !BAD
|
|
- (nonnull id)objectForKeyedSubscript:(nonnull id)key;
|
|
#else
|
|
// - (nonnull id)objectForKeyedSubscript:(nonnull id)key;
|
|
#endif
|
|
@end
|
|
|
|
@interface GenericIndexedSubscriptDisappearsBase<Element> : Object
|
|
#if !BAD
|
|
- (nonnull Element)objectAtIndexedSubscript:(long)index;
|
|
#else
|
|
// - (nonnull Element)objectAtIndexedSubscript:(long)index;
|
|
#endif
|
|
@end
|
|
|
|
@interface GenericKeyedSubscriptDisappearsBase<Element> : Object
|
|
#if !BAD
|
|
- (nonnull Element)objectAtIndexedSubscript:(nonnull id)key;
|
|
#else
|
|
// - (nonnull Element)objectAtIndexedSubscript:(nonnull id)key;
|
|
#endif
|
|
@end
|
|
|
|
|
|
@interface DesignatedInitDisappearsBase : Object
|
|
- (nonnull instancetype)init __attribute__((objc_designated_initializer));
|
|
- (nonnull instancetype)initConvenience:(long)value;
|
|
#if !BAD
|
|
- (nonnull instancetype)initWithValue:(long)value __attribute__((objc_designated_initializer));
|
|
#else
|
|
//- (nonnull instancetype)initWithValue:(long)value __attribute__((objc_designated_initializer));
|
|
#endif
|
|
@end
|
|
|
|
@interface OnlyDesignatedInitDisappearsBase : Object
|
|
- (nonnull instancetype)initConvenience:(long)value;
|
|
#if !BAD
|
|
- (nonnull instancetype)initWithValue:(long)value __attribute__((objc_designated_initializer));
|
|
#else
|
|
//- (nonnull instancetype)initWithValue:(long)value __attribute__((objc_designated_initializer));
|
|
#endif
|
|
@end
|
|
|
|
@interface ConvenienceInitDisappearsBase : Object
|
|
- (nonnull instancetype)init __attribute__((objc_designated_initializer));
|
|
- (nonnull instancetype)initConvenience:(long)value;
|
|
#if !BAD
|
|
- (nonnull instancetype)initWithValue:(long)value;
|
|
#else
|
|
//- (nonnull instancetype)initWithValue:(long)value;
|
|
#endif
|
|
@end
|
|
|
|
@interface UnknownInitDisappearsBase : Object
|
|
- (nonnull instancetype)init;
|
|
#if !BAD
|
|
- (nonnull instancetype)initWithValue:(long)value;
|
|
#else
|
|
//- (nonnull instancetype)initWithValue:(long)value;
|
|
#endif
|
|
@end
|
|
|
|
@interface OnlyUnknownInitDisappearsBase : Object
|
|
#if !BAD
|
|
- (nonnull instancetype)initWithValue:(long)value;
|
|
#else
|
|
//- (nonnull instancetype)initWithValue:(long)value;
|
|
#endif
|
|
@end
|
|
|
|
|
|
#if !BAD
|
|
struct BoxedInt {
|
|
int value;
|
|
};
|
|
#endif
|
|
|
|
@interface MethodWithDisappearingType : Object
|
|
#if !BAD
|
|
- (struct BoxedInt)boxItUp;
|
|
#endif
|
|
@end
|
|
|
|
@interface InitializerWithDisappearingType : Object
|
|
#if !BAD
|
|
- (nonnull instancetype)initWithBoxedInt:(struct BoxedInt)box;
|
|
#endif
|
|
@end
|