[FIR] Get rid of processors in FirScope
This commit is contained in:
committed by
Mikhail Glukhikh
parent
224b2acdcc
commit
a3ab763f0b
+4
-5
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.java.enhancement.*
|
||||
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptor
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
@@ -52,7 +51,7 @@ class JavaClassEnhancementScope(
|
||||
|
||||
private val enhancements = mutableMapOf<FirCallableSymbol<*>, FirCallableSymbol<*>>()
|
||||
|
||||
override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> ProcessorAction): ProcessorAction {
|
||||
override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> Unit) {
|
||||
useSiteMemberScope.processPropertiesByName(name) process@{ original ->
|
||||
|
||||
val field = enhancements.getOrPut(original) { enhance(original, name) }
|
||||
@@ -62,7 +61,7 @@ class JavaClassEnhancementScope(
|
||||
return super.processPropertiesByName(name, processor)
|
||||
}
|
||||
|
||||
override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> ProcessorAction): ProcessorAction {
|
||||
override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) {
|
||||
useSiteMemberScope.processFunctionsByName(name) process@{ original ->
|
||||
|
||||
val function = enhancements.getOrPut(original) { enhance(original, name) }
|
||||
@@ -72,8 +71,8 @@ class JavaClassEnhancementScope(
|
||||
return super.processFunctionsByName(name, processor)
|
||||
}
|
||||
|
||||
override fun processClassifiersByName(name: Name, processor: (FirClassifierSymbol<*>) -> ProcessorAction): ProcessorAction {
|
||||
return useSiteMemberScope.processClassifiersByName(name, processor)
|
||||
override fun processClassifiersByName(name: Name, processor: (FirClassifierSymbol<*>) -> Unit) {
|
||||
useSiteMemberScope.processClassifiersByName(name, processor)
|
||||
}
|
||||
|
||||
private fun enhance(
|
||||
|
||||
+9
-18
@@ -16,9 +16,6 @@ import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod
|
||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaValueParameter
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticPropertiesScope
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.STOP
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.AbstractFirUseSiteMemberScope
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
|
||||
@@ -45,13 +42,9 @@ class JavaClassUseSiteMemberScope(
|
||||
val overrideCandidates = mutableSetOf<FirFunctionSymbol<*>>()
|
||||
declaredMemberScope.processFunctionsByName(name) {
|
||||
overrideCandidates += it
|
||||
NEXT
|
||||
}
|
||||
|
||||
|
||||
superTypesScope.processFunctionsByName(name) {
|
||||
it.getOverridden(overrideCandidates)
|
||||
NEXT
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,15 +83,15 @@ class JavaClassUseSiteMemberScope(
|
||||
propertyName: Name,
|
||||
getterNames: List<Name>,
|
||||
setterName: Name?,
|
||||
processor: (FirCallableSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
processor: (FirCallableSymbol<*>) -> Unit
|
||||
): Unit {
|
||||
val overrideCandidates = mutableSetOf<FirCallableSymbol<*>>()
|
||||
val klass = symbol.fir
|
||||
if (!declaredMemberScope.processPropertiesByName(propertyName) { variableSymbol ->
|
||||
overrideCandidates += variableSymbol
|
||||
processor(variableSymbol)
|
||||
}
|
||||
) return STOP
|
||||
declaredMemberScope.processPropertiesByName(propertyName) { variableSymbol ->
|
||||
overrideCandidates += variableSymbol
|
||||
processor(variableSymbol)
|
||||
}
|
||||
|
||||
if (klass is FirJavaClass) {
|
||||
for (getterName in getterNames) {
|
||||
declaredMemberScope.processFunctionsByName(getterName) { functionSymbol ->
|
||||
@@ -109,12 +102,11 @@ class JavaClassUseSiteMemberScope(
|
||||
// NB: accessor should not be processed directly unless we find matching property symbol in supertype
|
||||
overrideCandidates += accessorSymbol
|
||||
}
|
||||
NEXT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return superTypesScope.processPropertiesByName(propertyName) {
|
||||
superTypesScope.processPropertiesByName(propertyName) {
|
||||
val firCallableMember = it.fir as? FirCallableMemberDeclaration<*>
|
||||
if (firCallableMember?.isStatic == true) {
|
||||
processor(it)
|
||||
@@ -122,7 +114,6 @@ class JavaClassUseSiteMemberScope(
|
||||
when (val overriddenBy = it.getOverridden(overrideCandidates)) {
|
||||
null -> processor(it)
|
||||
is FirAccessorSymbol -> processor(overriddenBy)
|
||||
else -> NEXT
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -153,7 +144,7 @@ class JavaClassUseSiteMemberScope(
|
||||
)
|
||||
}
|
||||
|
||||
override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> ProcessorAction): ProcessorAction {
|
||||
override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> Unit) {
|
||||
// Do not generate accessors at all?
|
||||
if (name.isSpecial) {
|
||||
return processAccessorFunctionsAndPropertiesByName(name, emptyList(), null, processor)
|
||||
|
||||
Reference in New Issue
Block a user