[FIR] Don't extract contracts in DFA during non-body resolution stages
This commit is contained in:
committed by
Space Team
parent
bde4d003be
commit
faf212ca04
@@ -822,6 +822,8 @@ abstract class FirDataFlowAnalyzer(
|
||||
}
|
||||
|
||||
private fun processConditionalContract(flow: MutableFlow, qualifiedAccess: FirStatement) {
|
||||
// contracts has no effect on non-body resolve stages
|
||||
if (!components.transformer.baseTransformerPhase.isBodyResolve) return
|
||||
val callee = when (qualifiedAccess) {
|
||||
is FirFunctionCall -> qualifiedAccess.toResolvedCallableSymbol()?.fir as? FirSimpleFunction
|
||||
is FirQualifiedAccessExpression -> qualifiedAccess.calleeReference.toResolvedPropertySymbol()?.fir?.getter
|
||||
|
||||
+1
-2
@@ -6,14 +6,13 @@
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer
|
||||
import org.jetbrains.kotlin.fir.withFileAnalysisExceptionWrapping
|
||||
|
||||
abstract class FirAbstractPhaseTransformer<D>(
|
||||
protected val baseTransformerPhase: FirResolvePhase
|
||||
val baseTransformerPhase: FirResolvePhase
|
||||
) : FirDefaultTransformer<D>() {
|
||||
|
||||
open val transformerPhase get() = baseTransformerPhase
|
||||
|
||||
@@ -39,3 +39,10 @@ enum class FirResolvePhase(val noProcessor: Boolean = false) {
|
||||
val ANALYZED_DEPENDENCIES = BODY_RESOLVE
|
||||
}
|
||||
}
|
||||
|
||||
val FirResolvePhase.isBodyResolve: Boolean
|
||||
get() = when (this) {
|
||||
FirResolvePhase.BODY_RESOLVE,
|
||||
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user