[K/JS] Change strategy for implicitly exported declarations if there is a cycled reference
^KT-57356 Fixed
This commit is contained in:
+14
@@ -45,5 +45,19 @@ declare namespace JS_TESTS {
|
||||
class TheNewException extends Error {
|
||||
constructor();
|
||||
}
|
||||
interface Service<Self extends foo.Service<Self, TEvent>, TEvent extends foo.Event<Self>> {
|
||||
readonly __doNotUseOrImplementIt: {
|
||||
readonly "foo.Service": unique symbol;
|
||||
};
|
||||
}
|
||||
interface Event<TService extends foo.Service<TService, any /*UnknownType **/>> {
|
||||
readonly __doNotUseOrImplementIt: {
|
||||
readonly "foo.Event": unique symbol;
|
||||
};
|
||||
}
|
||||
class SomeServiceRequest implements foo.Service<any/* foo.SomeService */, foo.Event<any/* foo.SomeService */>/* foo.SomeEvent */> {
|
||||
constructor();
|
||||
readonly __doNotUseOrImplementIt: foo.Service<any/* foo.SomeService */, foo.Event<any/* foo.SomeService */>/* foo.SomeEvent */>["__doNotUseOrImplementIt"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -95,4 +95,17 @@ fun functionWithTypeAliasInside(x: NotExportedTypeAlias): NotExportedTypeAlias {
|
||||
}
|
||||
|
||||
@JsExport
|
||||
class TheNewException: Throwable()
|
||||
class TheNewException: Throwable()
|
||||
|
||||
// Recursive definition KT-57356
|
||||
@JsExport
|
||||
interface Service<Self : Service<Self, TEvent>, in TEvent : Event<Self>>
|
||||
|
||||
@JsExport
|
||||
interface Event<out TService : Service<out TService, *>>
|
||||
|
||||
class SomeService : Service<SomeService, SomeEvent>
|
||||
class SomeEvent : Event<SomeService>
|
||||
|
||||
@JsExport
|
||||
class SomeServiceRequest : Service<SomeService, SomeEvent>
|
||||
|
||||
Vendored
+14
@@ -79,6 +79,20 @@ declare namespace JS_TESTS {
|
||||
}
|
||||
function acceptForthLike<T extends foo.Forth>(forth: T): void;
|
||||
function acceptMoreGenericForthLike<T extends foo.IB & foo.IC & foo.Third>(forth: T): void;
|
||||
interface Service<Self extends foo.Service<Self, TEvent>, TEvent extends foo.Event<Self>> {
|
||||
readonly __doNotUseOrImplementIt: {
|
||||
readonly "foo.Service": unique symbol;
|
||||
};
|
||||
}
|
||||
interface Event<TService extends foo.Service<TService, any /*UnknownType **/>> {
|
||||
readonly __doNotUseOrImplementIt: {
|
||||
readonly "foo.Event": unique symbol;
|
||||
};
|
||||
}
|
||||
class SomeServiceRequest implements foo.Service<any/* foo.SomeService */, foo.Event<any/* foo.SomeService */>/* foo.SomeEvent */> {
|
||||
constructor();
|
||||
readonly __doNotUseOrImplementIt: foo.Service<any/* foo.SomeService */, foo.Event<any/* foo.SomeService */>/* foo.SomeEvent */>["__doNotUseOrImplementIt"];
|
||||
}
|
||||
interface NonExportedParent {
|
||||
readonly __doNotUseOrImplementIt: {
|
||||
readonly "foo.NonExportedParent": unique symbol;
|
||||
|
||||
Vendored
+13
@@ -167,3 +167,16 @@ fun <T> acceptMoreGenericForthLike(forth: T) where T: IB, T: IC, T: Third {}
|
||||
|
||||
@JsExport
|
||||
val forth = Forth()
|
||||
|
||||
// Recursive definition KT-57356
|
||||
@JsExport
|
||||
interface Service<Self : Service<Self, TEvent>, in TEvent : Event<Self>>
|
||||
|
||||
@JsExport
|
||||
interface Event<out TService : Service<out TService, *>>
|
||||
|
||||
class SomeService : Service<SomeService, SomeEvent>
|
||||
class SomeEvent : Event<SomeService>
|
||||
|
||||
@JsExport
|
||||
class SomeServiceRequest : Service<SomeService, SomeEvent>
|
||||
|
||||
Reference in New Issue
Block a user