From 724ac3cf5941665fd0cb86d14b4fd862a6b261d9 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 12 Jun 2017 11:43:09 +0200 Subject: [PATCH] Convert text util methods to extension properties --- .../kotlin/codegen/inline/InlineCodegen.kt | 2 +- .../kotlin/codegen/inline/MethodInliner.kt | 2 +- .../codegen/inline/inlineCodegenUtils.kt | 31 ++++++++++--------- .../RedundantBoxingMethodTransformer.kt | 4 +-- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt index cca47fa795b..e01b6632895 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt @@ -167,7 +167,7 @@ class InlineCodegen( "Couldn't inline method call '" + functionDescriptor.name + "' into\n" + DescriptorRenderer.DEBUG_TEXT.render(contextDescriptor) + "\n" + (element?.text ?: "") + - if (generateNodeText) "\nCause: " + getNodeText(node) else "", + if (generateNodeText) "\nCause: " + node.nodeText else "", e, callElement ) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt index 28f34955345..b7a59f87f5e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/MethodInliner.kt @@ -618,7 +618,7 @@ class MethodInliner( return InlineException("$errorPrefix: $errorSuffix", originalException) } else { - return InlineException("$errorPrefix: $errorSuffix\nCause: ${getNodeText(node)}", originalException) + return InlineException("$errorPrefix: $errorSuffix\nCause: ${node.nodeText}", originalException) } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt index 72529fed5da..f0c5f267d5b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.codegen.ExpressionCodegen import org.jetbrains.kotlin.codegen.JvmCodegenUtil -import org.jetbrains.kotlin.codegen.MemberCodegen import org.jetbrains.kotlin.codegen.binding.CodegenBinding import org.jetbrains.kotlin.codegen.context.CodegenContext import org.jetbrains.kotlin.codegen.context.CodegenContextUtil @@ -325,17 +324,18 @@ fun firstLabelInChain(node: LabelNode): LabelNode { return curNode } -fun getNodeText(node: MethodNode?): String { - val textifier = Textifier() - if (node == null) { - return "Not generated" +val MethodNode?.nodeText: String + get() { + if (this == null) { + return "Not generated" + } + val textifier = Textifier() + accept(TraceMethodVisitor(textifier)) + val sw = StringWriter() + textifier.print(PrintWriter(sw)) + sw.flush() + return name + " " + desc + ":\n" + sw.buffer.toString() } - node.accept(TraceMethodVisitor(textifier)) - val sw = StringWriter() - textifier.print(PrintWriter(sw)) - sw.flush() - return node.name + " " + node.desc + ":\n" + sw.buffer.toString() -} val AbstractInsnNode?.insnText: String get() { @@ -348,11 +348,12 @@ val AbstractInsnNode?.insnText: String return sw.toString().trim { it <= ' ' } } -fun getInsnOpcodeText(node: AbstractInsnNode?): String { - return if (node == null) "null" else Printer.OPCODES[node.opcode] -} +val AbstractInsnNode?.insnOpcodeText: String + get() { + return if (this == null) "null" else Printer.OPCODES[opcode] + } -internal /* package */ fun buildClassReaderByInternalName(state: GenerationState, internalName: String): ClassReader { +internal fun buildClassReaderByInternalName(state: GenerationState, internalName: String): ClassReader { //try to find just compiled classes then in dependencies try { val outputFile = state.factory.get(internalName + ".class") diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt index c591c102430..23fe0e732da 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/boxing/RedundantBoxingMethodTransformer.kt @@ -17,7 +17,7 @@ package org.jetbrains.kotlin.codegen.optimization.boxing import com.intellij.openapi.util.Pair -import org.jetbrains.kotlin.codegen.inline.getInsnOpcodeText +import org.jetbrains.kotlin.codegen.inline.insnOpcodeText import org.jetbrains.kotlin.codegen.inline.insnText import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods import org.jetbrains.kotlin.codegen.optimization.common.StrictBasicValue @@ -393,7 +393,7 @@ class RedundantBoxingMethodTransformer : MethodTransformer() { next.getOpcode() == Opcodes.IFNE -> insertBefore(insn, JumpInsnNode(ifNotEqualOpcode, nextLabel)) else -> - throw AssertionError("IFEQ or IFNE expected: " + getInsnOpcodeText(next)) + throw AssertionError("IFEQ or IFNE expected: ${next.insnOpcodeText}") } } }