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.*
class AnonymousObjectRegenerationInfo internal constructor(
private val ownerInternalName: String,
override val oldClassName: String,
private val needReification: Boolean,
val lambdasToInline: Map<Int, LambdaInfo>,
private val capturedOuterRegenerated: Boolean,
@@ -28,7 +28,7 @@ class AnonymousObjectRegenerationInfo internal constructor(
private val isStaticOrigin: Boolean,
private val nameGenerator: NameGenerator) : RegenerationInfo() {
private val newLambdaType: String by lazy {
override val newClassName: String by lazy {
nameGenerator.genLambdaClassName()
}
@@ -49,10 +49,6 @@ class AnonymousObjectRegenerationInfo internal constructor(
HashMap<Int, LambdaInfo>(), false, alreadyRegenerated, null, isStaticOrigin, nameGenerator) {
}
override fun getOldClassName(): String {
return ownerInternalName
}
override fun shouldRegenerate(sameModule: Boolean): Boolean {
return !alreadyRegenerated && (!lambdasToInline.isEmpty() || !sameModule || capturedOuterRegenerated || needReification)
}
@@ -62,8 +58,4 @@ class AnonymousObjectRegenerationInfo internal constructor(
// because it can be local function from outer scope
return !isStaticOrigin
}
override fun getNewClassName(): String {
return newLambdaType
}
}
@@ -191,7 +191,6 @@ public class AnonymousObjectTransformer extends ObjectTransformer<AnonymousObjec
classBuilder.done();
regenerationInfo.setNewLambdaType(newLambdaType);
return transformationResult;
}
@@ -33,7 +33,7 @@ abstract class ObjectTransformer<T : RegenerationInfo>(val regenerationInfo: T,
protected fun createRemappingClassBuilderViaFactory(inliningContext: InliningContext): ClassBuilder {
val classBuilder = state.factory.newVisitor(
JvmDeclarationOrigin.NO_ORIGIN,
Type.getObjectType(regenerationInfo.getNewClassName()),
Type.getObjectType(regenerationInfo.newClassName),
inliningContext.root.callElement.containingFile
)
@@ -44,7 +44,7 @@ abstract class ObjectTransformer<T : RegenerationInfo>(val regenerationInfo: T,
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 fun getOldClassName(): String
abstract val oldClassName: String
abstract fun getNewClassName(): String
abstract val newClassName: String
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 {
nameGenerator.genLambdaClassName() + oldName
override val newClassName by lazy {
nameGenerator.genLambdaClassName() + oldClassName.substringAfterLast("/")
}
override fun shouldRegenerate(sameModule: Boolean): Boolean {
throw UnsupportedOperationException()
}
override fun getOldClassName(): String {
return oldName
}
override fun getNewClassName(): String {
return newName
}
override fun canRemoveAfterTransformation(): Boolean {
return true
}