FIR resolution: introduce FirResolvePhase & FirAbstractPhaseTransformer
The phase determines which transformers were already applied to declaration. The transformer controls current resolve phase in phasedFir and performs additional resolve if necessary.
This commit is contained in:
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirAbstractMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirModifiableClass
|
||||
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
|
||||
@@ -39,6 +40,7 @@ class FirJavaClass internal constructor(
|
||||
status.isCompanion = false
|
||||
status.isData = false
|
||||
status.isInline = false
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
}
|
||||
|
||||
override val superTypeRefs = mutableListOf<FirTypeRef>()
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirAbstractCallableMember
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirConstructorImpl.Companion.NAME
|
||||
@@ -38,6 +39,7 @@ class FirJavaConstructor(
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
}
|
||||
|
||||
override val delegatedConstructor: FirDelegatedConstructorCall?
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirField
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirAbstractCallableMember
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||
@@ -34,6 +35,7 @@ class FirJavaField(
|
||||
), FirField {
|
||||
init {
|
||||
symbol.bind(this)
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
}
|
||||
|
||||
override val delegate: FirExpression?
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.java.declarations
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirMemberFunctionImpl
|
||||
import org.jetbrains.kotlin.fir.java.types.FirJavaTypeRef
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
@@ -32,5 +33,6 @@ class FirJavaMethod(
|
||||
) {
|
||||
init {
|
||||
status.isStatic = isStatic
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.java.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
||||
import org.jetbrains.kotlin.fir.java.types.FirJavaTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -18,4 +19,8 @@ class FirJavaValueParameter(
|
||||
) : FirValueParameterImpl(
|
||||
session, psi = null, name = name, returnTypeRef = returnTypeRef,
|
||||
defaultValue = null, isCrossinline = false, isNoinline = false, isVararg = isVararg
|
||||
)
|
||||
) {
|
||||
init {
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
}
|
||||
}
|
||||
+3
@@ -175,6 +175,7 @@ class JavaClassEnhancementScope(
|
||||
this.name, newTypeRef,
|
||||
defaultValue ?: newDefaultValue, isCrossinline, isNoinline, isVararg
|
||||
).apply {
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
annotations += valueParameter.annotations
|
||||
}
|
||||
}
|
||||
@@ -197,6 +198,7 @@ class JavaClassEnhancementScope(
|
||||
newReceiverTypeRef, newReturnTypeRef
|
||||
)
|
||||
}.apply {
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
this.valueParameters += newValueParameters
|
||||
this.typeParameters += firMethod.typeParameters
|
||||
}
|
||||
@@ -207,6 +209,7 @@ class JavaClassEnhancementScope(
|
||||
else FirAccessorSymbol(callableId = propertyId!!, accessorId = methodId),
|
||||
name, newReceiverTypeRef, newReturnTypeRef
|
||||
).apply {
|
||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||
this.valueParameters += newValueParameters
|
||||
this.typeParameters += firMethod.typeParameters
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user