Align generic signature for inner classes to work as in Java

#KT-10397 Fixed

According to JVMS (p. 4.3.4) inner classes should be separated with `$` in generic signature.

Note that in Java, inner types separated with `.` after first parameterized type, and now we preserve the same behaviour. See tests for clarification.
This commit is contained in:
Mikhail Zarechenskiy
2017-04-26 16:23:54 +03:00
parent 14e798a1fc
commit a0d7b703f4
16 changed files with 350 additions and 13 deletions
@@ -14514,6 +14514,42 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/genericSignature/kt6106.kt");
doTest(fileName);
}
@TestMetadata("signatureOfDeepGenericInner.kt")
public void testSignatureOfDeepGenericInner() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/genericSignature/signatureOfDeepGenericInner.kt");
doTest(fileName);
}
@TestMetadata("signatureOfDeepInner.kt")
public void testSignatureOfDeepInner() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/genericSignature/signatureOfDeepInner.kt");
doTest(fileName);
}
@TestMetadata("signatureOfDeepInnerLastGeneric.kt")
public void testSignatureOfDeepInnerLastGeneric() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/genericSignature/signatureOfDeepInnerLastGeneric.kt");
doTest(fileName);
}
@TestMetadata("signatureOfGenericInnerGenericOuter.kt")
public void testSignatureOfGenericInnerGenericOuter() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/genericSignature/signatureOfGenericInnerGenericOuter.kt");
doTest(fileName);
}
@TestMetadata("signatureOfGenericInnerSimpleOuter.kt")
public void testSignatureOfGenericInnerSimpleOuter() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/genericSignature/signatureOfGenericInnerSimpleOuter.kt");
doTest(fileName);
}
@TestMetadata("signatureOfSimpleInnerSimpleOuter.kt")
public void testSignatureOfSimpleInnerSimpleOuter() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/reflection/genericSignature/signatureOfSimpleInnerSimpleOuter.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/codegen/box/reflection/isInstance")