diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java index 54d0f7601d3..da85f8bdc75 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java @@ -23,7 +23,8 @@ public class NameGenerator { private final String ownerMethod; - private int nextIndex = 1; + private int nextLambdaIndex = 1; + private int nextWhenIndex = 1; private final Map subGenerators = new HashMap(); @@ -32,7 +33,11 @@ public class NameGenerator { } public String genLambdaClassName() { - return ownerMethod + "$" + nextIndex++; + return ownerMethod + "$" + nextLambdaIndex++; + } + + public String genWhenClassNamePrefix() { + return ownerMethod + "$" + nextWhenIndex++; } public NameGenerator subGenerator(String inliningMethod) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TransformationInfo.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TransformationInfo.kt index 2d1f329c6ec..470a51314d4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TransformationInfo.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/TransformationInfo.kt @@ -43,7 +43,7 @@ class WhenMappingTransformationInfo( ) : TransformationInfo { override val newClassName by lazy { - nameGenerator.genLambdaClassName() + oldClassName.substringAfterLast("/") + nameGenerator.genWhenClassNamePrefix() + TRANSFORMED_WHEN_MAPPING_MARKER + oldClassName.substringAfterLast("/").substringAfterLast(TRANSFORMED_WHEN_MAPPING_MARKER) } override fun shouldRegenerate(sameModule: Boolean): Boolean { @@ -57,6 +57,10 @@ class WhenMappingTransformationInfo( override fun createTransformer(inliningContext: InliningContext, sameModule: Boolean): ObjectTransformer<*> { return WhenMappingTransformer(this, inliningContext) } + + companion object { + const val TRANSFORMED_WHEN_MAPPING_MARKER = "\$wm$" + } } class AnonymousObjectTransformationInfo internal constructor(