diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.kt b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.kt new file mode 100644 index 00000000000..0103132b6ad --- /dev/null +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.kt @@ -0,0 +1,15 @@ +// SKIP_WHEN_OUT_OF_CONTENT_ROOT +// MODULE: dep +// FILE: issue/pack/RowIcon.java +package issue.pack; + +public class RowIcon { + public static class RClass {} +} + +// MODULE: main(dep) +// FILE: usage.kt +package usage + +fun testJavaNestedClass(alignment: issue.pack.RowIcon.RClass) { +} diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.txt new file mode 100644 index 00000000000..40faead0404 --- /dev/null +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.txt @@ -0,0 +1,13 @@ +KT element: KtTypeReference +FIR element: FirResolvedTypeRefImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +R|issue/pack/RowIcon/RClass| + +FIR FILE: +FILE: [ResolvedTo(IMPORTS)] usage.kt + package usage + + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun testJavaNestedClass([ResolvedTo(ANNOTATION_ARGUMENTS)] alignment: R|issue/pack/RowIcon/RClass|): R|kotlin/Unit| { + } diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.kt b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.kt new file mode 100644 index 00000000000..5f573e3f9c7 --- /dev/null +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.kt @@ -0,0 +1,15 @@ +// SKIP_WHEN_OUT_OF_CONTENT_ROOT +// MODULE: dep +// FILE: issue/pack/RowIcon.kt +package issue.pack; + +class RowIcon { + class RClass +} + +// MODULE: main(dep) +// FILE: usage.kt +package usage + +fun testJavaNestedClass(alignment: issue.pack.RowIcon.RClass) { +} diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.txt new file mode 100644 index 00000000000..be82a52b047 --- /dev/null +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.txt @@ -0,0 +1,13 @@ +KT element: KtTypeReference +FIR element: FirResolvedTypeRefImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +R|issue/pack/RowIcon.RClass| + +FIR FILE: +FILE: [ResolvedTo(IMPORTS)] usage.kt + package usage + + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun testJavaNestedClass([ResolvedTo(ANNOTATION_ARGUMENTS)] alignment: R|issue/pack/RowIcon.RClass|): R|kotlin/Unit| { + } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractGetOrBuildFirTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractGetOrBuildFirTest.kt index e9800d95eec..37a41984dc7 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractGetOrBuildFirTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractGetOrBuildFirTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFir import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile -import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest +import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiLastModuleFirstFileTest import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirOutOfContentRootTestConfigurator import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirScriptTestConfigurator import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirSourceTestConfigurator @@ -18,14 +18,13 @@ import org.jetbrains.kotlin.fir.declarations.FirImport import org.jetbrains.kotlin.fir.renderer.* import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.test.services.TestModuleStructure +import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.assertions -abstract class AbstractGetOrBuildFirTest : AbstractLowLevelApiSingleFileTest() { - override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) { - val module = moduleStructure.modules.single() - val selectedElement = testServices.expressionMarkerProvider.getSelectedElementOfTypeByDirective(ktFile, module) as KtElement +abstract class AbstractGetOrBuildFirTest : AbstractLowLevelApiLastModuleFirstFileTest() { + override fun doTestByFileStructure(ktFile: KtFile, testModule: TestModule, testServices: TestServices) { + val selectedElement = testServices.expressionMarkerProvider.getSelectedElementOfTypeByDirective(ktFile, testModule) as KtElement val actual = resolveWithClearCaches(ktFile) { session -> renderActualFir( diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java index 71f128801b3..9ba0f937429 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java @@ -1099,6 +1099,18 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/invalidTypeArgumentsCountLastArgument.kt"); } + @Test + @TestMetadata("nestedClassFromJava.kt") + public void testNestedClassFromJava() throws Exception { + runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.kt"); + } + + @Test + @TestMetadata("nestedClassFromKotlin.kt") + public void testNestedClassFromKotlin() throws Exception { + runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.kt"); + } + @Test @TestMetadata("nestedClassType.kt") public void testNestedClassType() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java index b833a5ea56b..dcbeb7aed76 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java @@ -1099,6 +1099,18 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/invalidTypeArgumentsCountLastArgument.kt"); } + @Test + @TestMetadata("nestedClassFromJava.kt") + public void testNestedClassFromJava() throws Exception { + runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.kt"); + } + + @Test + @TestMetadata("nestedClassFromKotlin.kt") + public void testNestedClassFromKotlin() throws Exception { + runTest("analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromKotlin.kt"); + } + @Test @TestMetadata("nestedClassType.kt") public void testNestedClassType() throws Exception {