Run psi check on light classes from compiled Kotlin

This commit is contained in:
Nikolay Krasko
2015-11-05 16:16:32 +03:00
parent 9e0ec80c6a
commit 2ff0b13808
23 changed files with 375 additions and 67 deletions
@@ -72,6 +72,11 @@ public abstract class AbstractCompilerLightClassTest extends KotlinMultiFileTest
throw ExceptionUtilsKt.rethrow(e);
}
}
}, new Function1<String, String>() {
@Override
public String invoke(String s) {
return LightClassTestCommon.INSTANCE.removeEmptyDefaultImpls(s);
}
});
}
@@ -35,9 +35,9 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/asJava/lightClasses"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("annotationClass.kt")
@TestMetadata("AnnotationClass.kt")
public void testAnnotationClass() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/annotationClass.kt");
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/AnnotationClass.kt");
doTest(fileName);
}
@@ -61,9 +61,9 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT
doTest(fileName);
}
@TestMetadata("WithPlatformTypes.kt")
public void testWithPlatformTypes() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/delegation/WithPlatformTypes.kt");
@TestMetadata("WithPlatformTypes.NoCompile.kt")
public void testWithPlatformTypes_NoCompile() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/delegation/WithPlatformTypes.NoCompile.kt");
doTest(fileName);
}
}
@@ -76,9 +76,9 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/asJava/lightClasses/facades"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("EmptyFile.kt")
public void testEmptyFile() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/facades/EmptyFile.kt");
@TestMetadata("EmptyFile.NoCompile.kt")
public void testEmptyFile_NoCompile() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/facades/EmptyFile.NoCompile.kt");
doTest(fileName);
}
@@ -181,9 +181,9 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT
doTest(fileName);
}
@TestMetadata("PrivateInTrait.kt")
public void testPrivateInTrait() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/nullabilityAnnotations/PrivateInTrait.kt");
@TestMetadata("PrivateInTrait.NoCompile.kt")
public void testPrivateInTrait_NoCompile() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/nullabilityAnnotations/PrivateInTrait.NoCompile.kt");
doTest(fileName);
}
@@ -199,9 +199,9 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT
doTest(fileName);
}
@TestMetadata("TraitClassObjectField.kt")
public void testTraitClassObjectField() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/nullabilityAnnotations/TraitClassObjectField.kt");
@TestMetadata("TraitClassObjectField.NoCompile.kt")
public void testTraitClassObjectField_NoCompile() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/nullabilityAnnotations/TraitClassObjectField.NoCompile.kt");
doTest(fileName);
}
@@ -58,4 +58,9 @@ object LightClassTestCommon {
val actual = normalizeText(buffer.toString())
return actual
}
// Actual text for light class is generated with ClsElementImpl.appendMirrorText() that can find empty DefaultImpl inner class in stubs
// for all interfaces. This inner class can't be used in Java as it generally is not seen from light classes built from Kotlin sources.
// It is also omitted during classes generation in backend so it also absent in light classes built from compiled code.
public fun removeEmptyDefaultImpls(text: String) : String = text.replace("\n final class DefaultImpls {\n }\n", "")
}