All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.fir.resolve.inference.FirInferenceSession.kt Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
/*
 * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.fir.resolve.inference

import org.jetbrains.kotlin.fir.expressions.FirResolvable
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.resolve.calls.Candidate
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.ConeTypeVariableTypeConstructor
import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintStorage

abstract class FirInferenceSession {
    companion object {
        val DEFAULT: FirInferenceSession = object : FirStubInferenceSession() {}
    }

    abstract fun  shouldRunCompletion(call: T): Boolean where T : FirResolvable, T : FirStatement
    abstract val currentConstraintSystem: ConstraintStorage

    abstract fun  addPartiallyResolvedCall(call: T) where T : FirResolvable, T : FirStatement
    abstract fun  addErrorCall(call: T) where T : FirResolvable, T : FirStatement
    abstract fun  addCompetedCall(call: T, candidate: Candidate) where T : FirResolvable, T : FirStatement

    abstract fun inferPostponedVariables(
        lambda: ResolvedLambdaAtom,
        initialStorage: ConstraintStorage,
        // TODO: diagnostic holder
    ): Map?

    abstract fun  writeOnlyStubs(call: T): Boolean where T : FirResolvable, T : FirStatement
    abstract fun  callCompleted(call: T): Boolean where T : FirResolvable, T : FirStatement
    abstract fun  shouldCompleteResolvedSubAtomsOf(call: T): Boolean where T : FirResolvable, T : FirStatement
}

abstract class FirStubInferenceSession : FirInferenceSession() {
    override fun  shouldRunCompletion(call: T): Boolean where T : FirResolvable, T : FirStatement = true

    override val currentConstraintSystem: ConstraintStorage
        get() = ConstraintStorage.Empty

    override fun  addPartiallyResolvedCall(call: T) where T : FirResolvable, T : FirStatement {}
    override fun  addErrorCall(call: T) where T : FirResolvable, T : FirStatement {}
    override fun  addCompetedCall(call: T, candidate: Candidate) where T : FirResolvable, T : FirStatement {}

    override fun inferPostponedVariables(
        lambda: ResolvedLambdaAtom,
        initialStorage: ConstraintStorage
    ): Map? = null

    override fun  writeOnlyStubs(call: T): Boolean where T : FirResolvable, T : FirStatement = false
    override fun  callCompleted(call: T): Boolean where T : FirResolvable, T : FirStatement = false
    override fun  shouldCompleteResolvedSubAtomsOf(call: T): Boolean where T : FirResolvable, T : FirStatement = true
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy