FIR Java: implement "appendErasedType" thus adding predefined signatures

Related to KT-29937
This commit is contained in:
Mikhail Glukhikh
2019-03-12 11:55:57 +03:00
parent 43d06f85e3
commit d00d078b4f
7 changed files with 50 additions and 5 deletions
@@ -0,0 +1,2 @@
<T> public abstract interface MyIterable : R|java/lang/Iterable<T>| {
}
@@ -0,0 +1 @@
public interface MyIterable<T> extends Iterable<T>
@@ -0,0 +1,6 @@
interface UseIterable : MyIterable<String> {
fun test() {
val it = iterator()
val split = spliterator()
}
}
@@ -0,0 +1,8 @@
FILE: test.kt
public abstract interface UseIterable : R|MyIterable<kotlin/String>| {
public open function test(): R|kotlin/Unit| {
val it: R|error: Not supported: FirImplicitTypeRefImpl| = R|FakeOverride<java/lang/Iterable.iterator: R|ft<kotlin/collections/MutableIterator<ft<T, T?>>, kotlin/collections/Iterator<ft<T, T?>>?>|!>|()
val split: R|error: Not supported: FirImplicitTypeRefImpl| = R|FakeOverride<java/lang/Iterable.spliterator: R|ft<java/util/Spliterator<ft<T, T>>, java/util/Spliterator<ft<T, T>>>|>|()
}
}
@@ -53,10 +53,12 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
fun doTest(dirPath: String) {
setupMppProjectFromDirStructure(File(dirPath))
val useFullJdk = "full" in dirPath
val jdkKind = if (useFullJdk) TestJdkKind.FULL_JDK else TestJdkKind.MOCK_JDK
for (module in project.allModules().drop(1)) {
ConfigLibraryUtil.configureSdk(
module,
PluginTestCaseBase.addJdk(testRootDisposable) { PluginTestCaseBase.jdk(TestJdkKind.MOCK_JDK) }
PluginTestCaseBase.addJdk(testRootDisposable) { PluginTestCaseBase.jdk(jdkKind) }
)
}
doFirResolveTest(dirPath)
@@ -59,6 +59,11 @@ public class FirMultiModuleResolveTestGenerated extends AbstractFirMultiModuleRe
runTest("idea/testData/fir/multiModule/basicWithPrimitiveJava/");
}
@TestMetadata("fullWithJavaPredefinedSignature")
public void testFullWithJavaPredefinedSignature() throws Exception {
runTest("idea/testData/fir/multiModule/fullWithJavaPredefinedSignature/");
}
@TestMetadata("javaInheritsRawKotlin")
public void testJavaInheritsRawKotlin() throws Exception {
runTest("idea/testData/fir/multiModule/javaInheritsRawKotlin/");