From 06fd996266e7e4de0e2057f42d120281fdea5856 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 21 Jun 2017 12:04:20 +0200 Subject: [PATCH] Switch LocalFunctionLowering to LocalDeclarationLowering --- .../common/lower/LocalDeclarationsLowering.kt | 12 ++++++++++-- .../org/jetbrains/kotlin/backend/jvm/JvmLower.kt | 13 +++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index 3c41fa66ce6..b257971a6a4 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -38,7 +38,15 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.parentsWithSelf import org.jetbrains.kotlin.types.KotlinType import java.util.* -class LocalDeclarationsLowering(val context: BackendContext) : DeclarationContainerLoweringPass { +interface LocalNameProvider { + fun localName(descriptor: DeclarationDescriptor): String = + descriptor.name.asString() + companion object { + val DEFAULT = object : LocalNameProvider {} + } +} + +class LocalDeclarationsLowering(val context: BackendContext, val localNameProvider: LocalNameProvider = LocalNameProvider.DEFAULT) : DeclarationContainerLoweringPass { private object DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE : IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE") {} @@ -430,7 +438,7 @@ class LocalDeclarationsLowering(val context: BackendContext) : DeclarationContai return "lambda-${it.index}" } - return descriptor.name.asString() + return localNameProvider.localName(descriptor) } private fun generateNameForLiftedDeclaration(descriptor: DeclarationDescriptor, diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 1f53ff9db91..db5287adbed 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -16,15 +16,12 @@ package org.jetbrains.kotlin.backend.jvm -import org.jetbrains.kotlin.backend.common.lower.KCallableNamePropertyLowering -import org.jetbrains.kotlin.backend.common.lower.LateinitLowering -import org.jetbrains.kotlin.backend.common.lower.LocalFunctionsLowering -import org.jetbrains.kotlin.backend.common.lower.SharedVariablesLowering -import org.jetbrains.kotlin.backend.common.lower.TailrecLowering import org.jetbrains.kotlin.backend.common.lower.* import org.jetbrains.kotlin.backend.common.runOnFilePostfix import org.jetbrains.kotlin.backend.jvm.lower.* +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.ir.declarations.IrFile +import org.jetbrains.kotlin.name.NameUtils class JvmLower(val context: JvmBackendContext) { fun lower(irFile: IrFile) { @@ -44,7 +41,11 @@ class JvmLower(val context: JvmBackendContext) { SharedVariablesLowering(context).runOnFilePostfix(irFile) InnerClassesLowering(context).runOnFilePostfix(irFile) InnerClassConstructorCallsLowering(context).runOnFilePostfix(irFile) - LocalFunctionsLowering(context).runOnFilePostfix(irFile) + LocalDeclarationsLowering(context, + object : LocalNameProvider { + override fun localName(descriptor: DeclarationDescriptor): String = + NameUtils.sanitizeAsJavaIdentifier(super.localName(descriptor)) + }).runOnFilePostfix(irFile) EnumClassLowering(context).runOnFilePostfix(irFile) ObjectClassLowering(context).runOnFilePostfix(irFile) InitializersLowering(context).runOnFilePostfix(irFile)