[FIR] FirSyntheticProperty: drop resolveState
Such properties should be stateless and just wrap over accessories. Logic inside contract transformer is unreachable because we do not allow lazy resolution for synthetic properties. ^KT-61990
This commit is contained in:
committed by
Space Team
parent
bb40ce0bfc
commit
b8000d611a
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor
|
||||
|
||||
/**
|
||||
@@ -50,10 +51,10 @@ fun FirResolvePhase.asResolveState(): FirResolvedToPhaseState = FirResolvedToPha
|
||||
|
||||
@OptIn(ResolveStateAccess::class)
|
||||
val FirElementWithResolveState.resolvePhase: FirResolvePhase
|
||||
get() = if (this is FirSyntheticPropertyAccessor) {
|
||||
delegate.resolvePhase
|
||||
} else {
|
||||
resolveState.resolvePhase
|
||||
get() = when (this) {
|
||||
is FirSyntheticProperty -> setter?.resolvePhase?.let { minOf(it, getter.resolvePhase) } ?: getter.resolvePhase
|
||||
is FirSyntheticPropertyAccessor -> delegate.resolvePhase
|
||||
else -> resolveState.resolvePhase
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
-6
@@ -27,7 +27,6 @@ class FirSyntheticProperty @FirImplementationDetail internal constructor(
|
||||
override val isVar: Boolean,
|
||||
override val symbol: FirSyntheticPropertySymbol,
|
||||
override val status: FirDeclarationStatus,
|
||||
resolvePhase: FirResolvePhase,
|
||||
override val getter: FirSyntheticPropertyAccessor,
|
||||
override val setter: FirSyntheticPropertyAccessor? = null,
|
||||
override val deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider
|
||||
@@ -36,11 +35,6 @@ class FirSyntheticProperty @FirImplementationDetail internal constructor(
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
init {
|
||||
@OptIn(ResolveStateAccess::class)
|
||||
this.resolveState = resolvePhase.asResolveState()
|
||||
}
|
||||
|
||||
override val backingField: FirBackingField? get() = null
|
||||
|
||||
override val returnTypeRef: FirTypeRef
|
||||
|
||||
-2
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.declarations.DeprecationsProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.resolvePhase
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -29,7 +28,6 @@ class FirSyntheticPropertyBuilder {
|
||||
fun build(): FirSyntheticProperty = FirSyntheticProperty(
|
||||
moduleData, name, isVar = delegateSetter != null, symbol = symbol,
|
||||
status = status ?: delegateGetter.status,
|
||||
resolvePhase = delegateGetter.resolvePhase,
|
||||
getter = FirSyntheticPropertyAccessor(delegateGetter, isGetter = true, symbol),
|
||||
setter = delegateSetter?.let { FirSyntheticPropertyAccessor(it, isGetter = false, symbol) },
|
||||
deprecationsProvider = deprecationsProvider
|
||||
|
||||
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.fir.renderer
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||
import org.jetbrains.kotlin.fir.declarations.ResolveStateAccess
|
||||
import org.jetbrains.kotlin.fir.declarations.resolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
|
||||
@@ -16,10 +18,10 @@ class FirResolvePhaseRenderer {
|
||||
|
||||
fun render(element: FirElementWithResolveState) {
|
||||
@OptIn(ResolveStateAccess::class)
|
||||
val text = if (element is FirSyntheticPropertyAccessor) {
|
||||
"[<synthetic> ${element.delegate.resolveState}] "
|
||||
} else {
|
||||
"[${element.resolveState}] "
|
||||
val text = when (element) {
|
||||
is FirSyntheticProperty -> "[<synthetic> ${element.resolvePhase}] "
|
||||
is FirSyntheticPropertyAccessor -> "[<synthetic> ${element.delegate.resolveState}] "
|
||||
else -> "[${element.resolveState}] "
|
||||
}
|
||||
|
||||
printer.print(text)
|
||||
@@ -28,4 +30,4 @@ class FirResolvePhaseRenderer {
|
||||
fun render(element: FirAnnotationCall) {
|
||||
printer.print("[${element.annotationResolvePhase}]")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user