Fix type deserialization failure when type alias was not found

It's crucial for decompilation as declarations are always being deserialized
with no dependencies

 #KT-12832 Fixed
This commit is contained in:
Denis Zharkov
2016-06-27 14:55:56 +03:00
parent 15ce4f8856
commit 067fe35b72
11 changed files with 131 additions and 23 deletions
@@ -0,0 +1,10 @@
// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available
package test
public final class TypeAliases public constructor() {
public final fun foo(a: dependency.A /* = () -> kotlin.Unit */, b: test.TypeAliases.B /* = (dependency.A /* = () -> kotlin.Unit */) -> kotlin.Unit */, ta: test.Outer<kotlin.String, kotlin.Double>.Inner<kotlin.Int>.TA<kotlin.Boolean> /* = kotlin.collections.Map<kotlin.collections.Map<kotlin.String, out kotlin.Double>, kotlin.collections.Map<kotlin.Int, out kotlin.Boolean>> */): kotlin.Unit { /* compiled code */ }
public typealias B = (dependency.A) -> kotlin.Unit
}
@@ -0,0 +1,7 @@
package dependency
typealias A = () -> Unit
fun foo(a: A) {
a.invoke()
}
@@ -0,0 +1,17 @@
package test
import dependency.*
class Outer<E, F> {
inner class Inner<G> {
typealias TA<H> = Map<Map<E, F>, Map<G, H>>
}
}
class TypeAliases {
typealias B = (A) -> Unit
fun foo(a: A, b: B, ta: Outer<String, Double>.Inner<Int>.TA<Boolean>) {
b.invoke(a)
}
}
@@ -0,0 +1 @@
// TARGET_BACKEND: JVM