Debugger: implement compiling evaluator

This commit is contained in:
Natalia Ukhorskaya
2015-02-10 14:19:51 +03:00
parent 91e745704a
commit 7a4b291c85
24 changed files with 477 additions and 5 deletions
@@ -0,0 +1,9 @@
LineBreakpoint created at ceLambda.kt:6
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceLambda.CeLambdaPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceLambda.kt:6
Compile bytecode for foo { 1 }
Compile bytecode for foo { a }
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,16 @@
LineBreakpoint created at ceLocalClass.kt:6
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceLocalClass.CeLocalClassPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceLocalClass.kt:6
Compile bytecode for class MyClass {
fun test() = 2
}
val a = MyClass()
a.test()
// RESULT: 2: I
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,16 @@
LineBreakpoint created at ceLocalClassMembers.kt:19
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceLocalClassMembers.CeLocalClassMembersPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceLocalClassMembers.kt:19
Compile bytecode for class MyClass {
fun test() = publicFun() + publicVal + protectedFun() + protectedVal + privateFun() + privateFun()
}
val a = MyClass()
a.test()
// RESULT: 6: I
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,16 @@
LineBreakpoint created at ceLocalClassWithSuperClass.kt:19
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceLocalClassWithSuperClass.CeLocalClassWithSuperClassPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceLocalClassWithSuperClass.kt:19
Compile bytecode for class MyClass: MySuperClass() {
fun test() = publicFun()
}
val a = MyClass()
a.test()
// RESULT: 1: I
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,13 @@
LineBreakpoint created at ceMembers.kt:19
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceMembers.CeMembersPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceMembers.kt:19
Compile bytecode for foo { publicFun() }
Compile bytecode for foo { publicVal }
Compile bytecode for foo { protectedFun() }
Compile bytecode for foo { protectedVal }
Compile bytecode for foo { privateFun() }
Compile bytecode for foo { privateVal }
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,7 @@
LineBreakpoint created at ceObject.kt:5
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceObject.CeObjectPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceObject.kt:5
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,8 @@
LineBreakpoint created at ceSeveralLambdas.kt:5
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceSeveralLambdas.CeSeveralLambdasPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceSeveralLambdas.kt:5
Compile bytecode for foo { 1 } + foo { 1 }
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,13 @@
LineBreakpoint created at ceSuperAccess.kt:20
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !APP_PATH!\classes;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceSuperAccess.CeSuperAccessPackage
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
ceSuperAccess.kt:20
Compile bytecode for foo { publicFun() }
Compile bytecode for foo { publicVal }
Compile bytecode for foo { protectedFun() }
Compile bytecode for foo { protectedVal }
Compile bytecode for foo { privateFun() }
Compile bytecode for foo { privateVal }
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,16 @@
package ceLambda
fun main(args: Array<String>) {
val a = 1
//Breakpoint!
args.size()
}
fun foo(p: () -> Int) = p()
// EXPRESSION: foo { 1 }
// RESULT: 1: I
// EXPRESSION: foo { a }
// RESULT: 1: I
@@ -0,0 +1,8 @@
package ceLocalClass
fun main(args: Array<String>) {
val a = 1
//Breakpoint!
args.size()
}
@@ -0,0 +1,8 @@
class MyClass {
fun test() = 2
}
val a = MyClass()
a.test()
// RESULT: 2: I
@@ -0,0 +1,25 @@
package ceLocalClassMembers
fun main(args: Array<String>) {
A().test()
}
class A {
public fun publicFun(): Int = 1
public val publicVal: Int = 1
protected fun protectedFun(): Int = 1
protected val protectedVal: Int = 1
private fun privateFun() = 1
private val privateVal = 1
fun test() {
//Breakpoint!
val a = 1
}
}
@@ -0,0 +1,8 @@
class MyClass {
fun test() = publicFun() + publicVal + protectedFun() + protectedVal + privateFun() + privateFun()
}
val a = MyClass()
a.test()
// RESULT: 6: I
@@ -0,0 +1,23 @@
package ceLocalClassWithSuperClass
fun main(args: Array<String>) {
A().test()
}
class A {
public fun publicFun(): Int = 1
public val publicVal: Int = 1
protected fun protectedFun(): Int = 1
protected val protectedVal: Int = 1
private fun privateFun() = 1
private val privateVal = 1
fun test() {
//Breakpoint!
val a = 1
}
}
open class MySuperClass
@@ -0,0 +1,8 @@
class MyClass: MySuperClass() {
fun test() = publicFun()
}
val a = MyClass()
a.test()
// RESULT: 1: I
@@ -0,0 +1,42 @@
package ceMembers
fun main(args: Array<String>) {
A().test()
}
class A {
public fun publicFun(): Int = 1
public val publicVal: Int = 1
protected fun protectedFun(): Int = 1
protected val protectedVal: Int = 1
private fun privateFun() = 1
private val privateVal = 1
fun test() {
//Breakpoint!
val a = 1
}
}
fun foo(p: () -> Int) = p()
// EXPRESSION: foo { publicFun() }
// RESULT: 1: I
// EXPRESSION: foo { publicVal }
// RESULT: 1: I
// EXPRESSION: foo { protectedFun() }
// RESULT: 1: I
// EXPRESSION: foo { protectedVal }
// RESULT: 1: I
// EXPRESSION: foo { privateFun() }
// RESULT: 1: I
// EXPRESSION: foo { privateVal }
// RESULT: 1: I
@@ -0,0 +1,13 @@
package ceObject
fun main(args: Array<String>) {
//Breakpoint!
args.size()
}
trait T {
fun test() = 1
}
//- EXPRESSION: (object: T {}).test()
//- RESULT: 1: I
@@ -0,0 +1,11 @@
package ceSeveralLambdas
fun main(args: Array<String>) {
//Breakpoint!
args.size()
}
fun foo(p: () -> Int) = p()
// EXPRESSION: foo { 1 } + foo { 1 }
// RESULT: 2: I
@@ -0,0 +1,43 @@
package ceSuperAccess
fun main(args: Array<String>) {
A().Inner().test()
}
class A {
public fun publicFun(): Int = 1
public val publicVal: Int = 1
protected fun protectedFun(): Int = 1
protected val protectedVal: Int = 1
private fun privateFun() = 1
private val privateVal = 1
inner class Inner {
fun test() {
//Breakpoint!
val a = publicFun()
}
}
}
fun foo(p: () -> Int) = p()
// EXPRESSION: foo { publicFun() }
// RESULT: 1: I
// EXPRESSION: foo { publicVal }
// RESULT: 1: I
// EXPRESSION: foo { protectedFun() }
// RESULT: 1: I
// EXPRESSION: foo { protectedVal }
// RESULT: 1: I
// EXPRESSION: foo { privateFun() }
// RESULT: 1: I
// EXPRESSION: foo { privateVal }
// RESULT: 1: I