[FIR IDE] Replace FIR phase update to FIR IDE
This commit is contained in:
-4
@@ -24,10 +24,6 @@ object FirProjectionRelationChecker : FirBasicDeclarationChecker() {
|
||||
}
|
||||
|
||||
if (declaration is FirTypedDeclaration) {
|
||||
// The body of function contract is not fully resolved.
|
||||
if (declaration.resolvePhase == FirResolvePhase.CONTRACTS) {
|
||||
return
|
||||
}
|
||||
checkTypeRef(declaration.returnTypeRef, context, reporter)
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.createFunctionalType
|
||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.*
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedTypeDeclaration
|
||||
import org.jetbrains.kotlin.fir.returnExpressions
|
||||
@@ -430,7 +429,6 @@ internal fun Candidate.resolveArgument(
|
||||
context: ResolutionContext
|
||||
) {
|
||||
argument.resultType.ensureResolvedTypeDeclaration(context.session)
|
||||
|
||||
val expectedType =
|
||||
prepareExpectedType(context.session, context.bodyResolveComponents.scopeSession, callInfo, argument, parameter, context)
|
||||
resolveArgumentExpression(
|
||||
|
||||
+3
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.resolve.calls
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
||||
import org.jetbrains.kotlin.fir.renderWithType
|
||||
@@ -17,6 +18,7 @@ import org.jetbrains.kotlin.fir.resolve.inference.model.ConeExplicitTypeParamete
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.typeContext
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirTypePlaceholderProjection
|
||||
@@ -27,6 +29,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.model.SimpleConstraintSystem
|
||||
internal object CreateFreshTypeVariableSubstitutorStage : ResolutionStage() {
|
||||
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
||||
val declaration = candidate.symbol.fir
|
||||
candidate.symbol.ensureResolved(FirResolvePhase.STATUS)
|
||||
if (declaration !is FirTypeParameterRefsOwner || declaration.typeParameters.isEmpty()) {
|
||||
candidate.substitutor = ConeSubstitutor.Empty
|
||||
candidate.freshVariables = emptyList()
|
||||
|
||||
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.resolve.inference.*
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.scopes.FirUnstableSmartcastTypeScope
|
||||
import org.jetbrains.kotlin.fir.symbols.SyntheticSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
@@ -153,6 +154,7 @@ internal object MapArguments : ResolutionStage() {
|
||||
|
||||
internal object CheckArguments : CheckerStage() {
|
||||
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
||||
candidate.symbol.ensureResolved(FirResolvePhase.STATUS)
|
||||
val argumentMapping =
|
||||
candidate.argumentMapping ?: error("Argument should be already mapped while checking arguments!")
|
||||
for (argument in callInfo.arguments) {
|
||||
|
||||
-12
@@ -27,21 +27,9 @@ abstract class FirAbstractPhaseTransformer<D>(
|
||||
|
||||
override fun transformFile(file: FirFile, data: D): FirFile {
|
||||
checkSessionConsistency(file)
|
||||
if (file.resolvePhase < transformerPhase) {
|
||||
file.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
|
||||
return super.transformFile(file, data)
|
||||
}
|
||||
|
||||
override fun transformDeclaration(declaration: FirDeclaration, data: D): FirDeclaration {
|
||||
if (declaration.resolvePhase < transformerPhase) {
|
||||
declaration.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
|
||||
return super.transformDeclaration(declaration, data)
|
||||
}
|
||||
|
||||
protected fun checkSessionConsistency(file: FirFile) {
|
||||
assert(session === file.moduleData.session) {
|
||||
"File ${file.name} and transformer ${this::class} have inconsistent sessions"
|
||||
|
||||
-5
@@ -33,8 +33,6 @@ abstract class FirAbstractTreeTransformerWithSuperTypes(
|
||||
protected val classDeclarationsStack = ArrayDeque<FirRegularClass>()
|
||||
protected val towerScope = FirCompositeScope(scopes.asReversed())
|
||||
|
||||
protected open fun needReplacePhase(firDeclaration: FirDeclaration): Boolean = transformerPhase > firDeclaration.resolvePhase
|
||||
|
||||
protected inline fun <T> withScopeCleanup(crossinline l: () -> T): T {
|
||||
val sizeBefore = scopes.size
|
||||
val result = l()
|
||||
@@ -56,9 +54,6 @@ abstract class FirAbstractTreeTransformerWithSuperTypes(
|
||||
firClass: FirClass,
|
||||
data: Any?
|
||||
): FirStatement {
|
||||
if (needReplacePhase(firClass)) {
|
||||
firClass.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
return withScopeCleanup {
|
||||
// Otherwise annotations may try to resolve
|
||||
// themselves as inner classes of the `firClass`
|
||||
|
||||
-1
@@ -42,7 +42,6 @@ open class FirImportResolveTransformer protected constructor(
|
||||
|
||||
override fun transformFile(file: FirFile, data: Any?): FirFile {
|
||||
checkSessionConsistency(file)
|
||||
file.replaceResolvePhase(transformerPhase)
|
||||
return file.also {
|
||||
val prevValue = currentFile
|
||||
currentFile = file
|
||||
|
||||
+1
-11
@@ -5,20 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirRenderer
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
||||
|
||||
object FirPhaseCheckingPhaseManager : FirPhaseManager() {
|
||||
override fun ensureResolved(symbol: FirBasedSymbol<*>, requiredPhase: FirResolvePhase) {
|
||||
val fir = symbol.fir
|
||||
val availablePhase = fir.resolvePhase
|
||||
require(availablePhase >= requiredPhase) {
|
||||
"Expected at least $requiredPhase for $symbol but was $availablePhase\n{${fir.render(renderMode)}"
|
||||
}
|
||||
}
|
||||
|
||||
private val renderMode = FirRenderer.RenderMode.WithResolvePhases.copy(renderDeclarationOrigin = true)
|
||||
override fun ensureResolved(symbol: FirBasedSymbol<*>, requiredPhase: FirResolvePhase) = Unit
|
||||
}
|
||||
|
||||
+7
-40
@@ -169,7 +169,6 @@ open class FirDesignatedStatusResolveTransformer(
|
||||
val computationStatus = statusComputationSession.startComputing(regularClass)
|
||||
forceResolveStatusesOfSupertypes(regularClass)
|
||||
if (computationStatus != StatusComputationSession.StatusComputationStatus.Computed) {
|
||||
updateResolvePhaseOfMembers(regularClass)
|
||||
regularClass.transformStatus(this, statusResolver.resolveStatus(regularClass, containingClass, isLocal = false))
|
||||
}
|
||||
} else {
|
||||
@@ -257,12 +256,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
protected abstract fun FirDeclaration.needResolveMembers(): Boolean
|
||||
protected abstract fun FirDeclaration.needResolveNestedClassifiers(): Boolean
|
||||
|
||||
protected open fun needReplacePhase(firDeclaration: FirDeclaration): Boolean = transformerPhase > firDeclaration.resolvePhase
|
||||
|
||||
override fun transformFile(file: FirFile, data: FirResolvedDeclarationStatus?): FirFile {
|
||||
if (needReplacePhase(file)) {
|
||||
file.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
transformDeclarationContent(file, data)
|
||||
return file
|
||||
}
|
||||
@@ -288,9 +282,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
declaration: FirDeclaration,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirDeclaration {
|
||||
if (needReplacePhase(declaration)) {
|
||||
declaration.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
return when (declaration) {
|
||||
is FirCallableDeclaration -> {
|
||||
if (declaration is FirFunction) {
|
||||
@@ -342,18 +333,17 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
}
|
||||
|
||||
if (declaration.needResolveMembers()) {
|
||||
val members = declarations.filter { it !is FirClassLikeDeclaration }
|
||||
members.forEach { member ->
|
||||
if (needReplacePhase(member)) {
|
||||
member.replaceResolvePhase(transformerPhase)
|
||||
declarations.forEach {
|
||||
if (it !is FirClassLikeDeclaration) {
|
||||
it.transformSingle(this, data)
|
||||
}
|
||||
}
|
||||
members.forEach { member -> member.transformSingle(this, data) }
|
||||
}
|
||||
if (declaration.needResolveNestedClassifiers()) {
|
||||
val members = declarations.filterIsInstance<FirClassLikeDeclaration>()
|
||||
for (klass in members) {
|
||||
klass.transformSingle(this, data)
|
||||
declarations.forEach {
|
||||
if (it is FirClassLikeDeclaration) {
|
||||
it.transformSingle(this, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
return declaration
|
||||
@@ -366,23 +356,10 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
): FirStatement {
|
||||
return storeClass(klass) {
|
||||
klass.typeParameters.forEach { it.transformSingle(this, data) }
|
||||
if (needReplacePhase(klass)) {
|
||||
klass.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
transformDeclarationContent(klass, data)
|
||||
} as FirStatement
|
||||
}
|
||||
|
||||
protected fun updateResolvePhaseOfMembers(regularClass: FirRegularClass) {
|
||||
for (declaration in regularClass.declarations) {
|
||||
if (declaration is FirProperty || declaration is FirSimpleFunction) {
|
||||
if (needReplacePhase(declaration)) {
|
||||
declaration.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected fun forceResolveStatusesOfSupertypes(regularClass: FirRegularClass) {
|
||||
for (superTypeRef in regularClass.superTypeRefs) {
|
||||
forceResolveStatusOfCorrespondingClass(superTypeRef)
|
||||
@@ -460,10 +437,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
statusResolver.resolveStatus(propertyAccessor, containingClass, containingProperty, isLocal = false)
|
||||
)
|
||||
|
||||
if (needReplacePhase(propertyAccessor)) {
|
||||
propertyAccessor.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
|
||||
propertyAccessor.transformValueParameters(this, null)
|
||||
}
|
||||
|
||||
@@ -480,9 +453,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
simpleFunction: FirSimpleFunction,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement {
|
||||
if (needReplacePhase(simpleFunction)) {
|
||||
simpleFunction.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
val resolvedStatus = statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false)
|
||||
simpleFunction.transformStatus(this, resolvedStatus)
|
||||
calculateDeprecations(simpleFunction)
|
||||
@@ -493,9 +463,6 @@ abstract class AbstractFirStatusResolveTransformer(
|
||||
property: FirProperty,
|
||||
data: FirResolvedDeclarationStatus?
|
||||
): FirStatement {
|
||||
if (needReplacePhase(property)) {
|
||||
property.replaceResolvePhase(transformerPhase)
|
||||
}
|
||||
property.transformStatus(this, statusResolver.resolveStatus(property, containingClass, isLocal = false))
|
||||
|
||||
property.getter?.let { transformPropertyAccessor(it, property) }
|
||||
|
||||
-15
@@ -105,17 +105,11 @@ open class FirApplySupertypesTransformer(
|
||||
return element
|
||||
}
|
||||
|
||||
protected open fun needReplacePhase(firDeclaration: FirDeclaration): Boolean = FirResolvePhase.SUPER_TYPES > firDeclaration.resolvePhase
|
||||
|
||||
protected open fun transformDeclarationContent(declaration: FirDeclaration, data: Any?): FirDeclaration {
|
||||
return declaration.transformChildren(this, null) as FirDeclaration
|
||||
}
|
||||
|
||||
override fun transformFile(file: FirFile, data: Any?): FirFile {
|
||||
if (needReplacePhase(file)) {
|
||||
file.replaceResolvePhase(FirResolvePhase.SUPER_TYPES)
|
||||
}
|
||||
|
||||
return transformDeclarationContent(file, null) as FirFile
|
||||
}
|
||||
|
||||
@@ -132,9 +126,6 @@ open class FirApplySupertypesTransformer(
|
||||
// TODO: Replace with an immutable version or transformer
|
||||
firClass.replaceSuperTypeRefs(supertypeRefs)
|
||||
}
|
||||
if (needReplacePhase(firClass)) {
|
||||
firClass.replaceResolvePhase(FirResolvePhase.SUPER_TYPES)
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformAnonymousObject(anonymousObject: FirAnonymousObject, data: Any?): FirStatement {
|
||||
@@ -153,9 +144,6 @@ open class FirApplySupertypesTransformer(
|
||||
|
||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Any?): FirStatement {
|
||||
if (typeAlias.expandedTypeRef is FirResolvedTypeRef) {
|
||||
if (needReplacePhase(typeAlias)) {
|
||||
typeAlias.replaceResolvePhase(FirResolvePhase.SUPER_TYPES)
|
||||
}
|
||||
return typeAlias
|
||||
}
|
||||
val supertypeRefs = getResolvedSupertypeRefs(typeAlias)
|
||||
@@ -166,9 +154,6 @@ open class FirApplySupertypesTransformer(
|
||||
|
||||
// TODO: Replace with an immutable version or transformer
|
||||
typeAlias.replaceExpandedTypeRef(supertypeRefs[0])
|
||||
if (needReplacePhase(typeAlias)) {
|
||||
typeAlias.replaceResolvePhase(FirResolvePhase.SUPER_TYPES)
|
||||
}
|
||||
return typeAlias
|
||||
}
|
||||
}
|
||||
|
||||
-14
@@ -96,9 +96,6 @@ open class FirTypeResolveTransformer(
|
||||
}
|
||||
|
||||
override fun transformEnumEntry(enumEntry: FirEnumEntry, data: Any?): FirEnumEntry {
|
||||
if (needReplacePhase(enumEntry)) {
|
||||
enumEntry.replaceResolvePhase(FirResolvePhase.TYPES)
|
||||
}
|
||||
enumEntry.transformReturnTypeRef(this, data)
|
||||
enumEntry.transformTypeParameters(this, data)
|
||||
enumEntry.transformAnnotations(this, data)
|
||||
@@ -108,14 +105,6 @@ open class FirTypeResolveTransformer(
|
||||
override fun transformProperty(property: FirProperty, data: Any?): FirProperty {
|
||||
return withScopeCleanup {
|
||||
property.addTypeParametersScope()
|
||||
if (needReplacePhase(property)) {
|
||||
property.replaceResolvePhase(FirResolvePhase.TYPES)
|
||||
property.getter?.replaceResolvePhase(FirResolvePhase.TYPES)
|
||||
property.setter?.replaceResolvePhase(FirResolvePhase.TYPES)
|
||||
property.setter?.valueParameters?.forEach {
|
||||
it.replaceResolvePhase(FirResolvePhase.TYPES)
|
||||
}
|
||||
}
|
||||
property.transformTypeParameters(this, data)
|
||||
.transformReturnTypeRef(this, data)
|
||||
.transformReceiverTypeRef(this, data)
|
||||
@@ -136,9 +125,6 @@ open class FirTypeResolveTransformer(
|
||||
|
||||
override fun transformField(field: FirField, data: Any?): FirField {
|
||||
return withScopeCleanup {
|
||||
if (needReplacePhase(field)) {
|
||||
field.replaceResolvePhase(FirResolvePhase.TYPES)
|
||||
}
|
||||
field.transformReturnTypeRef(this, data).transformAnnotations(this, data)
|
||||
field
|
||||
}
|
||||
|
||||
-8
@@ -43,14 +43,6 @@ abstract class FirAbstractBodyResolveTransformer(phase: FirResolvePhase) : FirAb
|
||||
|
||||
final override val session: FirSession get() = components.session
|
||||
|
||||
protected open fun needReplacePhase(firDeclaration: FirDeclaration): Boolean = transformerPhase > firDeclaration.resolvePhase
|
||||
|
||||
fun replaceDeclarationResolvePhaseIfNeeded(firDeclaration: FirDeclaration, newResolvePhase: FirResolvePhase) {
|
||||
if (needReplacePhase(firDeclaration) && newResolvePhase > firDeclaration.resolvePhase) {
|
||||
firDeclaration.replaceResolvePhase(newResolvePhase)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(PrivateForInline::class)
|
||||
internal inline fun <T> withFullBodyResolve(crossinline l: () -> T): T {
|
||||
val shouldSwitchMode = implicitTypeOnly
|
||||
|
||||
-1
@@ -50,7 +50,6 @@ open class FirBodyResolveTransformer(
|
||||
return context.withFile(file, components) {
|
||||
firTowerDataContextCollector?.addFileContext(file, context.towerDataContext)
|
||||
|
||||
file.replaceResolvePhase(transformerPhase)
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
transformDeclarationContent(file, data) as FirFile
|
||||
}
|
||||
|
||||
-10
@@ -71,7 +71,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
|
||||
private fun transformDeclarationContent(declaration: FirDeclaration, data: ResolutionMode): FirDeclaration {
|
||||
transformer.firTowerDataContextCollector?.addDeclarationContext(declaration, context.towerDataContext)
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(declaration, transformerPhase)
|
||||
return transformer.transformDeclarationContent(declaration, data)
|
||||
}
|
||||
|
||||
@@ -89,7 +88,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
callableMember.valueParameters.forEach {
|
||||
it.transformReturnTypeRef(transformer, ResolutionMode.ContextIndependent)
|
||||
it.transformVarargTypeToArrayType()
|
||||
it.replaceResolvePhase(FirResolvePhase.STATUS)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -102,14 +100,12 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
|
||||
private fun doTransformTypeParameters(declaration: FirMemberDeclaration) {
|
||||
for (typeParameter in declaration.typeParameters) {
|
||||
(typeParameter as? FirTypeParameter)?.let { transformer.replaceDeclarationResolvePhaseIfNeeded(it, FirResolvePhase.STATUS) }
|
||||
typeParameter.transformChildren(transformer, ResolutionMode.ContextIndependent)
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformEnumEntry(enumEntry: FirEnumEntry, data: ResolutionMode): FirEnumEntry {
|
||||
if (implicitTypeOnly || enumEntry.initializerResolved) return enumEntry
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(enumEntry, transformerPhase)
|
||||
return context.forEnumEntry {
|
||||
(enumEntry.transformChildren(this, data) as FirEnumEntry)
|
||||
}
|
||||
@@ -152,7 +148,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
property.transformAccessors()
|
||||
}
|
||||
}
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(property, transformerPhase)
|
||||
dataFlowAnalyzer.exitProperty(property)?.let {
|
||||
property.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(it))
|
||||
}
|
||||
@@ -174,7 +169,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
if (field.initializer != null) {
|
||||
storeVariableReturnType(field)
|
||||
}
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(field, transformerPhase)
|
||||
dataFlowAnalyzer.exitField(field)
|
||||
field
|
||||
}
|
||||
@@ -283,7 +277,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
}
|
||||
variable.transformOtherChildren(transformer, ResolutionMode.ContextIndependent)
|
||||
context.storeVariable(variable)
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(variable, transformerPhase)
|
||||
dataFlowAnalyzer.exitLocalVariableDeclaration(variable)
|
||||
return variable
|
||||
}
|
||||
@@ -386,7 +379,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
typeAlias.transformAnnotations(transformer, data)
|
||||
transformer.firTowerDataContextCollector?.addDeclarationContext(typeAlias, context.towerDataContext)
|
||||
typeAlias.transformExpandedTypeRef(transformer, data)
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(typeAlias, transformerPhase)
|
||||
return typeAlias
|
||||
}
|
||||
|
||||
@@ -564,7 +556,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
private fun doTransformConstructor(constructor: FirConstructor, data: ResolutionMode): FirConstructor {
|
||||
val owningClass = context.containerIfAny as? FirRegularClass
|
||||
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(constructor, transformerPhase)
|
||||
dataFlowAnalyzer.enterFunction(constructor)
|
||||
|
||||
constructor.transformTypeParameters(transformer, data)
|
||||
@@ -604,7 +595,6 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
|
||||
|
||||
override fun transformValueParameter(valueParameter: FirValueParameter, data: ResolutionMode): FirStatement {
|
||||
if (valueParameter.returnTypeRef is FirImplicitTypeRef) {
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(valueParameter, transformerPhase)
|
||||
valueParameter.replaceReturnTypeRef(
|
||||
valueParameter.returnTypeRef.errorTypeFromPrototype(
|
||||
ConeSimpleDiagnostic("No type for parameter", DiagnosticKind.ValueParameterWithNoTypeAnnotation)
|
||||
|
||||
+2
-4
@@ -5,9 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirProviderInterceptor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.runStatusResolveForLocalClass
|
||||
@@ -22,7 +20,7 @@ fun <F : FirClassLikeDeclaration> F.runAllPhasesForLocalClass(
|
||||
firTowerDataContextCollector: FirTowerDataContextCollector?,
|
||||
firProviderInterceptor: FirProviderInterceptor?,
|
||||
): F {
|
||||
if (this.resolvePhase > FirResolvePhase.RAW_FIR) return this
|
||||
if (this is FirMemberDeclaration && status is FirResolvedDeclarationStatus) return this
|
||||
if (this is FirRegularClass) {
|
||||
components.context.storeClassIfNotNested(this)
|
||||
}
|
||||
|
||||
-20
@@ -54,7 +54,6 @@ open class FirContractResolveTransformer(
|
||||
simpleFunction: FirSimpleFunction,
|
||||
data: ResolutionMode
|
||||
): FirSimpleFunction {
|
||||
simpleFunction.updatePhase()
|
||||
if (!simpleFunction.hasContractToResolve) {
|
||||
return simpleFunction
|
||||
}
|
||||
@@ -76,17 +75,14 @@ open class FirContractResolveTransformer(
|
||||
}
|
||||
|
||||
override fun transformProperty(property: FirProperty, data: ResolutionMode): FirProperty {
|
||||
property.updatePhase()
|
||||
if (
|
||||
property.getter?.hasContractToResolve != true && property.setter?.hasContractToResolve != true ||
|
||||
property.isLocal || property.delegate != null
|
||||
) {
|
||||
property.updatePhaseForAccessors()
|
||||
return property
|
||||
}
|
||||
if (property is FirSyntheticProperty) {
|
||||
transformSimpleFunction(property.getter.delegate, data)
|
||||
property.updatePhaseForAccessors()
|
||||
return property
|
||||
}
|
||||
context.withProperty(property) {
|
||||
@@ -96,13 +92,7 @@ open class FirContractResolveTransformer(
|
||||
return property
|
||||
}
|
||||
|
||||
private fun FirProperty.updatePhaseForAccessors() {
|
||||
getter?.updatePhase()
|
||||
setter?.updatePhase()
|
||||
}
|
||||
|
||||
override fun transformField(field: FirField, data: ResolutionMode): FirField {
|
||||
field.updatePhase()
|
||||
return field
|
||||
}
|
||||
|
||||
@@ -110,7 +100,6 @@ open class FirContractResolveTransformer(
|
||||
propertyAccessor: FirPropertyAccessor,
|
||||
owner: FirProperty
|
||||
): FirStatement {
|
||||
propertyAccessor.updatePhase()
|
||||
if (!propertyAccessor.hasContractToResolve) {
|
||||
return propertyAccessor
|
||||
}
|
||||
@@ -229,7 +218,6 @@ open class FirContractResolveTransformer(
|
||||
}
|
||||
|
||||
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): FirStatement {
|
||||
regularClass.updatePhase()
|
||||
regularClass.transformCompanionObject(this, data)
|
||||
context.withRegularClass(regularClass, components, forContracts = true) {
|
||||
transformDeclarationContent(regularClass, data)
|
||||
@@ -241,7 +229,6 @@ open class FirContractResolveTransformer(
|
||||
anonymousObject: FirAnonymousObject,
|
||||
data: ResolutionMode
|
||||
): FirStatement {
|
||||
anonymousObject.updatePhase()
|
||||
context.withAnonymousObject(anonymousObject, components) {
|
||||
transformDeclarationContent(anonymousObject, data)
|
||||
}
|
||||
@@ -252,17 +239,14 @@ open class FirContractResolveTransformer(
|
||||
anonymousInitializer: FirAnonymousInitializer,
|
||||
data: ResolutionMode
|
||||
): FirAnonymousInitializer {
|
||||
anonymousInitializer.updatePhase()
|
||||
return anonymousInitializer
|
||||
}
|
||||
|
||||
override fun transformConstructor(constructor: FirConstructor, data: ResolutionMode): FirConstructor {
|
||||
constructor.updatePhase()
|
||||
return constructor
|
||||
}
|
||||
|
||||
override fun transformEnumEntry(enumEntry: FirEnumEntry, data: ResolutionMode): FirEnumEntry {
|
||||
enumEntry.updatePhase()
|
||||
return enumEntry
|
||||
}
|
||||
|
||||
@@ -274,10 +258,6 @@ open class FirContractResolveTransformer(
|
||||
|
||||
private val FirContractDescriptionOwner.hasContractToResolve: Boolean
|
||||
get() = contractDescription is FirLegacyRawContractDescription || contractDescription is FirRawContractDescription
|
||||
|
||||
private fun FirDeclaration.updatePhase() {
|
||||
transformer.replaceDeclarationResolvePhaseIfNeeded(this, FirResolvePhase.CONTRACTS)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-1
@@ -44,7 +44,6 @@ class FirPluginAnnotationsResolveTransformer(
|
||||
checkSessionConsistency(file)
|
||||
if (!extensionService.hasPredicateBasedExtensions) return file
|
||||
val registeredPluginAnnotations = session.registeredPluginAnnotations
|
||||
file.replaceResolvePhase(FirResolvePhase.ANNOTATIONS_FOR_PLUGINS)
|
||||
val newAnnotations = file.resolveAnnotations(registeredPluginAnnotations.annotations, registeredPluginAnnotations.metaAnnotations)
|
||||
if (!newAnnotations.isEmpty) {
|
||||
for (metaAnnotation in newAnnotations.keySet()) {
|
||||
|
||||
-1
@@ -66,7 +66,6 @@ class FirClassDeclaredMemberScope(
|
||||
val symbols = callablesIndex[name] ?: emptyList()
|
||||
for (symbol in symbols) {
|
||||
if (symbol is D) {
|
||||
symbol.ensureResolvedForCalls()
|
||||
processor(symbol)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user