From 8b3769b88e2e9bc5438b1e9a1abb0258ff2e5c0c Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 1 Apr 2021 22:58:24 +0200 Subject: [PATCH] Remove dependency of ir.serialization.common on ir.backend.common --- .../jetbrains/kotlin/backend/common/ir/IrUtils.kt | 4 ---- .../backend/common/lower/InnerClassesLowering.kt | 2 -- .../ir/backend/js/lower/JsInnerClassesSupport.kt | 7 ++----- .../backend/jvm/codegen/ExpressionCodegen.kt | 1 - .../backend/jvm/codegen/MethodSignatureMapper.kt | 1 - .../backend/jvm/lower/AddContinuationLowering.kt | 3 +-- .../jvm/lower/CollectionStubMethodLowering.kt | 1 - .../backend/jvm/lower/JvmInnerClassesSupport.kt | 7 ++----- .../jvm/lower/indy/LambdaMetafactoryArguments.kt | 1 - .../wasm/lower/WasmSharedVariablesManager.kt | 3 +-- .../kotlin/ir/declarations/IrDeclarationOrigin.kt | 2 ++ .../src/org/jetbrains/kotlin/ir/util/IrUtils.kt | 4 ++++ compiler/ir/serialization.common/build.gradle.kts | 3 --- .../serialization/IrDeclarationDeserializer.kt | 4 +--- .../common/serialization/IrFileSerializer.kt | 5 ++--- .../ir/backend/jvm/serialization/JvmMangler.kt | 2 +- .../kotlin/ir/backend/jvm/serialization/Utils.kt | 14 -------------- 17 files changed, 16 insertions(+), 48 deletions(-) delete mode 100644 compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/Utils.kt diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index fc8b3039b71..314ffde0583 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -697,7 +697,3 @@ fun IrExpression?.isPure( return false } - -fun IrDeclaration.isFromJava(): Boolean = - origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB || - parent is IrDeclaration && (parent as IrDeclaration).isFromJava() diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InnerClassesLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InnerClassesLowering.kt index 255d82e1f82..89ff11a3b70 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InnerClassesLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/InnerClassesLowering.kt @@ -23,8 +23,6 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid interface InnerClassesSupport { - object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS", isSynthetic = true) - fun getOuterThisField(innerClass: IrClass): IrField fun getInnerClassConstructorWithOuterThisParameter(innerClassConstructor: IrConstructor): IrConstructor fun getInnerClassOriginalPrimaryConstructorOrNull(innerClass: IrClass): IrConstructor? diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsInnerClassesSupport.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsInnerClassesSupport.kt index f51092d8de8..5ee4ebe7e5c 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsInnerClassesSupport.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsInnerClassesSupport.kt @@ -16,10 +16,7 @@ import org.jetbrains.kotlin.ir.backend.js.utils.Namer import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor import org.jetbrains.kotlin.ir.builders.declarations.buildField import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter -import org.jetbrains.kotlin.ir.declarations.IrClass -import org.jetbrains.kotlin.ir.declarations.IrConstructor -import org.jetbrains.kotlin.ir.declarations.IrFactory -import org.jetbrains.kotlin.ir.declarations.IrField +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.util.dump import org.jetbrains.kotlin.name.Name @@ -37,7 +34,7 @@ class JsInnerClassesSupport(mapping: JsMapping, private val irFactory: IrFactory ?: throw AssertionError("No containing class for inner class ${innerClass.dump()}") irFactory.buildField { - origin = InnerClassesSupport.FIELD_FOR_OUTER_THIS + origin = IrDeclarationOrigin.FIELD_FOR_OUTER_THIS name = Name.identifier("\$this") type = outerClass.defaultType visibility = DescriptorVisibilities.PROTECTED diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 3b643a9846f..14167c32f77 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.backend.jvm.codegen -import org.jetbrains.kotlin.backend.common.ir.isFromJava import org.jetbrains.kotlin.backend.common.lower.BOUND_RECEIVER_PARAMETER import org.jetbrains.kotlin.backend.common.lower.SYNTHESIZED_INIT_BLOCK import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt index 6511835ba7d..b459e4d843d 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/MethodSignatureMapper.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.backend.jvm.codegen import org.jetbrains.kotlin.backend.common.ir.allOverridden -import org.jetbrains.kotlin.backend.common.ir.isFromJava import org.jetbrains.kotlin.backend.common.ir.isMethodOfAny import org.jetbrains.kotlin.backend.common.ir.isTopLevel import org.jetbrains.kotlin.backend.common.lower.parentsWithSelf diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt index 4511e16dfc6..e61c8339a56 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.backend.jvm.lower import org.jetbrains.kotlin.backend.common.* import org.jetbrains.kotlin.backend.common.ir.* -import org.jetbrains.kotlin.backend.common.lower.InnerClassesSupport import org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering import org.jetbrains.kotlin.backend.common.lower.createIrBuilder import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase @@ -113,7 +112,7 @@ private class AddContinuationLowering(context: JvmBackendContext) : SuspendLower addField { name = Name.identifier("this$0") type = it.type - origin = InnerClassesSupport.FIELD_FOR_OUTER_THIS + origin = IrDeclarationOrigin.FIELD_FOR_OUTER_THIS visibility = JavaDescriptorVisibilities.PACKAGE_VISIBILITY isFinal = true } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CollectionStubMethodLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CollectionStubMethodLowering.kt index 619a78a04cf..ac316b17fde 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CollectionStubMethodLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/CollectionStubMethodLowering.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.backend.jvm.lower import org.jetbrains.kotlin.backend.common.ClassLoweringPass -import org.jetbrains.kotlin.backend.common.ir.isFromJava import org.jetbrains.kotlin.backend.common.lower.createIrBuilder import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase import org.jetbrains.kotlin.backend.jvm.JvmBackendContext diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmInnerClassesSupport.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmInnerClassesSupport.kt index 9a45c70db44..2e3673046a1 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmInnerClassesSupport.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmInnerClassesSupport.kt @@ -14,10 +14,7 @@ import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor import org.jetbrains.kotlin.ir.builders.declarations.buildField import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter -import org.jetbrains.kotlin.ir.declarations.IrClass -import org.jetbrains.kotlin.ir.declarations.IrConstructor -import org.jetbrains.kotlin.ir.declarations.IrFactory -import org.jetbrains.kotlin.ir.declarations.IrField +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.util.dump import org.jetbrains.kotlin.ir.util.parentAsClass @@ -36,7 +33,7 @@ class JvmInnerClassesSupport(private val irFactory: IrFactory) : InnerClassesSup irFactory.buildField { name = Name.identifier("this$0") type = innerClass.parentAsClass.defaultType - origin = InnerClassesSupport.FIELD_FOR_OUTER_THIS + origin = IrDeclarationOrigin.FIELD_FOR_OUTER_THIS visibility = JavaDescriptorVisibilities.PACKAGE_VISIBILITY isFinal = true }.apply { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt index e4836483d74..93465d64943 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/indy/LambdaMetafactoryArguments.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.backend.jvm.lower.indy import org.jetbrains.kotlin.backend.common.ir.allOverridden -import org.jetbrains.kotlin.backend.common.ir.isFromJava import org.jetbrains.kotlin.backend.common.lower.VariableRemapper import org.jetbrains.kotlin.backend.common.lower.parents import org.jetbrains.kotlin.backend.jvm.JvmBackendContext diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt index 17c45f0ebe7..fb3f0515b50 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.backend.wasm.lower import org.jetbrains.kotlin.backend.common.ir.SharedVariablesManager -import org.jetbrains.kotlin.backend.common.lower.InnerClassesSupport import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET @@ -174,7 +173,7 @@ class WasmSharedVariablesManager(val context: JsCommonBackendContext, val builtI return context.irFactory.createField( UNDEFINED_OFFSET, UNDEFINED_OFFSET, - InnerClassesSupport.FIELD_FOR_OUTER_THIS, + IrDeclarationOrigin.FIELD_FOR_OUTER_THIS, symbol, fieldName, builtIns.anyNType, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt index 4d8e24d6ef3..f7202903b62 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt @@ -75,6 +75,8 @@ interface IrDeclarationOrigin { object SYNTHETIC_JAVA_PROPERTY_DELEGATE : IrDeclarationOriginImpl("SYNTHETIC_JAVA_PROPERTY_DELEGATE", isSynthetic = true) + object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS", isSynthetic = true) + val isSynthetic: Boolean get() = false } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index a19476f16d1..e715875dd11 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -548,6 +548,10 @@ val IrDeclaration.isFileClass: Boolean origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS || origin == IrDeclarationOrigin.JVM_MULTIFILE_CLASS +fun IrDeclaration.isFromJava(): Boolean = + origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB || + parent is IrDeclaration && (parent as IrDeclaration).isFromJava() + val IrValueDeclaration.isImmutable: Boolean get() = this is IrValueParameter || this is IrVariable && !isVar diff --git a/compiler/ir/serialization.common/build.gradle.kts b/compiler/ir/serialization.common/build.gradle.kts index 3354f4e6a4b..0756469676a 100644 --- a/compiler/ir/serialization.common/build.gradle.kts +++ b/compiler/ir/serialization.common/build.gradle.kts @@ -4,15 +4,12 @@ plugins { } dependencies { - // TODO: decouple from backend.common compile(project(":compiler:frontend")) - compile(project(":compiler:ir.backend.common")) compile(project(":compiler:ir.tree")) compile(project(":compiler:serialization")) compile(project(":kotlin-util-klib")) compile(project(":kotlin-util-klib-metadata")) compile(project(":compiler:util")) - compile(project(":compiler:ir.backend.common")) compileOnly(project(":kotlin-reflect-api")) compileOnly(intellijCoreDep()) { includeJars("intellij-core") } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt index 76f638a30c4..77481853a5d 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.backend.common.serialization -import org.jetbrains.kotlin.backend.common.lower.InnerClassesSupport import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideClassFilter import org.jetbrains.kotlin.backend.common.serialization.encodings.* @@ -697,8 +696,7 @@ class IrDeclarationDeserializer( } companion object { - private val allKnownDeclarationOrigins = - IrDeclarationOrigin::class.nestedClasses.toList() + InnerClassesSupport.FIELD_FOR_OUTER_THIS::class + private val allKnownDeclarationOrigins = IrDeclarationOrigin::class.nestedClasses.toList() private val declarationOriginIndex = allKnownDeclarationOrigins.map { it.objectInstance as IrDeclarationOriginImpl }.associateBy { it.name } } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt index 09436851bd0..15cc2f1750a 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.backend.common.serialization -import org.jetbrains.kotlin.backend.common.ir.ir2string import org.jetbrains.kotlin.backend.common.serialization.encodings.* import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrElement @@ -965,7 +964,7 @@ open class IrFileSerializer( is IrErrorCallExpression -> operationProto.errorCallExpression = serializeErrorCallExpression(expression) is IrErrorExpression -> operationProto.errorExpression = serializeErrorExpression(expression) else -> { - TODO("Expression serialization not implemented yet: ${ir2string(expression)}.") + TODO("Expression serialization not implemented yet: ${expression.render()}.") } } proto.setOperation(operationProto) @@ -999,7 +998,7 @@ open class IrFileSerializer( proto.syntheticBody = serializeSyntheticBody(statement) } else -> { - TODO("Statement not implemented yet: ${ir2string(statement)}") + TODO("Statement not implemented yet: ${statement.render()}") } } return proto.build() diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt index b6dbce10e83..378de38b318 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.ir.backend.jvm.serialization -import org.jetbrains.kotlin.backend.common.ir.isFromJava import org.jetbrains.kotlin.backend.common.serialization.mangle.KotlinExportChecker import org.jetbrains.kotlin.backend.common.serialization.mangle.KotlinMangleComputer import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant @@ -22,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.idea.MainFunctionDetector import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrFunction +import org.jetbrains.kotlin.ir.util.isFromJava import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor import org.jetbrains.kotlin.load.java.lazy.descriptors.isJavaField diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/Utils.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/Utils.kt deleted file mode 100644 index ea6ff1eddbd..00000000000 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/Utils.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2019 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.ir.backend.jvm.serialization - -import org.jetbrains.kotlin.backend.common.LoggingContext - -object EmptyLoggingContext: LoggingContext { - override var inVerbosePhase = false - - override fun log(message: () -> String) {} -} \ No newline at end of file