Debugger: allow to evaluate kotlin expressions in java files
#KT-7549 Fixed
If the context is inside PsiJavaFile, get list of all local variables available in current frame (this logic was removed in 29778311e8 01.12.2015 Drop unnecesary logic about additional context for lambda in debugger). For each variable create KtProperty inside top-level KtFunction in KtFile and set it as contextElement for KtCodeFragment. This file should have all imports from PsiJavaFile. We do not create properties on top-level because they will be highlighted as top-level vals/vars.
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
package jcBlock
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val javaClass = forTests.javaContext.JavaClass()
|
||||
//Breakpoint!
|
||||
javaClass.block()
|
||||
}
|
||||
|
||||
// STEP_INTO: 1
|
||||
// STEP_OVER: 2
|
||||
|
||||
// EXPRESSION: bodyVal
|
||||
// RESULT: 1: I
|
||||
|
||||
// EXPRESSION: thenVal
|
||||
// RESULT: 1: I
|
||||
|
||||
// EXPRESSION: elseVal
|
||||
// RESULT: Unresolved reference: elseVal
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package jcImports
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val javaClass = forTests.javaContext.JavaClass()
|
||||
//Breakpoint!
|
||||
javaClass.imports()
|
||||
}
|
||||
|
||||
// STEP_INTO: 1
|
||||
// STEP_OVER: 1
|
||||
|
||||
// EXPRESSION: list.filter { it == 1 }.size
|
||||
// RESULT: 1: I
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
package jcLocalVariable
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val javaClass = forTests.javaContext.JavaClass()
|
||||
//Breakpoint!
|
||||
javaClass.localVariable()
|
||||
}
|
||||
|
||||
// STEP_INTO: 1
|
||||
// STEP_OVER: 1
|
||||
|
||||
// EXPRESSION: i
|
||||
// RESULT: 1: I
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package jcMarkedObject
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val javaClass = forTests.javaContext.JavaClass()
|
||||
//Breakpoint!
|
||||
javaClass.markObject()
|
||||
}
|
||||
|
||||
// STEP_INTO: 1
|
||||
// STEP_OVER: 1
|
||||
|
||||
// EXPRESSION: i
|
||||
// RESULT: instance of java.lang.Integer(id=ID): Ljava/lang/Integer;
|
||||
|
||||
// EXPRESSION: i_DebugLabel
|
||||
// RESULT: instance of java.lang.Integer(id=ID): Ljava/lang/Integer;
|
||||
|
||||
// DEBUG_LABEL: i = i
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package jcSimple
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val javaClass = forTests.javaContext.JavaClass()
|
||||
//Breakpoint!
|
||||
javaClass.simple()
|
||||
}
|
||||
|
||||
// STEP_INTO: 1
|
||||
|
||||
// EXPRESSION: 1 + 1
|
||||
// RESULT: 2: I
|
||||
Reference in New Issue
Block a user