[LL FIR] add tests on fir for full qualified name for nested classes

For some reason, outer Java class is treated as a package

^KT-62892
This commit is contained in:
Dmitrii Gridin
2024-01-03 15:10:37 +01:00
committed by Space Team
parent 4cb75490db
commit a39688ba10
7 changed files with 86 additions and 7 deletions
@@ -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: <expr>issue.pack.RowIcon.RClass</expr>) {
}
@@ -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| {
}
@@ -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: <expr>issue.pack.RowIcon.RClass</expr>) {
}
@@ -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| {
}
@@ -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(
@@ -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 {
@@ -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 {