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,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