diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiDeclarationProvider/FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProviderMultiModuleBinaryTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiDeclarationProvider/FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProviderMultiModuleBinaryTestGenerated.java index 89367821ac8..67294f17a3d 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiDeclarationProvider/FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProviderMultiModuleBinaryTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/psiDeclarationProvider/FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProviderMultiModuleBinaryTestGenerated.java @@ -70,6 +70,12 @@ public class FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProvide runTest("analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmStatic.kt"); } + @Test + @TestMetadata("propertiesInInnerClass.kt") + public void testPropertiesInInnerClass() throws Exception { + runTest("analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInInnerClass.kt"); + } + @Test @TestMetadata("propertiesInNamedCompanionObject.kt") public void testPropertiesInNamedCompanionObject() throws Exception { @@ -88,9 +94,21 @@ public class FirStandaloneNormalAnalysisLibraryBinaryModulePsiDeclarationProvide runTest("analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmStatic.kt"); } + @Test + @TestMetadata("propertiesInNestedObject.kt") + public void testPropertiesInNestedObject() throws Exception { + runTest("analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNestedObject.kt"); + } + @Test @TestMetadata("propertiesInObject.kt") public void testPropertiesInObject() throws Exception { runTest("analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInObject.kt"); } + + @Test + @TestMetadata("propertiesInOuterClass.kt") + public void testPropertiesInOuterClass() throws Exception { + runTest("analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInOuterClass.kt"); + } } diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/components/psiDeclarationProvider/TestPsiElementRenderer.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/components/psiDeclarationProvider/TestPsiElementRenderer.kt index 132ab3fc6bf..1649b267f73 100644 --- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/components/psiDeclarationProvider/TestPsiElementRenderer.kt +++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/components/psiDeclarationProvider/TestPsiElementRenderer.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.components.psiDeclarationProvider import com.intellij.psi.PsiElement +import com.intellij.psi.PsiField import com.intellij.psi.PsiMethod import com.intellij.psi.PsiParameter import org.jetbrains.kotlin.psi.KtElement @@ -28,6 +29,14 @@ public object TestPsiElementRenderer { append(psiElement.name) } is KtElement -> psiElement.text + is PsiField -> buildString { + append("PsiField:") + append(psiElement.containingClass?.name) + append(".") + append(psiElement.name) + append(": ") + append(psiElement.type) + } is PsiMethod -> buildString { append("PsiMethod:") append(psiElement.name) diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject.txt index eea29538a4b..c8beeda77aa 100644 --- a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject.txt +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject.txt @@ -1,2 +1,2 @@ Resolved to: -PsiField:VAL_FLAG +PsiField:Dependency.VAL_FLAG: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmField.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmField.txt index 316a2ead2d8..4d8a9aa9bd9 100644 --- a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmField.txt +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmField.txt @@ -1,2 +1,2 @@ Resolved to: -PsiField:JVM_FIELD_FLAG +PsiField:Dependency.JVM_FIELD_FLAG: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmStatic.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmStatic.txt index ef4977acf61..b1c3bafea2d 100644 --- a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmStatic.txt +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInCompanionObject_JvmStatic.txt @@ -1,2 +1,2 @@ Resolved to: -PsiField:JVM_STATIC_FLAG \ No newline at end of file +PsiField:Dependency.JVM_STATIC_FLAG: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInInnerClass.kt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInInnerClass.kt new file mode 100644 index 00000000000..69dca864355 --- /dev/null +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInInnerClass.kt @@ -0,0 +1,34 @@ +// MODULE: lib + +// FILE: some/Outer.kt +package some + +interface Flag + +class Outer { + val VAL_FLAG: Flag<*> = TODO() + var varFlag: Flag<*> = TODO() + + inner class Inner { + val VAL_FLAG: Flag<*> = TODO() + var varFlag: Flag<*> = TODO() + } +} + +// MODULE: app(lib) +// FILE: main.kt + +package some + +private fun consumeFlag(p: Flag<*>) { + println(p) +} + +fun test() { + val o = Outer() + consumeFlag(o.VAL_FLAG) + consumeFlag(o.varFlag) + val i = o.Inner() + consumeFlag(i.VAL_FLAG) + consumeFlag(i.varFlag) +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInInnerClass.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInInnerClass.txt new file mode 100644 index 00000000000..70285897b96 --- /dev/null +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInInnerClass.txt @@ -0,0 +1,2 @@ +Resolved to: +PsiField:Inner.varFlag: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject.txt index eea29538a4b..c8beeda77aa 100644 --- a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject.txt +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject.txt @@ -1,2 +1,2 @@ Resolved to: -PsiField:VAL_FLAG +PsiField:Dependency.VAL_FLAG: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmField.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmField.txt index 316a2ead2d8..4d8a9aa9bd9 100644 --- a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmField.txt +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmField.txt @@ -1,2 +1,2 @@ Resolved to: -PsiField:JVM_FIELD_FLAG +PsiField:Dependency.JVM_FIELD_FLAG: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmStatic.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmStatic.txt index ef4977acf61..b1c3bafea2d 100644 --- a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmStatic.txt +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNamedCompanionObject_JvmStatic.txt @@ -1,2 +1,2 @@ Resolved to: -PsiField:JVM_STATIC_FLAG \ No newline at end of file +PsiField:Dependency.JVM_STATIC_FLAG: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNestedObject.kt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNestedObject.kt new file mode 100644 index 00000000000..35d182693f5 --- /dev/null +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNestedObject.kt @@ -0,0 +1,33 @@ +// MODULE: lib + +// FILE: some/Outer.kt +package some + +interface Flag + +class Outer { + val VAL_FLAG: Flag<*> = TODO() + var varFlag: Flag<*> = TODO() + + object O { + val VAL_FLAG: Flag<*> = TODO() + var varFlag: Flag<*> = TODO() + } +} + +// MODULE: app(lib) +// FILE: main.kt + +package some + +private fun consumeFlag(p: Flag<*>) { + println(p) +} + +fun test() { + val o = Outer() + consumeFlag(o.VAL_FLAG) + consumeFlag(o.varFlag) + consumeFlag(Outer.O.VAL_FLAG) + consumeFlag(Outer.O.varFlag) +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNestedObject.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNestedObject.txt new file mode 100644 index 00000000000..c79f3a9ba76 --- /dev/null +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInNestedObject.txt @@ -0,0 +1,2 @@ +Resolved to: +PsiField:O.varFlag: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInObject.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInObject.txt index 8602cf2f28d..48fc5457969 100644 --- a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInObject.txt +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInObject.txt @@ -1,2 +1,2 @@ Resolved to: -PsiField:varFlag +PsiField:DependencyObject.varFlag: PsiType:Flag \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInOuterClass.kt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInOuterClass.kt new file mode 100644 index 00000000000..5ac9711769d --- /dev/null +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInOuterClass.kt @@ -0,0 +1,34 @@ +// MODULE: lib + +// FILE: some/Outer.kt +package some + +interface Flag + +class Outer { + val VAL_FLAG: Flag<*> = TODO() + var varFlag: Flag<*> = TODO() + + inner class Inner { + val VAL_FLAG: Flag<*> = TODO() + var varFlag: Flag<*> = TODO() + } +} + +// MODULE: app(lib) +// FILE: main.kt + +package some + +private fun consumeFlag(p: Flag<*>) { + println(p) +} + +fun test() { + val o = Outer() + consumeFlag(o.VAL_FLAG) + consumeFlag(o.varFlag) + val i = o.Inner() + consumeFlag(i.VAL_FLAG) + consumeFlag(i.varFlag) +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInOuterClass.txt b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInOuterClass.txt new file mode 100644 index 00000000000..45d4afaf601 --- /dev/null +++ b/analysis/analysis-api/testData/standalone/multiModuleBinary/propertiesInOuterClass.txt @@ -0,0 +1,2 @@ +Resolved to: +PsiField:Outer.VAL_FLAG: PsiType:Flag