From c8ae22eb66a4461daf7ffd59e9434bcc3545851b Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Fri, 25 Aug 2023 14:19:17 +0200 Subject: [PATCH] KTIJ-26785 [AA] Filter `JavaClassMembersEnhancementScope` when shortening types The same way as `FirClassUseSiteMemberScope` is present when there is an implicit receiver with a pure Kotlin type, `JavaClassMembersEnhancementScope` is present when the receiver's type comes from Java sources ^KTIJ-26785 Fixed --- .../fir/components/KtFirReferenceShortener.kt | 15 ++++++-- ...ModuleReferenceShortenerTestGenerated.java | 36 +++++++++++++++++-- ...ModuleReferenceShortenerTestGenerated.java | 36 +++++++++++++++++-- ...types.kt => nestedClassFromSupertypes1.kt} | 0 ...pes.txt => nestedClassFromSupertypes1.txt} | 0 .../nestedClassFromSupertypes1_java.kt | 15 ++++++++ .../nestedClassFromSupertypes1_java.txt | 9 +++++ .../nestedClassFromSupertypes2_java.kt | 16 +++++++++ .../nestedClassFromSupertypes2_java.txt | 11 ++++++ .../nestedClassFromSupertypes3_java.kt | 15 ++++++++ .../nestedClassFromSupertypes3_java.txt | 11 ++++++ .../nestedClassFromSupertypes5_java.kt | 15 ++++++++ .../nestedClassFromSupertypes5_java.txt | 9 +++++ .../nestedClassFromSupertypes6_java.kt | 15 ++++++++ .../nestedClassFromSupertypes6_java.txt | 9 +++++ 15 files changed, 203 insertions(+), 9 deletions(-) rename analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/{nestedClassFromSupertypes.kt => nestedClassFromSupertypes1.kt} (100%) rename analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/{nestedClassFromSupertypes.txt => nestedClassFromSupertypes1.txt} (100%) create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.kt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.txt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.kt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.txt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.kt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.txt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.kt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.txt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.kt create mode 100644 analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.txt diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt index 02f2372c70f..079620d02b4 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall import org.jetbrains.kotlin.fir.expressions.builder.buildPropertyAccessExpression import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression +import org.jetbrains.kotlin.fir.java.scopes.JavaClassMembersEnhancementScope import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirNamedReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference @@ -694,10 +695,18 @@ private class ElementsToShortenCollector( /** * Class use-site member scopes may contain classifiers which are not actually available without explicit import. - * - * See KTIJ-24684 and KTIJ-24662 for examples. + * And if the class is declared in Java, it can be represented with JavaClassMembersEnhancementScope. */ - val scopes = positionScopes.filterNot { it is FirClassUseSiteMemberScope } + val scopes = positionScopes.filter { + when (it) { + // KTIJ-24684, KTIJ-24662 + is FirClassUseSiteMemberScope -> false + // KTIJ-26785 + is JavaClassMembersEnhancementScope -> false + + else -> true + } + } val name = classId.shortClassName val availableClassifiers = shorteningContext.findClassifiersInScopesByName(scopes, name) diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java index 09c2d55962e..d4b44eb370f 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java @@ -518,9 +518,15 @@ public class FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated ext } @Test - @TestMetadata("nestedClassFromSupertypes.kt") - public void testNestedClassFromSupertypes() throws Exception { - runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes.kt"); + @TestMetadata("nestedClassFromSupertypes1.kt") + public void testNestedClassFromSupertypes1() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1.kt"); + } + + @Test + @TestMetadata("nestedClassFromSupertypes1_java.kt") + public void testNestedClassFromSupertypes1_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.kt"); } @Test @@ -529,12 +535,24 @@ public class FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated ext runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes2_java.kt") + public void testNestedClassFromSupertypes2_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.kt"); + } + @Test @TestMetadata("nestedClassFromSupertypes3.kt") public void testNestedClassFromSupertypes3() throws Exception { runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes3_java.kt") + public void testNestedClassFromSupertypes3_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.kt"); + } + @Test @TestMetadata("nestedClassFromSupertypes4.kt") public void testNestedClassFromSupertypes4() throws Exception { @@ -547,12 +565,24 @@ public class FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated ext runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes5_java.kt") + public void testNestedClassFromSupertypes5_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.kt"); + } + @Test @TestMetadata("nestedClassFromSupertypes6.kt") public void testNestedClassFromSupertypes6() throws Exception { runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes6_java.kt") + public void testNestedClassFromSupertypes6_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.kt"); + } + @Nested @TestMetadata("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/classHeaderPositions") @TestDataPath("$PROJECT_ROOT") diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java index e07f0e1dc21..482e0222cff 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java @@ -518,9 +518,15 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenera } @Test - @TestMetadata("nestedClassFromSupertypes.kt") - public void testNestedClassFromSupertypes() throws Exception { - runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes.kt"); + @TestMetadata("nestedClassFromSupertypes1.kt") + public void testNestedClassFromSupertypes1() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1.kt"); + } + + @Test + @TestMetadata("nestedClassFromSupertypes1_java.kt") + public void testNestedClassFromSupertypes1_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.kt"); } @Test @@ -529,12 +535,24 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenera runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes2_java.kt") + public void testNestedClassFromSupertypes2_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.kt"); + } + @Test @TestMetadata("nestedClassFromSupertypes3.kt") public void testNestedClassFromSupertypes3() throws Exception { runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes3_java.kt") + public void testNestedClassFromSupertypes3_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.kt"); + } + @Test @TestMetadata("nestedClassFromSupertypes4.kt") public void testNestedClassFromSupertypes4() throws Exception { @@ -547,12 +565,24 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenera runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes5_java.kt") + public void testNestedClassFromSupertypes5_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.kt"); + } + @Test @TestMetadata("nestedClassFromSupertypes6.kt") public void testNestedClassFromSupertypes6() throws Exception { runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6.kt"); } + @Test + @TestMetadata("nestedClassFromSupertypes6_java.kt") + public void testNestedClassFromSupertypes6_java() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.kt"); + } + @Nested @TestMetadata("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/classHeaderPositions") @TestDataPath("$PROJECT_ROOT") diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes.kt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1.kt similarity index 100% rename from analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes.kt rename to analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1.kt diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes.txt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1.txt similarity index 100% rename from analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes.txt rename to analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1.txt diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.kt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.kt new file mode 100644 index 00000000000..30445b76fdb --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.kt @@ -0,0 +1,15 @@ +// FILE: main.kt +package test + +import dependency.JavaInterface + +class Foo : JavaInterface { + val prop: JavaInterface.Nested = JavaInterface.Nested() +} + +// FILE: dependency/JavaInterface.java +package dependency; + +public interface JavaInterface { + public class Nested {} +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.txt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.txt new file mode 100644 index 00000000000..6f24c15fb43 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes1_java.txt @@ -0,0 +1,9 @@ +Before shortening: val prop: JavaInterface.Nested = JavaInterface.Nested() +with DO_NOT_SHORTEN: +with SHORTEN_IF_ALREADY_IMPORTED: +with SHORTEN_AND_IMPORT: +[type] JavaInterface.Nested +[qualifier] JavaInterface.Nested() +with SHORTEN_AND_STAR_IMPORT: +[type] JavaInterface.Nested +[qualifier] JavaInterface.Nested() diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.kt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.kt new file mode 100644 index 00000000000..14d1a1a344c --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.kt @@ -0,0 +1,16 @@ +// FILE: main.kt +package test + +import dependency.JavaInterface +import dependency.JavaInterface.Nested + +class Foo : JavaInterface { + val prop: JavaInterface.Nested = JavaInterface.Nested() +} + +// FILE: dependency/JavaInterface.java +package dependency; + +public interface JavaInterface { + public class Nested {} +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.txt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.txt new file mode 100644 index 00000000000..58949e56f10 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes2_java.txt @@ -0,0 +1,11 @@ +Before shortening: val prop: JavaInterface.Nested = JavaInterface.Nested() +with DO_NOT_SHORTEN: +with SHORTEN_IF_ALREADY_IMPORTED: +[type] JavaInterface.Nested +[qualifier] JavaInterface.Nested() +with SHORTEN_AND_IMPORT: +[type] JavaInterface.Nested +[qualifier] JavaInterface.Nested() +with SHORTEN_AND_STAR_IMPORT: +[type] JavaInterface.Nested +[qualifier] JavaInterface.Nested() diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.kt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.kt new file mode 100644 index 00000000000..34080173467 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.kt @@ -0,0 +1,15 @@ +// FILE: main.kt +package test + +import dependency.JavaBaseClass + +class Foo : JavaBaseClass() { + val prop: JavaBaseClass.Nested = JavaBaseClass.Nested() +} + +// FILE: dependency/JavaBaseClass.java +package dependency; + +public class JavaBaseClass { + public static class Nested {} +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.txt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.txt new file mode 100644 index 00000000000..8068781e282 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes3_java.txt @@ -0,0 +1,11 @@ +Before shortening: val prop: JavaBaseClass.Nested = JavaBaseClass.Nested() +with DO_NOT_SHORTEN: +with SHORTEN_IF_ALREADY_IMPORTED: +[type] JavaBaseClass.Nested +[qualifier] JavaBaseClass.Nested() +with SHORTEN_AND_IMPORT: +[type] JavaBaseClass.Nested +[qualifier] JavaBaseClass.Nested() +with SHORTEN_AND_STAR_IMPORT: +[type] JavaBaseClass.Nested +[qualifier] JavaBaseClass.Nested() diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.kt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.kt new file mode 100644 index 00000000000..2af04e10197 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.kt @@ -0,0 +1,15 @@ +// FILE: main.kt +package test + +import dependency.JavaInterface + +fun JavaInterface.foo() { + val prop: JavaInterface.Nested = JavaInterface.Nested() +} + +// FILE: dependency/JavaInterface.java +package dependency; + +public interface JavaInterface { + public class Nested {} +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.txt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.txt new file mode 100644 index 00000000000..6f24c15fb43 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes5_java.txt @@ -0,0 +1,9 @@ +Before shortening: val prop: JavaInterface.Nested = JavaInterface.Nested() +with DO_NOT_SHORTEN: +with SHORTEN_IF_ALREADY_IMPORTED: +with SHORTEN_AND_IMPORT: +[type] JavaInterface.Nested +[qualifier] JavaInterface.Nested() +with SHORTEN_AND_STAR_IMPORT: +[type] JavaInterface.Nested +[qualifier] JavaInterface.Nested() diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.kt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.kt new file mode 100644 index 00000000000..707833db675 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.kt @@ -0,0 +1,15 @@ +// FILE: main.kt +package test + +import dependency.JavaBaseClass + +fun JavaBaseClass.foo() { + val prop: JavaBaseClass.Nested = JavaBaseClass.Nested() +} + +// FILE: dependency/JavaBaseClass.java +package dependency; + +public class JavaBaseClass { + public static class Nested {} +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.txt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.txt new file mode 100644 index 00000000000..68f90191280 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/nestedClasses/nestedClassFromSupertypes6_java.txt @@ -0,0 +1,9 @@ +Before shortening: val prop: JavaBaseClass.Nested = JavaBaseClass.Nested() +with DO_NOT_SHORTEN: +with SHORTEN_IF_ALREADY_IMPORTED: +with SHORTEN_AND_IMPORT: +[type] JavaBaseClass.Nested +[qualifier] JavaBaseClass.Nested() +with SHORTEN_AND_STAR_IMPORT: +[type] JavaBaseClass.Nested +[qualifier] JavaBaseClass.Nested()