Debugger: remove useless casts from expressions converted from java

This commit is contained in:
Natalia Ukhorskaya
2016-03-29 12:37:06 +03:00
parent a93db70995
commit 2ce9783214
3 changed files with 23 additions and 14 deletions
@@ -42,9 +42,12 @@ import org.jetbrains.kotlin.asJava.KtLightClass
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
import org.jetbrains.kotlin.idea.debugger.KotlinEditorTextProvider
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
import org.jetbrains.kotlin.idea.refactoring.j2kText
import org.jetbrains.kotlin.idea.refactoring.quoteIfNeeded
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.j2k.AfterConversionPass
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
@@ -128,18 +131,22 @@ class KotlinCodeFragmentFactory: CodeFragmentFactory() {
}
if (javaExpression != null) {
val newText = javaExpression.j2kText()
if (newText != null) {
val convertedFragment = KtExpressionCodeFragment(
project,
kotlinCodeFragment.name,
newText,
kotlinCodeFragment.importsToString(),
kotlinCodeFragment.context
)
var convertedFragment: KtExpressionCodeFragment? = null
project.executeWriteCommand("Convert java expression to kotlin in Evaluate Expression") {
val newText = javaExpression.j2kText()
if (newText != null) {
convertedFragment = KtExpressionCodeFragment(
project,
kotlinCodeFragment.name,
newText,
kotlinCodeFragment.importsToString(),
kotlinCodeFragment.context
)
return convertedFragment
AfterConversionPass(project, J2kPostProcessor(formatCode = false)).run(convertedFragment!!, range = null)
}
}
return convertedFragment ?: kotlinCodeFragment
}
}
return kotlinCodeFragment
@@ -1,7 +1,7 @@
LineBreakpoint created at createExpressionSimple.kt:14
LineBreakpoint created at createExpressionSimple.kt:15
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! createExpressionSimple.CreateExpressionSimpleKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
createExpressionSimple.kt:14
createExpressionSimple.kt:15
package createExpressionSimple
class MyClass: Base() {
@@ -14,6 +14,7 @@ open class Base {
fun main(args: Array<String>) {
val myClass: Base = MyClass()
val myBase = Base()
//Breakpoint!
val a = 1
}
@@ -21,12 +22,13 @@ fun main(args: Array<String>) {
// PRINT_FRAME
// DESCRIPTOR_VIEW_OPTIONS: NAME_AND_EXPRESSION
frame = main
local = args (expression = args)
local = myClass (expression = myClass)
field = i (expression = (myClass as MyClass).i)
field = baseI (expression = (myClass as MyClass).baseI)
local = myBase (expression = myBase)
field = baseI (expression = myBase.baseI)
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -10,10 +10,10 @@ open class Base {
fun main(args: Array<String>) {
val myClass: Base = MyClass()
val myBase = Base()
//Breakpoint!
val a = 1
}
// PRINT_FRAME
// DESCRIPTOR_VIEW_OPTIONS: NAME_AND_EXPRESSION