diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolProviderByJavaPsi.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolProviderByJavaPsi.kt index babe34823a0..b3abe83e7a3 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolProviderByJavaPsi.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolProviderByJavaPsi.kt @@ -39,10 +39,7 @@ internal class KtFirSymbolProviderByJavaPsi( val containingClass = callable.containingClass ?: return null val classSymbol = getNamedClassSymbol(containingClass) ?: return null return with(analysisSession) { - listOfNotNull(classSymbol.getDeclaredMemberScope(), classSymbol.getStaticMemberScope()) - .asCompositeScope() - .getCallableSymbols(name) - .firstOrNull { it.psi == callable } + classSymbol.getCombinedDeclaredMemberScope().getCallableSymbols(name).firstOrNull { it.psi == callable } } } } \ No newline at end of file diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java index 8a16031d556..ed8ebe79afa 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/symbols/FirIdeNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java @@ -46,9 +46,27 @@ public class FirIdeNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated extend KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByJavaPsi"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("javaField.kt") + public void testJavaField() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.kt"); + } + + @Test + @TestMetadata("javaFieldFromSuperclass.kt") + public void testJavaFieldFromSuperclass() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.kt"); + } + @Test @TestMetadata("javaStaticField.kt") public void testJavaStaticField() throws Exception { runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticField.kt"); } + + @Test + @TestMetadata("javaStaticFieldFromSuperclass.kt") + public void testJavaStaticFieldFromSuperclass() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.kt"); + } } diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java index dfee5d29003..94fa31381fd 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/symbols/FirStandaloneNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated.java @@ -46,9 +46,27 @@ public class FirStandaloneNormalAnalysisSourceModuleSymbolByJavaPsiTestGenerated KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByJavaPsi"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("javaField.kt") + public void testJavaField() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.kt"); + } + + @Test + @TestMetadata("javaFieldFromSuperclass.kt") + public void testJavaFieldFromSuperclass() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.kt"); + } + @Test @TestMetadata("javaStaticField.kt") public void testJavaStaticField() throws Exception { runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticField.kt"); } + + @Test + @TestMetadata("javaStaticFieldFromSuperclass.kt") + public void testJavaStaticFieldFromSuperclass() throws Exception { + runTest("analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.kt"); + } } diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.kt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.kt new file mode 100644 index 00000000000..d890218c29e --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.kt @@ -0,0 +1,9 @@ +// FILE: main.kt +fun some() { + JavaClass().count +} + +// FILE: JavaClass.java +public class JavaClass { + public Integer count = 0; +} diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.pretty.txt new file mode 100644 index 00000000000..6acf288ddbe --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.pretty.txt @@ -0,0 +1 @@ +open var count: kotlin.Int! diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.txt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.txt new file mode 100644 index 00000000000..34ae05a8089 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaField.txt @@ -0,0 +1,23 @@ +KtJavaFieldSymbol: + annotationsList: [] + callableIdIfNonLocal: /JavaClass.count + contextReceivers: [] + isExtension: false + isStatic: false + isVal: false + modality: OPEN + name: count + origin: JAVA + receiverParameter: null + returnType: KtFlexibleType: + annotationsList: [] + type: kotlin/Int! + symbolKind: CLASS_MEMBER + typeParameters: [] + visibility: Public + getDispatchReceiver(): KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: JavaClass + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.kt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.kt new file mode 100644 index 00000000000..1dabf07cbc8 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.kt @@ -0,0 +1,13 @@ +// FILE: main.kt +fun some() { + JavaClass().count +} + +// FILE: SuperClass.java +public class SuperClass { + public Integer count = 0; +} + +// FILE: JavaClass.java +public class JavaClass extends SuperClass { +} diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.pretty.txt new file mode 100644 index 00000000000..6acf288ddbe --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.pretty.txt @@ -0,0 +1 @@ +open var count: kotlin.Int! diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.txt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.txt new file mode 100644 index 00000000000..1b6b16d23f4 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaFieldFromSuperclass.txt @@ -0,0 +1,23 @@ +KtJavaFieldSymbol: + annotationsList: [] + callableIdIfNonLocal: /SuperClass.count + contextReceivers: [] + isExtension: false + isStatic: false + isVal: false + modality: OPEN + name: count + origin: JAVA + receiverParameter: null + returnType: KtFlexibleType: + annotationsList: [] + type: kotlin/Int! + symbolKind: CLASS_MEMBER + typeParameters: [] + visibility: Public + getDispatchReceiver(): KtUsualClassType: + annotationsList: [] + ownTypeArguments: [] + type: SuperClass + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.kt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.kt new file mode 100644 index 00000000000..b062551d9c3 --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.kt @@ -0,0 +1,13 @@ +// FILE: main.kt +fun some() { + JavaClass.count +} + +// FILE: SuperClass.java +public class SuperClass { + public static Integer count = 0; +} + +// FILE: JavaClass.java +public class JavaClass extends SuperClass { +} diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.pretty.txt new file mode 100644 index 00000000000..6acf288ddbe --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.pretty.txt @@ -0,0 +1 @@ +open var count: kotlin.Int! diff --git a/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.txt b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.txt new file mode 100644 index 00000000000..d022ea631ca --- /dev/null +++ b/analysis/analysis-api/testData/symbols/symbolByJavaPsi/javaStaticFieldFromSuperclass.txt @@ -0,0 +1,19 @@ +KtJavaFieldSymbol: + annotationsList: [] + callableIdIfNonLocal: /SuperClass.count + contextReceivers: [] + isExtension: false + isStatic: true + isVal: false + modality: OPEN + name: count + origin: JAVA + receiverParameter: null + returnType: KtFlexibleType: + annotationsList: [] + type: kotlin/Int! + symbolKind: CLASS_MEMBER + typeParameters: [] + visibility: Public + getContainingModule: KtSourceModule "Sources of main" + deprecationStatus: null