[K/N] KT-53069: Guard against recursive generic type argument constraints during objc export
Merge-request: KT-MR-7872 Merged-by: Gleb Lukianets <Gleb.Lukianets@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
96e1ba045c
commit
a3e396e7e4
@@ -1462,6 +1462,20 @@ __attribute__((swift_name("OverrideMethodsOfAnyKt")))
|
||||
+ (BOOL)testObj:(id)obj other:(id)other swift:(BOOL)swift error:(NSError * _Nullable * _Nullable)error __attribute__((swift_name("test(obj:other:swift:)")));
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("RecList")))
|
||||
@interface KtRecList<T> : KtBase
|
||||
- (instancetype)initWithValue:(NSArray<id> *)value __attribute__((swift_name("init(value:)"))) __attribute__((objc_designated_initializer));
|
||||
@property (readonly) NSArray<id> *value __attribute__((swift_name("value")));
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("RecFunc")))
|
||||
@interface KtRecFunc<T> : KtBase
|
||||
- (instancetype)initWithValue:(id (^)(void))value __attribute__((swift_name("init(value:)"))) __attribute__((objc_designated_initializer));
|
||||
@property (readonly) id (^value)(void) __attribute__((swift_name("value")));
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("RefinedClassA")))
|
||||
@interface KtRefinedClassA : KtBase
|
||||
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
|
||||
|
||||
@@ -1397,6 +1397,20 @@ __attribute__((swift_name("OverrideMethodsOfAnyKt")))
|
||||
+ (BOOL)testObj:(id)obj other:(id)other swift:(BOOL)swift error:(NSError * _Nullable * _Nullable)error __attribute__((swift_name("test(obj:other:swift:)")));
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("RecList")))
|
||||
@interface KtRecList<T> : KtBase
|
||||
- (instancetype)initWithValue:(NSArray<id> *)value __attribute__((swift_name("init(value:)"))) __attribute__((objc_designated_initializer));
|
||||
@property (readonly) NSArray<id> *value __attribute__((swift_name("value")));
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("RecFunc")))
|
||||
@interface KtRecFunc<T> : KtBase
|
||||
- (instancetype)initWithValue:(id (^)(void))value __attribute__((swift_name("init(value:)"))) __attribute__((objc_designated_initializer));
|
||||
@property (readonly) id (^value)(void) __attribute__((swift_name("value")));
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("RefinedClassA")))
|
||||
@interface KtRefinedClassA : KtBase
|
||||
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
|
||||
|
||||
@@ -1397,6 +1397,20 @@ __attribute__((swift_name("OverrideMethodsOfAnyKt")))
|
||||
+ (BOOL)testObj:(id)obj other:(id)other swift:(BOOL)swift error:(NSError * _Nullable * _Nullable)error __attribute__((swift_name("test(obj:other:swift:)")));
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("RecList")))
|
||||
@interface KtRecList : KtBase
|
||||
- (instancetype)initWithValue:(NSArray<id> *)value __attribute__((swift_name("init(value:)"))) __attribute__((objc_designated_initializer));
|
||||
@property (readonly) NSArray<id> *value __attribute__((swift_name("value")));
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("RecFunc")))
|
||||
@interface KtRecFunc : KtBase
|
||||
- (instancetype)initWithValue:(id (^)(void))value __attribute__((swift_name("init(value:)"))) __attribute__((objc_designated_initializer));
|
||||
@property (readonly) id (^value)(void) __attribute__((swift_name("value")));
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("RefinedClassA")))
|
||||
@interface KtRefinedClassA : KtBase
|
||||
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package recursiveGenericArguments
|
||||
|
||||
class RecList<T: List<T>>(val value: T)
|
||||
|
||||
class RecFunc<T : () -> T>(val value: T)
|
||||
@@ -0,0 +1,17 @@
|
||||
import Kt
|
||||
|
||||
#if !NO_GENERICS
|
||||
private func testRecursiveGenericArguments() throws {
|
||||
try assertTrue(type(of: RecList<NSArray>(value: []).value) == [Any].self)
|
||||
}
|
||||
#endif
|
||||
|
||||
class RecursiveGenericArgumentsTests : SimpleTestProvider {
|
||||
override init() {
|
||||
super.init()
|
||||
|
||||
#if !NO_GENERICS
|
||||
test("TestRecursiveGenericArguments", testRecursiveGenericArguments)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user