Old/NewClassName funs in RefenerationInfo converted to properties

This commit is contained in:
Michael Bogdanov
2016-03-11 14:18:57 +03:00
parent bbb838765c
commit 56d8e4d170
4 changed files with 9 additions and 26 deletions
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.codegen.inline
import java.util.* import java.util.*
class AnonymousObjectRegenerationInfo internal constructor( class AnonymousObjectRegenerationInfo internal constructor(
private val ownerInternalName: String, override val oldClassName: String,
private val needReification: Boolean, private val needReification: Boolean,
val lambdasToInline: Map<Int, LambdaInfo>, val lambdasToInline: Map<Int, LambdaInfo>,
private val capturedOuterRegenerated: Boolean, private val capturedOuterRegenerated: Boolean,
@@ -28,7 +28,7 @@ class AnonymousObjectRegenerationInfo internal constructor(
private val isStaticOrigin: Boolean, private val isStaticOrigin: Boolean,
private val nameGenerator: NameGenerator) : RegenerationInfo() { private val nameGenerator: NameGenerator) : RegenerationInfo() {
private val newLambdaType: String by lazy { override val newClassName: String by lazy {
nameGenerator.genLambdaClassName() nameGenerator.genLambdaClassName()
} }
@@ -49,10 +49,6 @@ class AnonymousObjectRegenerationInfo internal constructor(
HashMap<Int, LambdaInfo>(), false, alreadyRegenerated, null, isStaticOrigin, nameGenerator) { HashMap<Int, LambdaInfo>(), false, alreadyRegenerated, null, isStaticOrigin, nameGenerator) {
} }
override fun getOldClassName(): String {
return ownerInternalName
}
override fun shouldRegenerate(sameModule: Boolean): Boolean { override fun shouldRegenerate(sameModule: Boolean): Boolean {
return !alreadyRegenerated && (!lambdasToInline.isEmpty() || !sameModule || capturedOuterRegenerated || needReification) return !alreadyRegenerated && (!lambdasToInline.isEmpty() || !sameModule || capturedOuterRegenerated || needReification)
} }
@@ -62,8 +58,4 @@ class AnonymousObjectRegenerationInfo internal constructor(
// because it can be local function from outer scope // because it can be local function from outer scope
return !isStaticOrigin return !isStaticOrigin
} }
override fun getNewClassName(): String {
return newLambdaType
}
} }
@@ -191,7 +191,6 @@ public class AnonymousObjectTransformer extends ObjectTransformer<AnonymousObjec
classBuilder.done(); classBuilder.done();
regenerationInfo.setNewLambdaType(newLambdaType);
return transformationResult; return transformationResult;
} }
@@ -33,7 +33,7 @@ abstract class ObjectTransformer<T : RegenerationInfo>(val regenerationInfo: T,
protected fun createRemappingClassBuilderViaFactory(inliningContext: InliningContext): ClassBuilder { protected fun createRemappingClassBuilderViaFactory(inliningContext: InliningContext): ClassBuilder {
val classBuilder = state.factory.newVisitor( val classBuilder = state.factory.newVisitor(
JvmDeclarationOrigin.NO_ORIGIN, JvmDeclarationOrigin.NO_ORIGIN,
Type.getObjectType(regenerationInfo.getNewClassName()), Type.getObjectType(regenerationInfo.newClassName),
inliningContext.root.callElement.containingFile inliningContext.root.callElement.containingFile
) )
@@ -44,7 +44,7 @@ abstract class ObjectTransformer<T : RegenerationInfo>(val regenerationInfo: T,
fun createClassReader(): ClassReader { fun createClassReader(): ClassReader {
return InlineCodegenUtil.buildClassReaderByInternalName(state, regenerationInfo.getOldClassName()) return InlineCodegenUtil.buildClassReaderByInternalName(state, regenerationInfo.oldClassName)
} }
} }
@@ -18,9 +18,9 @@ package org.jetbrains.kotlin.codegen.inline
abstract class RegenerationInfo() { abstract class RegenerationInfo() {
abstract fun getOldClassName(): String abstract val oldClassName: String
abstract fun getNewClassName(): String abstract val newClassName: String
abstract fun shouldRegenerate(sameModule: Boolean): Boolean abstract fun shouldRegenerate(sameModule: Boolean): Boolean
@@ -28,24 +28,16 @@ abstract class RegenerationInfo() {
} }
class WhenMappingRegenerationInfo(val oldName: String, val nameGenerator: NameGenerator) : RegenerationInfo() { class WhenMappingRegenerationInfo(override val oldClassName: String, val nameGenerator: NameGenerator) : RegenerationInfo() {
val newName by lazy { override val newClassName by lazy {
nameGenerator.genLambdaClassName() + oldName nameGenerator.genLambdaClassName() + oldClassName.substringAfterLast("/")
} }
override fun shouldRegenerate(sameModule: Boolean): Boolean { override fun shouldRegenerate(sameModule: Boolean): Boolean {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
override fun getOldClassName(): String {
return oldName
}
override fun getNewClassName(): String {
return newName
}
override fun canRemoveAfterTransformation(): Boolean { override fun canRemoveAfterTransformation(): Boolean {
return true return true
} }