[FIR] Get rid of FirTypedDeclaration
`FirTypedDeclaration` has only one inheritor (`FirCallableDeclaration`), so there is no much sense to keep this class
This commit is contained in:
committed by
teamcity
parent
ae0ce57b2c
commit
5a3b397552
+3
-3
@@ -5,14 +5,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
|
||||
abstract class ReturnTypeCalculator {
|
||||
abstract fun tryCalculateReturnTypeOrNull(declaration: FirTypedDeclaration): FirResolvedTypeRef?
|
||||
abstract fun tryCalculateReturnTypeOrNull(declaration: FirCallableDeclaration): FirResolvedTypeRef?
|
||||
|
||||
fun tryCalculateReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef {
|
||||
fun tryCalculateReturnType(declaration: FirCallableDeclaration): FirResolvedTypeRef {
|
||||
return tryCalculateReturnTypeOrNull(declaration)!!
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
||||
|
||||
object ReturnTypeCalculatorForFullBodyResolve : ReturnTypeCalculator() {
|
||||
override fun tryCalculateReturnTypeOrNull(declaration: FirTypedDeclaration): FirResolvedTypeRef? {
|
||||
override fun tryCalculateReturnTypeOrNull(declaration: FirCallableDeclaration): FirResolvedTypeRef? {
|
||||
val returnTypeRef = declaration.returnTypeRef
|
||||
if (returnTypeRef is FirResolvedTypeRef) return returnTypeRef
|
||||
if (declaration.origin.fromSupertypes) {
|
||||
|
||||
+5
-5
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.scopes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
@@ -16,16 +16,16 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
|
||||
abstract class FakeOverrideTypeCalculator {
|
||||
abstract fun computeReturnType(declaration: FirTypedDeclaration): FirTypeRef?
|
||||
abstract fun computeReturnType(declaration: FirCallableDeclaration): FirTypeRef?
|
||||
|
||||
object DoNothing : FakeOverrideTypeCalculator() {
|
||||
override fun computeReturnType(declaration: FirTypedDeclaration): FirTypeRef {
|
||||
override fun computeReturnType(declaration: FirCallableDeclaration): FirTypeRef {
|
||||
return declaration.returnTypeRef
|
||||
}
|
||||
}
|
||||
|
||||
object Forced : FakeOverrideTypeCalculator() {
|
||||
override fun computeReturnType(declaration: FirTypedDeclaration): FirResolvedTypeRef? {
|
||||
override fun computeReturnType(declaration: FirCallableDeclaration): FirResolvedTypeRef? {
|
||||
val fakeOverrideSubstitution = declaration.attributes.fakeOverrideSubstitution
|
||||
?: return declaration.returnTypeRef as? FirResolvedTypeRef
|
||||
synchronized(fakeOverrideSubstitution) {
|
||||
@@ -33,7 +33,7 @@ abstract class FakeOverrideTypeCalculator {
|
||||
return declaration.returnTypeRef as FirResolvedTypeRef
|
||||
}
|
||||
val (substitutor, baseSymbol) = fakeOverrideSubstitution
|
||||
val baseDeclaration = baseSymbol.fir as FirTypedDeclaration
|
||||
val baseDeclaration = baseSymbol.fir as FirCallableDeclaration
|
||||
val baseReturnType = computeReturnType(baseDeclaration)?.type ?: return null
|
||||
declaration.attributes.fakeOverrideSubstitution = null
|
||||
val coneType = substitutor.substituteOrSelf(baseReturnType)
|
||||
|
||||
+1
-3
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
import org.jetbrains.kotlin.fir.isIntersectionOverride
|
||||
import org.jetbrains.kotlin.fir.isSubstitutionOverride
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
@@ -74,8 +73,7 @@ class FirScopeWithFakeOverrideTypeCalculator(
|
||||
return delegate.getClassifierNames()
|
||||
}
|
||||
|
||||
private fun updateReturnType(declaration: FirTypedDeclaration) {
|
||||
if (declaration !is FirCallableDeclaration) return
|
||||
private fun updateReturnType(declaration: FirCallableDeclaration) {
|
||||
if (declaration.isSubstitutionOverride || declaration.isIntersectionOverride) {
|
||||
fakeOverrideTypeCalculator.computeReturnType(declaration)
|
||||
}
|
||||
|
||||
@@ -563,8 +563,8 @@ fun ConeKotlinType.isSubtypeOf(superType: ConeKotlinType, session: FirSession):
|
||||
this, superType,
|
||||
)
|
||||
|
||||
fun FirTypedDeclaration.isSubtypeOf(
|
||||
other: FirTypedDeclaration,
|
||||
fun FirCallableDeclaration.isSubtypeOf(
|
||||
other: FirCallableDeclaration,
|
||||
typeCheckerContext: TypeCheckerState
|
||||
): Boolean {
|
||||
return AbstractTypeChecker.isSubtypeOf(
|
||||
|
||||
Reference in New Issue
Block a user