diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtDeclaration.java b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtDeclaration.java new file mode 100644 index 00000000000..568153beb89 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtDeclaration.java @@ -0,0 +1,5 @@ +package a; + +public interface KtDeclaration extends KtElement { + +} diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtElement.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtElement.kt new file mode 100644 index 00000000000..9f75df65000 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtElement.kt @@ -0,0 +1,4 @@ +package a + +interface KtElement : KtPureElement { +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtFile.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtFile.kt new file mode 100644 index 00000000000..f7443d37491 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtFile.kt @@ -0,0 +1,3 @@ +package a + +open class KtFile \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtPureElement.java b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtPureElement.java new file mode 100644 index 00000000000..546330c7132 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/dependency/a/KtPureElement.java @@ -0,0 +1,6 @@ +package a; + +public interface KtPureElement { + KtFile getContainingKtFile(); +} + diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/expected.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/expected.txt new file mode 100644 index 00000000000..3ab22cc7ee6 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/expected.txt @@ -0,0 +1,5 @@ +FILE: main.kt + public final val R|a/KtElement|.fqNameWithoutCompanions: R|a/KtFile| + public get(): R|a/KtFile| { + ^ this@R|/fqNameWithoutCompanions|.R|a/KtPureElement.containingKtFile| + } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/main/main.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/main/main.kt new file mode 100644 index 00000000000..b16d1441330 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/main/main.kt @@ -0,0 +1,4 @@ +import a.* + +val KtDeclaration.fqNameWithoutCompanions: KtFile + get() = containingKtFile \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/structure.json b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/structure.json new file mode 100644 index 00000000000..3eb62dde3ec --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/structure.json @@ -0,0 +1,8 @@ +{ + "modules" : [ + { "name": "main", "dependsOn": ["dependency"] }, + { "name": "dependency" } + ], + "fileToResolve": { "module": "main", "file": "main.kt" }, + "fails": true +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleLazyResolveTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleLazyResolveTest.kt index 89b19e63a88..9ad5cabe207 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleLazyResolveTest.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/AbstractFirMultiModuleLazyResolveTest.kt @@ -46,12 +46,12 @@ abstract class AbstractFirMultiModuleLazyResolveTest : AbstractMultiModuleTest() try { val fir = LowLevelFirApiFacade.getOrBuildFirFor(ktFileToAnalyse, resolveState, FirResolvePhase.BODY_RESOLVE) KotlinTestUtils.assertEqualsToFile(File("$path/expected.txt"), fir.render()) - } catch (e: Exception) { + } catch (e: Throwable) { if (!fails) throw e return } if (fails) { - throw AssertionError("Looks like test is passing, please remove // FAILS form the file") + throw AssertionError("Looks like test is passing, please remove `\"fails\": true` from structure.json") } } } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleLazyResolveTestGenerated.java b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleLazyResolveTestGenerated.java index b523f4fd71b..f5bf00ed14b 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleLazyResolveTestGenerated.java +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/FirMultiModuleLazyResolveTestGenerated.java @@ -28,6 +28,11 @@ public class FirMultiModuleLazyResolveTestGenerated extends AbstractFirMultiModu KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve"), Pattern.compile("^([^\\.]+)$"), null, false); } + @TestMetadata("javaExtendsKotlinExtendsJava") + public void testJavaExtendsKotlinExtendsJava() throws Exception { + runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/javaExtendsKotlinExtendsJava/"); + } + @TestMetadata("whenWithHeiarchy") public void testWhenWithHeiarchy() throws Exception { runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/multiModuleLazyResolve/whenWithHeiarchy/");