Debugger: remove usage of JDIEval during finding local variable in frame because it invokeMethod (loadClass) for find field type which invalidates frame

This commit is contained in:
Natalia Ukhorskaya
2015-02-06 15:25:33 +03:00
parent 3802957c15
commit 187806d061
17 changed files with 153 additions and 43 deletions
@@ -7,6 +7,7 @@ fun main(args: Array<String>) {
class A {
class object {
val prop = 1
fun myFun() = 1
}
fun test() {
@@ -24,4 +25,7 @@ fun foo(f: () -> Unit) {
// PRINT_FRAME
// EXPRESSION: prop
// RESULT: 1: I
// EXPRESSION: myFun()
// RESULT: 1: I
@@ -6,10 +6,12 @@ fun main(args: Array<String>) {
class A {
val aProp = 1
fun aMyFun() = 1
}
class Outer {
val outerProp = 1
fun outerMyFun() = 1
fun A.foo() {
val valFoo = 1
@@ -37,6 +39,7 @@ class Outer {
class B {
val bProp = 1
fun bMyFun() = 1
}
fun lambda(f: () -> Unit) {
@@ -58,4 +61,13 @@ fun lambda(f: () -> Unit) {
// RESULT: 1: I
// EXPRESSION: bProp
// RESULT: 1: I
// EXPRESSION: aMyFun()
// RESULT: 1: I
// EXPRESSION: outerMyFun()
// RESULT: 1: I
// EXPRESSION: bMyFun()
// RESULT: 1: I
@@ -6,6 +6,7 @@ fun main(args: Array<String>) {
class A {
val prop = 1
fun myFun() = 1
}
fun A.foo() {
@@ -16,4 +17,7 @@ fun A.foo() {
// PRINT_FRAME
// EXPRESSION: prop
// RESULT: 1: I
// EXPRESSION: myFun()
// RESULT: 1: I
@@ -6,9 +6,11 @@ fun main(args: Array<String>) {
class A {
val prop1 = 1
fun myFun1() = 1
inner class Inner {
val prop2 = 1
fun myFun2() = 1
fun test() {
//Breakpoint!
@@ -23,4 +25,10 @@ class A {
// RESULT: 1: I
// EXPRESSION: prop2
// RESULT: 1: I
// EXPRESSION: myFun1()
// RESULT: 1: I
// EXPRESSION: myFun2()
// RESULT: 1: I
@@ -9,6 +9,7 @@ fun main(args: Array<String>) {
object O {
val obProp = 1
fun obMyFun() = 1
}
fun foo(f: () -> Unit) {
@@ -18,4 +19,7 @@ fun foo(f: () -> Unit) {
// PRINT_FRAME
// EXPRESSION: O.obProp
// RESULT: 1: I
// EXPRESSION: O.obMyFun()
// RESULT: 1: I
@@ -6,6 +6,7 @@ fun main(args: Array<String>) {
class A {
val prop1 = 1
fun myFun() = 1
fun test() {
val val1 = 1
@@ -33,4 +34,7 @@ fun foo(f: () -> Unit) {
// RESULT: 1: I
// EXPRESSION: prop1 + val1 + val2
// RESULT: 3: I
// RESULT: 3: I
// EXPRESSION: myFun()
// RESULT: 1: I
@@ -6,6 +6,7 @@ fun main(args: Array<String>) {
class A {
val prop1 = 1
fun myFun1() = 1
fun AExt.testExt() {
val val1 = 1
@@ -22,6 +23,7 @@ class A {
class AExt {
val prop2 = 1
fun myFun2() = 1
}
fun foo(f: () -> Unit) {
@@ -43,4 +45,10 @@ fun foo(f: () -> Unit) {
// RESULT: 2: I
// EXPRESSION: prop2 + val1
// RESULT: 2: I
// RESULT: 2: I
// EXPRESSION: myFun1()
// RESULT: 1: I
// EXPRESSION: myFun2()
// RESULT: 1: I
@@ -6,6 +6,7 @@ fun main(args: Array<String>) {
class A {
val prop1 = 1
fun myFun() = 1
fun test() {
val val1 = 1
@@ -35,4 +36,7 @@ fun foo(f: () -> Unit) {
// RESULT: 1: I
// EXPRESSION: prop1 + val1 + val2
// RESULT: 3: I
// RESULT: 3: I
// EXPRESSION: myFun()
// RESULT: 1: I