Debugger: remove useless casts from expressions converted from java
This commit is contained in:
@@ -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
|
||||
|
||||
Vendored
+1
-1
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user