Switch LocalFunctionLowering to LocalDeclarationLowering

This commit is contained in:
Mikhael Bogdanov
2017-06-21 12:04:20 +02:00
parent 1f053be289
commit 06fd996266
2 changed files with 17 additions and 8 deletions
@@ -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,
@@ -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)