[AA] KtFirSymbolProviderByJavaPsi: Remove workaround for missing static callables in Java declared member scopes
- Now that combined declared member scopes for Java classes contain static callables, we don't need to search symbols in the static member scope. (Note that the static member scope is too broad for this use case, as it contains symbols from superclasses, but we only need to look at declared members because the correct `containingClass` is already chosen.) ^KT-61901 ^KTIJ-25126
This commit is contained in:
committed by
Space Team
parent
df54540a81
commit
9db9f58fba
+1
-4
@@ -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 }
|
||||
}
|
||||
}
|
||||
}
|
||||
+18
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
+18
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// FILE: main.kt
|
||||
fun some() {
|
||||
JavaClass().<caret>count
|
||||
}
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public class JavaClass {
|
||||
public Integer count = 0;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
open var count: kotlin.Int!
|
||||
@@ -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
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// FILE: main.kt
|
||||
fun some() {
|
||||
JavaClass().<caret>count
|
||||
}
|
||||
|
||||
// FILE: SuperClass.java
|
||||
public class SuperClass {
|
||||
public Integer count = 0;
|
||||
}
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public class JavaClass extends SuperClass {
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
open var count: kotlin.Int!
|
||||
+23
@@ -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
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// FILE: main.kt
|
||||
fun some() {
|
||||
JavaClass.<caret>count
|
||||
}
|
||||
|
||||
// FILE: SuperClass.java
|
||||
public class SuperClass {
|
||||
public static Integer count = 0;
|
||||
}
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public class JavaClass extends SuperClass {
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
open var count: kotlin.Int!
|
||||
+19
@@ -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
|
||||
Reference in New Issue
Block a user