From edab50ac61b9c319d235c8cdd114d98e1a895e5d Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 14 Sep 2020 14:34:31 +0300 Subject: [PATCH] [FIR] Get rid of FirResolvedTypeRef.isSuspend --- .../kotlin/fir/backend/Fir2IrDeclarationStorage.kt | 3 ++- .../src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt | 1 - .../kotlin/fir/scopes/impl/FirIntegerLiteralTypeScope.kt | 5 +---- .../gen/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt | 1 - .../kotlin/fir/types/FirResolvedFunctionTypeRef.kt | 2 +- .../org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt | 1 - .../fir/types/builder/FirResolvedFunctionTypeRefBuilder.kt | 6 +++--- .../kotlin/fir/types/builder/FirResolvedTypeRefBuilder.kt | 3 --- .../jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt | 1 - .../kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt | 2 +- .../kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt | 1 - .../kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt | 3 --- .../kotlin/fir/tree/generator/BuilderConfigurator.kt | 1 - .../kotlin/fir/tree/generator/ImplementationConfigurator.kt | 1 - .../jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt | 1 - 15 files changed, 8 insertions(+), 24 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 7ae0a5ff973..9b9bb35de86 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -55,6 +55,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.descriptors.DescriptorVisibility +import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType @OptIn(ObsoleteDescriptorBasedAPI::class) class Fir2IrDeclarationStorage( @@ -408,7 +409,7 @@ class Fir2IrDeclarationStorage( ?: if (isLambda) Name.special("") else Name.special("") val visibility = simpleFunction?.visibility ?: Visibilities.Local val isSuspend = - if (isLambda) ((function as FirAnonymousFunction).typeRef as? FirResolvedTypeRef)?.isSuspend == true + if (isLambda) ((function as FirAnonymousFunction).typeRef as? FirResolvedTypeRef)?.type?.isSuspendFunctionType(session) == true else simpleFunction?.isSuspend == true val signature = if (isLocal) null else signatureComposer.composeSignature(function) val created = function.convertWithOffsets { startOffset, endOffset -> diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index 3789546ed04..f50a286b549 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -58,7 +58,6 @@ fun FirFunction<*>.constructFunctionalTypeRef(isSuspend: Boolean = false): FirRe return buildResolvedTypeRef { source = this@constructFunctionalTypeRef.source?.fakeElement(FirFakeSourceElementKind.ImplicitTypeRef) type = functionalType - this.isSuspend = isSuspend } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirIntegerLiteralTypeScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirIntegerLiteralTypeScope.kt index 4a3adb85bfc..c6f9709a3eb 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirIntegerLiteralTypeScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirIntegerLiteralTypeScope.kt @@ -174,10 +174,7 @@ class FirIntegerOperator @FirImplementationDetail constructor( } } -class FirILTTypeRefPlaceHolder( - isUnsigned: Boolean, - override val isSuspend: Boolean = false -) : FirResolvedTypeRef() { +class FirILTTypeRefPlaceHolder(isUnsigned: Boolean) : FirResolvedTypeRef() { override val source: FirSourceElement? get() = null override val annotations: List get() = emptyList() override var type: ConeIntegerLiteralType = ConeIntegerLiteralTypeImpl(0, isUnsigned) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt index 4cc3d4052ff..526efeedbca 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirErrorTypeRef.kt @@ -21,7 +21,6 @@ abstract class FirErrorTypeRef : FirResolvedTypeRef(), FirDiagnosticHolder { abstract override val annotations: List abstract override val type: ConeKotlinType abstract override val delegatedTypeRef: FirTypeRef? - abstract override val isSuspend: Boolean abstract override val diagnostic: ConeDiagnostic override fun accept(visitor: FirVisitor, data: D): R = visitor.visitErrorTypeRef(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt index 1dcd9610696..91424d5ff6a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedFunctionTypeRef.kt @@ -20,11 +20,11 @@ abstract class FirResolvedFunctionTypeRef : FirResolvedTypeRef(), FirFunctionTyp abstract override val annotations: List abstract override val type: ConeKotlinType abstract override val delegatedTypeRef: FirTypeRef? - abstract override val isSuspend: Boolean abstract override val isMarkedNullable: Boolean abstract override val receiverTypeRef: FirTypeRef? abstract override val valueParameters: List abstract override val returnTypeRef: FirTypeRef + abstract override val isSuspend: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedFunctionTypeRef(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt index 0f2e43fb27d..b95d543881a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/FirResolvedTypeRef.kt @@ -20,7 +20,6 @@ abstract class FirResolvedTypeRef : FirPureAbstractElement(), FirTypeRef { abstract override val annotations: List abstract val type: ConeKotlinType abstract val delegatedTypeRef: FirTypeRef? - abstract val isSuspend: Boolean override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedTypeRef(this, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedFunctionTypeRefBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedFunctionTypeRefBuilder.kt index 6c4247de18b..2e0c1a58aa8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedFunctionTypeRefBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedFunctionTypeRefBuilder.kt @@ -27,22 +27,22 @@ class FirResolvedFunctionTypeRefBuilder : FirAnnotationContainerBuilder { override var source: FirSourceElement? = null override val annotations: MutableList = mutableListOf() lateinit var type: ConeKotlinType - var isSuspend: Boolean by kotlin.properties.Delegates.notNull() var isMarkedNullable: Boolean by kotlin.properties.Delegates.notNull() var receiverTypeRef: FirTypeRef? = null val valueParameters: MutableList = mutableListOf() lateinit var returnTypeRef: FirTypeRef + var isSuspend: Boolean by kotlin.properties.Delegates.notNull() override fun build(): FirResolvedFunctionTypeRef { return FirResolvedFunctionTypeRefImpl( source, annotations, type, - isSuspend, isMarkedNullable, receiverTypeRef, valueParameters, returnTypeRef, + isSuspend, ) } @@ -65,10 +65,10 @@ inline fun buildResolvedFunctionTypeRefCopy(original: FirResolvedFunctionTypeRef copyBuilder.source = original.source copyBuilder.annotations.addAll(original.annotations) copyBuilder.type = original.type - copyBuilder.isSuspend = original.isSuspend copyBuilder.isMarkedNullable = original.isMarkedNullable copyBuilder.receiverTypeRef = original.receiverTypeRef copyBuilder.valueParameters.addAll(original.valueParameters) copyBuilder.returnTypeRef = original.returnTypeRef + copyBuilder.isSuspend = original.isSuspend return copyBuilder.apply(init).build() } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedTypeRefBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedTypeRefBuilder.kt index b700d1e2ddf..904b6705cfb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedTypeRefBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/builder/FirResolvedTypeRefBuilder.kt @@ -28,7 +28,6 @@ class FirResolvedTypeRefBuilder : FirAnnotationContainerBuilder { override val annotations: MutableList = mutableListOf() lateinit var type: ConeKotlinType var delegatedTypeRef: FirTypeRef? = null - var isSuspend: Boolean = false @OptIn(FirImplementationDetail::class) override fun build(): FirResolvedTypeRef { @@ -37,7 +36,6 @@ class FirResolvedTypeRefBuilder : FirAnnotationContainerBuilder { annotations, type, delegatedTypeRef, - isSuspend, ) } @@ -61,6 +59,5 @@ inline fun buildResolvedTypeRefCopy(original: FirResolvedTypeRef, init: FirResol copyBuilder.annotations.addAll(original.annotations) copyBuilder.type = original.type copyBuilder.delegatedTypeRef = original.delegatedTypeRef - copyBuilder.isSuspend = original.isSuspend return copyBuilder.apply(init).build() } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt index 112df06909a..0584c1fcea0 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirErrorTypeRefImpl.kt @@ -26,7 +26,6 @@ internal class FirErrorTypeRefImpl( override val annotations: MutableList = mutableListOf() override val type: ConeKotlinType = ConeClassErrorType(diagnostic) override val delegatedTypeRef: FirTypeRef? get() = null - override val isSuspend: Boolean = false override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt index dbd457749c1..087a76d8ed9 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedFunctionTypeRefImpl.kt @@ -22,11 +22,11 @@ internal class FirResolvedFunctionTypeRefImpl( override val source: FirSourceElement?, override val annotations: MutableList, override val type: ConeKotlinType, - override val isSuspend: Boolean, override val isMarkedNullable: Boolean, override var receiverTypeRef: FirTypeRef?, override val valueParameters: MutableList, override var returnTypeRef: FirTypeRef, + override val isSuspend: Boolean, ) : FirResolvedFunctionTypeRef() { override val delegatedTypeRef: FirTypeRef? get() = null diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt index 8bdc2a33429..60d51d73388 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/types/impl/FirResolvedTypeRefImpl.kt @@ -23,7 +23,6 @@ class FirResolvedTypeRefImpl @FirImplementationDetail constructor( override val annotations: MutableList, override val type: ConeKotlinType, override var delegatedTypeRef: FirTypeRef?, - override val isSuspend: Boolean, ) : FirResolvedTypeRef() { override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt index c579d8e6817..9733c9d9721 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/impl/FirImplicitBuiltinTypeRef.kt @@ -34,9 +34,6 @@ sealed class FirImplicitBuiltinTypeRef( override val delegatedTypeRef: FirTypeRef? get() = null - override val isSuspend: Boolean - get() = false - override fun acceptChildren(visitor: FirVisitor, data: D) {} override fun transformChildren(transformer: FirTransformer, data: D): FirElement { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt index e7a2f5fec4e..52ba8e8fe9b 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt @@ -216,7 +216,6 @@ object BuilderConfigurator : AbstractBuilderConfigurator(FirTree } builder(resolvedTypeRef) { - defaultFalse("isSuspend") defaultNull("delegatedTypeRef") withCopy() } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index be786e802ea..91b31083f0e 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -145,7 +145,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() withGetter = true } default("annotations", "mutableListOf()") - defaultFalse("isSuspend") useTypes(coneClassErrorTypeType) } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index df711154008..201d11a5c68 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -561,7 +561,6 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild resolvedTypeRef.configure { +field("type", coneKotlinTypeType) +field("delegatedTypeRef", typeRef, nullable = true) - +booleanField("isSuspend") } typeRefWithNullability.configure {