Skip to content
This repository was archived by the owner on Nov 6, 2019. It is now read-only.

Commit 93e2a00

Browse files
committed
Use node instead of just type
This fixes losing the nullability indicator.
1 parent cadbd3a commit 93e2a00

File tree

4 files changed

+17
-14
lines changed

4 files changed

+17
-14
lines changed

src/main/kotlin/converter/typeUtils.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,14 @@ private fun ObjectTypeToKotlinTypeMapper.mapToEnhancedType(type: Type, declarati
3232
return resultingDeclaration.unsafeCast<TypeNode>().toEnhancedType(this)
3333
}
3434

35-
if (resultingDeclaration?.kind == SyntaxKind.UnionType && TypeFlags.Union !in flags) {
35+
if (resultingDeclaration?.kind == SyntaxKind.UnionType) {
3636
return resultingDeclaration.unsafeCast<UnionTypeNode>().toEnhancedType(this)
3737
}
3838

39+
if (TypeFlags.Union in flags) {
40+
return mapUnionType(type.unsafeCast<UnionType>())
41+
}
42+
3943
if (type in typesInMappingProcess) {
4044
report(
4145
"Recursion is detected when resolve type: \"${type.symbol?.name}\" for the declaration at ${declaration?.location()}",
@@ -70,7 +74,6 @@ private fun ObjectTypeToKotlinTypeMapper.mapToEnhancedType(type: Type, declarati
7074
SingleKtType(KtType(BOOLEAN, comment = type.unsafeCast<LiteralType>().value))
7175
}
7276

73-
TypeFlags.Union in flags -> mapUnionType(type.unsafeCast<UnionType>())
7477
TypeFlags.Intersection in flags -> mapIntersectionType(type.unsafeCast<IntersectionType>())
7578

7679
TypeFlags.TypeParameter in flags -> SingleKtType(KtType(KtQualifiedName(unescapeIdentifier(type.getSymbol()!!.name))))

testData/misc/missedOverloads.d.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ external interface MyEvent
66
external interface MyOptions
77
external interface JQueryStatic {
88
fun get(url: String, success: (() -> Any)? = definedExternally /* null */, dataType: String? = definedExternally /* null */): MyXHR
9-
fun get(url: String, data: String? = definedExternally /* null */, success: (() -> Any)? = definedExternally /* null */, dataType: String? = definedExternally /* null */): MyXHR
109
fun get(url: String, data: Any? = definedExternally /* null */, success: (() -> Any)? = definedExternally /* null */, dataType: String? = definedExternally /* null */): MyXHR
10+
fun get(url: String, data: String? = definedExternally /* null */, success: (() -> Any)? = definedExternally /* null */, dataType: String? = definedExternally /* null */): MyXHR
1111
fun get(settings: MyOptions): MyXHR
1212
@nativeInvoke
1313
operator fun invoke(selector: String, context: Element? = definedExternally /* null */): MyQuery
@@ -33,29 +33,29 @@ external interface JQueryStatic {
3333
}
3434
external open class JJ {
3535
open fun foo(data: String, context: HTMLElement? = definedExternally /* null */, keepScripts: Boolean? = definedExternally /* null */): Array<Any> = definedExternally
36-
open fun hide(duration: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
3736
open fun hide(duration: Number? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
38-
open fun hide(duration: String? = definedExternally /* null */, easing: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
37+
open fun hide(duration: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
3938
open fun hide(duration: Number? = definedExternally /* null */, easing: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
39+
open fun hide(duration: String? = definedExternally /* null */, easing: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
4040
open fun hide(options: MyOptions): MyQuery = definedExternally
41-
open fun trigger(eventType: String, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
4241
open fun trigger(eventType: String, extraParameters: Array<Any>? = definedExternally /* null */): MyQuery = definedExternally
43-
open fun trigger(event: MyEvent, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
42+
open fun trigger(eventType: String, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
4443
open fun trigger(event: MyEvent, extraParameters: Array<Any>? = definedExternally /* null */): MyQuery = definedExternally
44+
open fun trigger(event: MyEvent, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
4545
open fun hide(): MyQuery = definedExternally
4646
open fun trigger(eventType: String): MyQuery = definedExternally
4747
open fun trigger(event: MyEvent): MyQuery = definedExternally
4848
}
4949
external fun foo(data: String, context: HTMLElement? = definedExternally /* null */, keepScripts: Boolean? = definedExternally /* null */): Array<Any> = definedExternally
50-
external fun hide(duration: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
5150
external fun hide(duration: Number? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
52-
external fun hide(duration: String? = definedExternally /* null */, easing: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
51+
external fun hide(duration: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
5352
external fun hide(duration: Number? = definedExternally /* null */, easing: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
53+
external fun hide(duration: String? = definedExternally /* null */, easing: String? = definedExternally /* null */, complete: Function<*>? = definedExternally /* null */): MyQuery = definedExternally
5454
external fun hide(options: MyOptions): MyQuery = definedExternally
55-
external fun trigger(eventType: String, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
5655
external fun trigger(eventType: String, extraParameters: Array<Any>? = definedExternally /* null */): MyQuery = definedExternally
57-
external fun trigger(event: MyEvent, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
56+
external fun trigger(eventType: String, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
5857
external fun trigger(event: MyEvent, extraParameters: Array<Any>? = definedExternally /* null */): MyQuery = definedExternally
58+
external fun trigger(event: MyEvent, extraParameters: Any? = definedExternally /* null */): MyQuery = definedExternally
5959
external fun hide(): MyQuery = definedExternally
6060
external fun trigger(eventType: String): MyQuery = definedExternally
6161
external fun trigger(event: MyEvent): MyQuery = definedExternally

testData/objectType/generics.d.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ external interface `T$2`<T> {
1818
}
1919
external interface `T$3`<T, S> {
2020
fun bar(a: Any): T
21-
fun foo(t: String)
2221
fun foo(t: `T$2`<T>)
22+
fun foo(t: String)
2323
var baz: Any? get() = definedExternally; set(value) = definedExternally
2424
var boo: S? get() = definedExternally; set(value) = definedExternally
2525
var show: (overrideChecks: Boolean) -> Unit

testData/unionType/withNullOrUndefined.d.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package withNullOrUndefined
33
external var foo: String? = definedExternally
44
external var bar: String? = definedExternally
55
external fun bar(a: String?): Foo? = definedExternally
6-
external fun nullOverload(a: String?): dynamic /* Number? | Foo? */ = definedExternally
7-
external fun nullOverload(a: Number?): dynamic /* Number? | Foo? */ = definedExternally
6+
external fun nullOverload(a: String?): dynamic /* Foo? | Number? */ = definedExternally
7+
external fun nullOverload(a: Number?): dynamic /* Foo? | Number? */ = definedExternally
88
external fun baz(a: Foo?, b: Number? = definedExternally /* null */): Any? = definedExternally
99
external interface `T$0` {
1010
@nativeGetter

0 commit comments

Comments
 (0)