Convert text util methods to extension properties

This commit is contained in:
Mikhael Bogdanov
2017-06-12 11:43:09 +02:00
parent e96d2212da
commit 724ac3cf59
4 changed files with 20 additions and 19 deletions
@@ -167,7 +167,7 @@ class InlineCodegen(
"Couldn't inline method call '" + functionDescriptor.name + "' into\n" + "Couldn't inline method call '" + functionDescriptor.name + "' into\n" +
DescriptorRenderer.DEBUG_TEXT.render(contextDescriptor) + "\n" + DescriptorRenderer.DEBUG_TEXT.render(contextDescriptor) + "\n" +
(element?.text ?: "<no source>") + (element?.text ?: "<no source>") +
if (generateNodeText) "\nCause: " + getNodeText(node) else "", if (generateNodeText) "\nCause: " + node.nodeText else "",
e, callElement e, callElement
) )
} }
@@ -618,7 +618,7 @@ class MethodInliner(
return InlineException("$errorPrefix: $errorSuffix", originalException) return InlineException("$errorPrefix: $errorSuffix", originalException)
} }
else { else {
return InlineException("$errorPrefix: $errorSuffix\nCause: ${getNodeText(node)}", originalException) return InlineException("$errorPrefix: $errorSuffix\nCause: ${node.nodeText}", originalException)
} }
} }
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.codegen.AsmUtil import org.jetbrains.kotlin.codegen.AsmUtil
import org.jetbrains.kotlin.codegen.ExpressionCodegen import org.jetbrains.kotlin.codegen.ExpressionCodegen
import org.jetbrains.kotlin.codegen.JvmCodegenUtil import org.jetbrains.kotlin.codegen.JvmCodegenUtil
import org.jetbrains.kotlin.codegen.MemberCodegen
import org.jetbrains.kotlin.codegen.binding.CodegenBinding import org.jetbrains.kotlin.codegen.binding.CodegenBinding
import org.jetbrains.kotlin.codegen.context.CodegenContext import org.jetbrains.kotlin.codegen.context.CodegenContext
import org.jetbrains.kotlin.codegen.context.CodegenContextUtil import org.jetbrains.kotlin.codegen.context.CodegenContextUtil
@@ -325,17 +324,18 @@ fun firstLabelInChain(node: LabelNode): LabelNode {
return curNode return curNode
} }
fun getNodeText(node: MethodNode?): String { val MethodNode?.nodeText: String
val textifier = Textifier() get() {
if (node == null) { if (this == null) {
return "Not generated" 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 val AbstractInsnNode?.insnText: String
get() { get() {
@@ -348,11 +348,12 @@ val AbstractInsnNode?.insnText: String
return sw.toString().trim { it <= ' ' } return sw.toString().trim { it <= ' ' }
} }
fun getInsnOpcodeText(node: AbstractInsnNode?): String { val AbstractInsnNode?.insnOpcodeText: String
return if (node == null) "null" else Printer.OPCODES[node.opcode] 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 to find just compiled classes then in dependencies
try { try {
val outputFile = state.factory.get(internalName + ".class") val outputFile = state.factory.get(internalName + ".class")
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.codegen.optimization.boxing package org.jetbrains.kotlin.codegen.optimization.boxing
import com.intellij.openapi.util.Pair 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.inline.insnText
import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicMethods
import org.jetbrains.kotlin.codegen.optimization.common.StrictBasicValue import org.jetbrains.kotlin.codegen.optimization.common.StrictBasicValue
@@ -393,7 +393,7 @@ class RedundantBoxingMethodTransformer : MethodTransformer() {
next.getOpcode() == Opcodes.IFNE -> next.getOpcode() == Opcodes.IFNE ->
insertBefore(insn, JumpInsnNode(ifNotEqualOpcode, nextLabel)) insertBefore(insn, JumpInsnNode(ifNotEqualOpcode, nextLabel))
else -> else ->
throw AssertionError("IFEQ or IFNE expected: " + getInsnOpcodeText(next)) throw AssertionError("IFEQ or IFNE expected: ${next.insnOpcodeText}")
} }
} }
} }