From fca1500d48c15faa50ebafdc0c4233c053addc04 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Fri, 4 Aug 2017 14:50:52 +0200 Subject: [PATCH] Clean code --- .../inline/AnonymousObjectTransformer.kt | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt index d93894acbc1..6b2576a3174 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt @@ -253,18 +253,15 @@ class AnonymousObjectTransformer( val newFieldsWithSkipped = getNewFieldsToGenerate(allCapturedBuilder.listCaptured()) val fieldInfoWithSkipped = transformToFieldInfo(Type.getObjectType(transformationInfo.newClassName), newFieldsWithSkipped) - var paramIndex = 0 val capturedFieldInitializer = InstructionAdapter(constructorVisitor) - for (i in fieldInfoWithSkipped.indices) { - val fieldInfo = fieldInfoWithSkipped[i] - if (!newFieldsWithSkipped[i].skip) { + fieldInfoWithSkipped.forEachIndexed { paramIndex, fieldInfo -> + if (!newFieldsWithSkipped[paramIndex].skip) { AsmUtil.genAssignInstanceFieldFromParam(fieldInfo, capturedIndexes[paramIndex], capturedFieldInitializer) } - paramIndex++ } //then transform constructor - //HACK: in inlinining into constructor we access original captured fields with field access not local var + //HACK: in inlining into constructor we access original captured fields with field access not local var //but this fields added to general params (this assumes local var access) not captured one, //so we need to add them to captured params for (info in constructorAdditionalFakeParams) { @@ -288,7 +285,7 @@ class AnonymousObjectTransformer( removeFinallyMarkers(intermediateMethodNode) val first = intermediateMethodNode.instructions.first - val oldStartLabel = if (first is LabelNode) first.label else null + val oldStartLabel = (first as? LabelNode)?.label intermediateMethodNode.accept(object : MethodBodyVisitor(capturedFieldInitializer) { override fun visitLocalVariable( name: String, desc: String, signature: String?, start: Label, end: Label, index: Int @@ -444,16 +441,10 @@ class AnonymousObjectTransformer( } private fun shouldRenameThis0(parentFieldRemapper: FieldRemapper, values: Collection): Boolean { - if (isFirstDeclSiteLambdaFieldRemapper(parentFieldRemapper)) { - for (value in values) { - for (desc in value.capturedVars) { - if (isThis0(desc.fieldName)) { - return true - } - } - } + return if (isFirstDeclSiteLambdaFieldRemapper(parentFieldRemapper)) { + values.any { it.capturedVars.any { isThis0(it.fieldName) }} } - return false + else false } private fun getNewFieldName(oldName: String, originalField: Boolean): String { @@ -470,14 +461,13 @@ class AnonymousObjectTransformer( } private fun addUniqueField(name: String): String { - val existNames = fieldNames.getOrPut(name) { LinkedList() } + val existNames = fieldNames.getOrPut(name) { LinkedList() } val suffix = if (existNames.isEmpty()) "" else "$" + existNames.size val newName = name + suffix existNames.add(newName) return newName } - private fun isFirstDeclSiteLambdaFieldRemapper(parentRemapper: FieldRemapper): Boolean { - return parentRemapper !is RegeneratedLambdaFieldRemapper && parentRemapper !is InlinedLambdaRemapper - } + private fun isFirstDeclSiteLambdaFieldRemapper(parentRemapper: FieldRemapper): Boolean = + parentRemapper !is RegeneratedLambdaFieldRemapper && parentRemapper !is InlinedLambdaRemapper }