From 72af75f3a21742eadece93105b044089661c639d Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 1 Feb 2019 16:28:01 +0300 Subject: [PATCH] Proper file names for inlined code. --- .../jetbrains/kotlin/backend/konan/ir/ModuleIndex.kt | 6 ------ .../kotlin/backend/konan/irasdescriptors/NewIrUtils.kt | 10 ++++++++++ .../kotlin/backend/konan/lower/FunctionInlining.kt | 3 ++- .../konan/serialization/IrModuleDeserializer.kt | 2 -- .../backend/konan/serialization/IrModuleSerializer.kt | 6 ------ .../kotlin/backend/konan/serialization/KonanIr.proto | 1 - 6 files changed, 12 insertions(+), 16 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/ModuleIndex.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/ModuleIndex.kt index 98999c2333f..9246863f88d 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/ModuleIndex.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ir/ModuleIndex.kt @@ -28,7 +28,6 @@ class ModuleIndex(val module: IrModuleFragment) { * Contains all functions declared in [module] */ val functions = mutableMapOf() - val declarationToFile = mutableMapOf() init { val map = mutableMapOf() @@ -60,11 +59,6 @@ class ModuleIndex(val module: IrModuleFragment) { super.visitFunction(declaration) functions[declaration.descriptor] = declaration } - - override fun visitDeclaration(declaration: IrDeclaration) { - super.visitDeclaration(declaration) - declarationToFile[declaration.descriptor] = currentFile!!.path - } }) classes = map diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt index dac620a46c8..c330a32f224 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/irasdescriptors/NewIrUtils.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.ir.SourceManager import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl import org.jetbrains.kotlin.ir.expressions.* @@ -191,3 +192,12 @@ val IrDeclaration.isGetter get() = this is IrSimpleFunction && this == this.corr val IrDeclaration.isSetter get() = this is IrSimpleFunction && this == this.correspondingProperty?.setter val IrDeclaration.isAccessor get() = this.isGetter || this.isSetter + +val IrDeclaration.fileEntry: SourceManager.FileEntry get() = parent.let { + when (it) { + is IrFile -> it.fileEntry + is IrPackageFragment -> TODO("Unknown file") + is IrDeclaration -> it.fileEntry + else -> TODO("Unexpected declaration parent") + } +} \ No newline at end of file diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt index acb3e5b16e2..85a4fa7ddb2 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.backend.konan.descriptors.isFunctionInvoke import org.jetbrains.kotlin.backend.konan.descriptors.needsInlining import org.jetbrains.kotlin.backend.konan.descriptors.resolveFakeOverride import org.jetbrains.kotlin.backend.konan.irasdescriptors.constructedClass +import org.jetbrains.kotlin.backend.konan.irasdescriptors.fileEntry import org.jetbrains.kotlin.backend.konan.irasdescriptors.isInlineParameter import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.FunctionDescriptor @@ -148,7 +149,7 @@ internal class FunctionInlining(val context: Context) : IrElementTransformerVoid } } - val sourceFileName = context.ir.originalModuleIndex.declarationToFile[callee.descriptor.original] ?: "" + val sourceFileName = callee.fileEntry.name val transformer = ParameterSubstitutor() statements.transform { it.transform(transformer, data = null) } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleDeserializer.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleDeserializer.kt index 18028e2fd79..03b7188e41c 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleDeserializer.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleDeserializer.kt @@ -1111,8 +1111,6 @@ abstract class IrModuleDeserializer( parent?.let { declaration.parent = it } - val sourceFileName = proto.fileName - val descriptor = declaration.descriptor if (descriptor is WrappedDeclarationDescriptor<*>) { diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt index f1ade2f5fef..65e44cf5cc2 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/IrModuleSerializer.kt @@ -1039,12 +1039,6 @@ internal class IrModuleSerializer( proto.setDeclarator(declarator) - // TODO disabled for now. - //val fileName = context.ir.originalModuleIndex.declarationToFile[declaration.descriptor] - //proto.fileName = fileName - - proto.fileName = serializeString("some file name") - return proto.build() } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto index 692e9fb4f30..29efff9f644 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIr.proto @@ -616,7 +616,6 @@ message IrDeclaration { required Coordinates coordinates = 2; required Annotations annotations = 3; required IrDeclarator declarator = 4; - required String file_name = 5; // TODO: files should be communicated some other way, I suppose. } /* ------- IrStatements --------------------------------------------- */