Code cleanup: get rid of FirPosition
This commit is contained in:
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.fir.resolve
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.service
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
@@ -16,8 +15,8 @@ import org.jetbrains.kotlin.fir.types.FirUserTypeRef
|
||||
|
||||
interface FirTypeResolver {
|
||||
|
||||
fun resolveType(typeRef: FirTypeRef, scope: FirScope, position: FirPosition): ConeKotlinType
|
||||
fun resolveToSymbol(typeRef: FirTypeRef, scope: FirScope, position: FirPosition): FirClassifierSymbol<*>?
|
||||
fun resolveType(typeRef: FirTypeRef, scope: FirScope): ConeKotlinType
|
||||
fun resolveToSymbol(typeRef: FirTypeRef, scope: FirScope): FirClassifierSymbol<*>?
|
||||
|
||||
companion object {
|
||||
fun getInstance(session: FirSession): FirTypeResolver = session.service()
|
||||
|
||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedImportImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculatorWithJump
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractImportingScope
|
||||
@@ -132,7 +131,7 @@ class MemberScopeTowerLevel(
|
||||
this.processFunctionsByName(name, symbol.cast())
|
||||
}
|
||||
TowerScopeLevel.Token.Objects -> processMembers(processor, explicitExtensionReceiver) { symbol ->
|
||||
this.processClassifiersByName(name, FirPosition.OTHER, symbol.cast())
|
||||
this.processClassifiersByName(name, symbol.cast())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -198,7 +197,7 @@ class ScopeTowerLevel(
|
||||
ProcessorAction.NEXT
|
||||
}
|
||||
}
|
||||
TowerScopeLevel.Token.Objects -> scope.processClassifiersByName(name, FirPosition.OTHER) {
|
||||
TowerScopeLevel.Token.Objects -> scope.processClassifiersByName(name) {
|
||||
processor.consumeCandidate(
|
||||
it as T, dispatchReceiverValue = null,
|
||||
implicitExtensionReceiverValue = null
|
||||
@@ -246,7 +245,7 @@ class QualifiedReceiverTowerLevel(
|
||||
}
|
||||
|
||||
return when (token) {
|
||||
TowerScopeLevel.Token.Objects -> scope.processClassifiersByName(name, FirPosition.OTHER) {
|
||||
TowerScopeLevel.Token.Objects -> scope.processClassifiersByName(name) {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
processor.consumeCandidate(it as T, null, null)
|
||||
}
|
||||
@@ -307,7 +306,7 @@ private fun FirScope.processFunctionsAndConstructorsByName(
|
||||
|
||||
private fun FirScope.getFirstClassifierOrNull(name: Name): FirClassifierSymbol<*>? {
|
||||
var result: FirClassifierSymbol<*>? = null
|
||||
processClassifiersByName(name, FirPosition.OTHER) {
|
||||
processClassifiersByName(name) {
|
||||
result = it
|
||||
ProcessorAction.STOP
|
||||
}
|
||||
|
||||
+6
-9
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
@@ -39,8 +38,7 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver {
|
||||
|
||||
override fun resolveToSymbol(
|
||||
typeRef: FirTypeRef,
|
||||
scope: FirScope,
|
||||
position: FirPosition
|
||||
scope: FirScope
|
||||
): FirClassifierSymbol<*>? {
|
||||
return when (typeRef) {
|
||||
is FirResolvedTypeRef -> typeRef.coneTypeSafe<ConeLookupTagBasedType>()?.lookupTag?.let(symbolProvider::getSymbolByLookupTag)
|
||||
@@ -49,7 +47,7 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver {
|
||||
val qualifierResolver = FirQualifierResolver.getInstance(session)
|
||||
|
||||
var resolvedSymbol: FirClassifierSymbol<*>? = null
|
||||
scope.processClassifiersByName(typeRef.qualifier.first().name, position) { symbol ->
|
||||
scope.processClassifiersByName(typeRef.qualifier.first().name) { symbol ->
|
||||
resolvedSymbol = when (symbol) {
|
||||
is FirClassLikeSymbol<*> -> {
|
||||
if (typeRef.qualifier.size == 1) {
|
||||
@@ -97,13 +95,12 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver {
|
||||
|
||||
override fun resolveType(
|
||||
typeRef: FirTypeRef,
|
||||
scope: FirScope,
|
||||
position: FirPosition
|
||||
scope: FirScope
|
||||
): ConeKotlinType {
|
||||
return when (typeRef) {
|
||||
is FirResolvedTypeRef -> typeRef.type
|
||||
is FirUserTypeRef -> {
|
||||
resolveUserType(typeRef, resolveToSymbol(typeRef, scope, position), scope)
|
||||
resolveUserType(typeRef, resolveToSymbol(typeRef, scope), scope)
|
||||
}
|
||||
is FirErrorTypeRef -> {
|
||||
ConeKotlinErrorType(typeRef.reason)
|
||||
@@ -112,10 +109,10 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver {
|
||||
createFunctionalType(typeRef)
|
||||
}
|
||||
is FirImplicitBuiltinTypeRef -> {
|
||||
resolveToSymbol(typeRef, scope, position)!!.constructType(emptyList(), isNullable = false)
|
||||
resolveToSymbol(typeRef, scope)!!.constructType(emptyList(), isNullable = false)
|
||||
}
|
||||
is FirDelegatedTypeRef -> {
|
||||
resolveType(typeRef.typeRef, scope, position)
|
||||
resolveType(typeRef.typeRef, scope)
|
||||
}
|
||||
is FirDynamicTypeRef -> {
|
||||
ConeKotlinErrorType("Not supported: ${typeRef::class.simpleName}")
|
||||
|
||||
+3
-5
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedFunctionTypeRefImpl
|
||||
@@ -18,13 +17,12 @@ import org.jetbrains.kotlin.fir.visitors.compose
|
||||
|
||||
class FirSpecificTypeResolverTransformer(
|
||||
private val towerScope: FirScope,
|
||||
private val position: FirPosition,
|
||||
override val session: FirSession
|
||||
) : FirAbstractTreeTransformer(phase = FirResolvePhase.SUPER_TYPES) {
|
||||
override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||
val typeResolver = FirTypeResolver.getInstance(session)
|
||||
typeRef.transformChildren(FirSpecificTypeResolverTransformer(towerScope, FirPosition.OTHER, session), null)
|
||||
return transformType(typeRef, typeResolver.resolveType(typeRef, towerScope, position))
|
||||
typeRef.transformChildren(FirSpecificTypeResolverTransformer(towerScope, session), null)
|
||||
return transformType(typeRef, typeResolver.resolveType(typeRef, towerScope))
|
||||
}
|
||||
|
||||
override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||
@@ -32,7 +30,7 @@ class FirSpecificTypeResolverTransformer(
|
||||
functionTypeRef.transformChildren(this, data)
|
||||
return FirResolvedFunctionTypeRefImpl(
|
||||
functionTypeRef.psi,
|
||||
typeResolver.resolveType(functionTypeRef, towerScope, position),
|
||||
typeResolver.resolveType(functionTypeRef, towerScope),
|
||||
functionTypeRef.isMarkedNullable,
|
||||
functionTypeRef.receiverTypeRef,
|
||||
functionTypeRef.returnTypeRef
|
||||
|
||||
+2
-3
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.addImportingScopes
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
@@ -113,7 +112,7 @@ class FirSupertypeResolverTransformer : FirAbstractTreeTransformer(phase = FirRe
|
||||
|
||||
regularClass.addTypeParametersScope()
|
||||
|
||||
val transformer = FirSpecificTypeResolverTransformer(towerScope, FirPosition.SUPER_TYPE_OR_EXPANSION, session)
|
||||
val transformer = FirSpecificTypeResolverTransformer(towerScope, session)
|
||||
val resolvedTypesRefs = regularClass.superTypeRefs.map {
|
||||
transformer.transformTypeRef(it, data).single
|
||||
}
|
||||
@@ -144,7 +143,7 @@ class FirSupertypeResolverTransformer : FirAbstractTreeTransformer(phase = FirRe
|
||||
return withScopeCleanup {
|
||||
typeAlias.addTypeParametersScope()
|
||||
|
||||
val transformer = FirSpecificTypeResolverTransformer(towerScope, FirPosition.SUPER_TYPE_OR_EXPANSION, session)
|
||||
val transformer = FirSpecificTypeResolverTransformer(towerScope, session)
|
||||
val resolvedTypesRef = transformer.transformTypeRef(typeAlias.expandedTypeRef, data).single
|
||||
val resultingTypeRef = resolveLoops(typeAlias, classId, listOf(resolvedTypesRef)).firstOrNull()
|
||||
|
||||
|
||||
+1
-2
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.addImportingScopes
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -78,7 +77,7 @@ open class FirTypeResolveTransformer : FirAbstractTreeTransformerWithSuperTypes(
|
||||
}
|
||||
|
||||
override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||
return FirSpecificTypeResolverTransformer(towerScope, FirPosition.OTHER, session).transformTypeRef(typeRef, data)
|
||||
return FirSpecificTypeResolverTransformer(towerScope, session).transformTypeRef(typeRef, data)
|
||||
}
|
||||
|
||||
override fun transformValueParameter(valueParameter: FirValueParameter, data: Nothing?): CompositeTransformResult<FirStatement> {
|
||||
|
||||
@@ -14,7 +14,6 @@ abstract class FirTypeParameterScope : FirScope() {
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
val matchedTypeParameters = typeParameters[name] ?: return ProcessorAction.NEXT
|
||||
|
||||
+1
-3
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
@@ -39,9 +38,8 @@ abstract class AbstractFirUseSiteScope(
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
return declaredMemberScope.processClassifiersByName(name, position, processor)
|
||||
return declaredMemberScope.processClassifiersByName(name, processor)
|
||||
}
|
||||
}
|
||||
-2
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedImportImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.TowerScopeLevel
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
@@ -26,7 +25,6 @@ abstract class FirAbstractSimpleImportingScope(
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
val imports = simpleImports[name] ?: return ProcessorAction.NONE
|
||||
|
||||
-2
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.TowerScopeLevel
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
@@ -28,7 +27,6 @@ abstract class FirAbstractStarImportingScope(
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
if (starImports.isEmpty() || name in absentClassifierNames) {
|
||||
|
||||
+1
-3
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.resolve.memberScopeProvider
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
|
||||
@@ -113,7 +112,6 @@ class FirClassDeclaredMemberScope(klass: FirRegularClass) : FirScope() {
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction = nestedClassifierScope.processClassifiersByName(name, position, processor)
|
||||
): ProcessorAction = nestedClassifierScope.processClassifiersByName(name, processor)
|
||||
}
|
||||
|
||||
@@ -5,9 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.FirTypeParameterScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.STOP
|
||||
@@ -22,13 +20,11 @@ class FirCompositeScope(
|
||||
) : FirScope() {
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
val scopes = if (reversedPriority) scopes.asReversed() else scopes
|
||||
for (scope in scopes) {
|
||||
if (!position.allowTypeParameters && scope is FirTypeParameterScope) continue
|
||||
if (!scope.processClassifiersByName(name, position, processor)) {
|
||||
if (!scope.processClassifiersByName(name, processor)) {
|
||||
return STOP
|
||||
}
|
||||
}
|
||||
|
||||
-3
@@ -6,9 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
@@ -24,7 +22,6 @@ class FirLazyNestedClassifierScope(
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
val child = classId.createNestedClassId(name)
|
||||
|
||||
-2
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
@@ -27,7 +26,6 @@ class FirNestedClassifierScope(val klass: FirRegularClass) : FirScope() {
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
val matchedClass = classIndex[name] ?: return ProcessorAction.NONE
|
||||
|
||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
@@ -28,7 +27,6 @@ class FirSelfImportingScope(val fqName: FqName, val session: FirSession) : FirSc
|
||||
|
||||
override fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction {
|
||||
if (name.asString().isEmpty()) return ProcessorAction.NONE
|
||||
|
||||
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.name.Name
|
||||
abstract class FirScope {
|
||||
open fun processClassifiersByName(
|
||||
name: Name,
|
||||
position: FirPosition,
|
||||
processor: (FirClassifierSymbol<*>) -> ProcessorAction
|
||||
): ProcessorAction = NEXT
|
||||
|
||||
@@ -30,11 +29,6 @@ abstract class FirScope {
|
||||
): ProcessorAction = NEXT
|
||||
}
|
||||
|
||||
enum class FirPosition(val allowTypeParameters: Boolean = true) {
|
||||
SUPER_TYPE_OR_EXPANSION(allowTypeParameters = false),
|
||||
OTHER
|
||||
}
|
||||
|
||||
enum class ProcessorAction {
|
||||
STOP,
|
||||
NEXT,
|
||||
|
||||
Reference in New Issue
Block a user