Use extension registry when unpacking serialized type alias

It's funny here that "extension" here means protobuf extensions
while initial issue is about extension function types

 #Fixed KT-22728
This commit is contained in:
Denis Zharkov
2018-02-07 11:17:22 +03:00
parent fbef21bf17
commit 2ad93a0330
7 changed files with 43 additions and 1 deletions
@@ -0,0 +1,7 @@
package test
class Foo<T>
fun <P> foo(x: Foo<P>.() -> Unit) {}
typealias MyHandler<P> = Foo<P>.() -> Unit
@@ -0,0 +1,8 @@
package test
public fun </*0*/ P> foo(/*0*/ x: test.Foo<P>.() -> kotlin.Unit): kotlin.Unit
public final class Foo</*0*/ T> {
/*primary*/ public constructor Foo</*0*/ T>()
}
public typealias MyHandler</*0*/ P> = test.Foo<P>.() -> kotlin.Unit
@@ -4870,6 +4870,12 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/Generic.kt");
doTestCompiledKotlin(fileName);
}
@TestMetadata("TypeAliasToExtension.kt")
public void testTypeAliasToExtension() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/TypeAliasToExtension.kt");
doTestCompiledKotlin(fileName);
}
}
@TestMetadata("compiler/testData/loadJava/compiledKotlin/visibility")
@@ -3077,6 +3077,12 @@ public class LoadKotlinWithTypeTableTestGenerated extends AbstractLoadKotlinWith
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/Generic.kt");
doTest(fileName);
}
@TestMetadata("TypeAliasToExtension.kt")
public void testTypeAliasToExtension() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/TypeAliasToExtension.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/loadJava/compiledKotlin/visibility")
@@ -4870,6 +4870,12 @@ public class LoadJavaUsingJavacTestGenerated extends AbstractLoadJavaUsingJavacT
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/Generic.kt");
doTestCompiledKotlin(fileName);
}
@TestMetadata("TypeAliasToExtension.kt")
public void testTypeAliasToExtension() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/TypeAliasToExtension.kt");
doTestCompiledKotlin(fileName);
}
}
@TestMetadata("compiler/testData/loadJava/compiledKotlin/visibility")
@@ -3079,6 +3079,12 @@ public class JvmRuntimeDescriptorLoaderTestGenerated extends AbstractJvmRuntimeD
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/Generic.kt");
doTest(fileName);
}
@TestMetadata("TypeAliasToExtension.kt")
public void testTypeAliasToExtension() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/typealias/TypeAliasToExtension.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/loadJava/compiledKotlin/visibility")
@@ -152,7 +152,10 @@ abstract class DeserializedMemberScope protected constructor(
private fun createTypeAlias(name: Name): TypeAliasDescriptor? {
val byteArray = typeAliasBytes[name] ?: return null
val proto = ProtoBuf.TypeAlias.parseDelimitedFrom(ByteArrayInputStream(byteArray)) ?: return null
val proto =
ProtoBuf.TypeAlias.parseDelimitedFrom(
ByteArrayInputStream(byteArray), c.components.extensionRegistryLite
) ?: return null
return c.memberDeserializer.loadTypeAlias(proto)
}