[FIR] Move ReturnTypeCalculator to :fir:providers module
Also make it an abstract class and turn ReturnTypeCalculatorForFullBodyResolve into object (because it has no state and there is no need to create different instances of it)
This commit is contained in:
committed by
teamcity
parent
ff1e2c05bf
commit
effa3f197a
+1
-1
@@ -21,7 +21,7 @@ class SimpleDiagnosticsCollector(
|
|||||||
return CheckerRunningDiagnosticCollectorVisitor(
|
return CheckerRunningDiagnosticCollectorVisitor(
|
||||||
MutableCheckerContext(
|
MutableCheckerContext(
|
||||||
this,
|
this,
|
||||||
ReturnTypeCalculatorForFullBodyResolve()
|
ReturnTypeCalculatorForFullBodyResolve
|
||||||
),
|
),
|
||||||
components
|
components
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2022 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.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -9,8 +9,8 @@ import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
|
|
||||||
interface ReturnTypeCalculator {
|
abstract class ReturnTypeCalculator {
|
||||||
fun tryCalculateReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef
|
abstract fun tryCalculateReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef
|
||||||
|
|
||||||
fun tryCalculateReturnType(symbol: FirCallableSymbol<*>): FirResolvedTypeRef {
|
fun tryCalculateReturnType(symbol: FirCallableSymbol<*>): FirResolvedTypeRef {
|
||||||
return tryCalculateReturnType(symbol.fir)
|
return tryCalculateReturnType(symbol.fir)
|
||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2022 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.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
|||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
||||||
|
|
||||||
class ReturnTypeCalculatorForFullBodyResolve : ReturnTypeCalculator {
|
object ReturnTypeCalculatorForFullBodyResolve : ReturnTypeCalculator() {
|
||||||
override fun tryCalculateReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef {
|
override fun tryCalculateReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef {
|
||||||
val returnTypeRef = declaration.returnTypeRef
|
val returnTypeRef = declaration.returnTypeRef
|
||||||
if (returnTypeRef is FirResolvedTypeRef) return returnTypeRef
|
if (returnTypeRef is FirResolvedTypeRef) return returnTypeRef
|
||||||
+1
-2
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirProviderInterceptor
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculatorForFullBodyResolve
|
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculatorForFullBodyResolve
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.ScopeClassDeclaration
|
import org.jetbrains.kotlin.fir.resolve.transformers.ScopeClassDeclaration
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirCompositeScope
|
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
@@ -29,7 +28,7 @@ open class FirBodyResolveTransformer(
|
|||||||
phase: FirResolvePhase,
|
phase: FirResolvePhase,
|
||||||
override var implicitTypeOnly: Boolean,
|
override var implicitTypeOnly: Boolean,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
val returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve(),
|
val returnTypeCalculator: ReturnTypeCalculator = ReturnTypeCalculatorForFullBodyResolve,
|
||||||
outerBodyResolveContext: BodyResolveContext? = null,
|
outerBodyResolveContext: BodyResolveContext? = null,
|
||||||
val firTowerDataContextCollector: FirTowerDataContextCollector? = null,
|
val firTowerDataContextCollector: FirTowerDataContextCollector? = null,
|
||||||
val firProviderInterceptor: FirProviderInterceptor? = null,
|
val firProviderInterceptor: FirProviderInterceptor? = null,
|
||||||
|
|||||||
+1
-1
@@ -204,7 +204,7 @@ private class ReturnTypeCalculatorWithJump(
|
|||||||
returnTypeCalculator: ReturnTypeCalculator,
|
returnTypeCalculator: ReturnTypeCalculator,
|
||||||
outerBodyResolveContext: BodyResolveContext?
|
outerBodyResolveContext: BodyResolveContext?
|
||||||
) -> FirDesignatedBodyResolveTransformerForReturnTypeCalculator = ::FirDesignatedBodyResolveTransformerForReturnTypeCalculator,
|
) -> FirDesignatedBodyResolveTransformerForReturnTypeCalculator = ::FirDesignatedBodyResolveTransformerForReturnTypeCalculator,
|
||||||
) : ReturnTypeCalculator {
|
) : ReturnTypeCalculator() {
|
||||||
|
|
||||||
@OptIn(PrivateForInline::class)
|
@OptIn(PrivateForInline::class)
|
||||||
var outerBodyResolveContext: BodyResolveContext? = null
|
var outerBodyResolveContext: BodyResolveContext? = null
|
||||||
|
|||||||
+1
-1
@@ -42,7 +42,7 @@ fun <F : FirClassLikeDeclaration> F.runContractResolveForLocalClass(
|
|||||||
targetedClasses: Set<FirClassLikeDeclaration>
|
targetedClasses: Set<FirClassLikeDeclaration>
|
||||||
): F {
|
): F {
|
||||||
val newContext = outerBodyResolveContext.createSnapshotForLocalClasses(
|
val newContext = outerBodyResolveContext.createSnapshotForLocalClasses(
|
||||||
ReturnTypeCalculatorForFullBodyResolve(),
|
ReturnTypeCalculatorForFullBodyResolve,
|
||||||
targetedClasses
|
targetedClasses
|
||||||
)
|
)
|
||||||
val transformer = FirContractResolveTransformer(session, scopeSession, newContext)
|
val transformer = FirContractResolveTransformer(session, scopeSession, newContext)
|
||||||
|
|||||||
Reference in New Issue
Block a user