Debugger: initial support for member extension functions in evaluate expression

This commit is contained in:
Natalia Ukhorskaya
2015-11-10 15:04:55 +03:00
parent ba9e06d25b
commit ea50d8af02
7 changed files with 196 additions and 8 deletions
@@ -0,0 +1,41 @@
LineBreakpoint created at extensionMemberFunction.kt:13
LineBreakpoint created at extensionMemberFunction.kt:19
LineBreakpoint created at extensionMemberFunction.kt:25
LineBreakpoint created at extensionMemberFunction.kt:31
LineBreakpoint created at extensionMemberFunction.kt:41
LineBreakpoint created at extensionMemberFunction.kt:46
LineBreakpoint created at extensionMemberFunction.kt:51
LineBreakpoint created at extensionMemberFunction.kt:56
LineBreakpoint created at extensionMemberFunction.kt:70
LineBreakpoint created at extensionMemberFunction.kt:76
LineBreakpoint created at extensionMemberFunction.kt:82
LineBreakpoint created at extensionMemberFunction.kt:88
LineBreakpoint created at extensionMemberFunction.kt:98
LineBreakpoint created at extensionMemberFunction.kt:103
LineBreakpoint created at extensionMemberFunction.kt:108
LineBreakpoint created at extensionMemberFunction.kt:113
!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! extensionMemberFunction.ExtensionMemberFunctionKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
extensionMemberFunction.kt:13
Compile bytecode for extClass.testPublic()
extensionMemberFunction.kt:19
extensionMemberFunction.kt:25
Compile bytecode for extClass.testPrivate()
extensionMemberFunction.kt:31
extensionMemberFunction.kt:41
extensionMemberFunction.kt:46
extensionMemberFunction.kt:51
extensionMemberFunction.kt:56
extensionMemberFunction.kt:70
Compile bytecode for extClass.testCompPublic()
extensionMemberFunction.kt:76
extensionMemberFunction.kt:82
Compile bytecode for extClass.testCompPrivate()
extensionMemberFunction.kt:88
extensionMemberFunction.kt:98
extensionMemberFunction.kt:103
extensionMemberFunction.kt:108
extensionMemberFunction.kt:113
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,120 @@
package extensionMemberFunction
fun main(args: Array<String>) {
MemberClass().testMember(ExtClass())
MemberClass.testCompanion(ExtClass())
}
class MemberClass {
fun testMember(extClass: ExtClass) {
// EXPRESSION: extClass.testPublic()
// RESULT: 1: I
//Breakpoint!
extClass.testPublic()
with(extClass) {
// EXPRESSION: testPublic()
// RESULT: Following declarations are unavailable in debug scope: testPublic
//Breakpoint!
testPublic()
}
// EXPRESSION: extClass.testPrivate()
// RESULT: 1: I
//Breakpoint!
extClass.testPrivate()
with(extClass) {
// EXPRESSION: testPrivate()
// RESULT: Following declarations are unavailable in debug scope: testPrivate
//Breakpoint!
testPrivate()
}
extClass.testExtMember()
}
fun ExtClass.testExtMember() {
// EXPRESSION: testPublic()
// RESULT: Following declarations are unavailable in debug scope: testPublic
//Breakpoint!
testPublic()
// EXPRESSION: this.testPublic()
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
//Breakpoint!
this.testPublic()
// EXPRESSION: testPrivate()
// RESULT: Following declarations are unavailable in debug scope: testPrivate
//Breakpoint!
testPrivate()
// EXPRESSION: this.testPrivate()
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
//Breakpoint!
this.testPrivate()
}
public fun ExtClass.testPublic() = a
private fun ExtClass.testPrivate() = a
companion object {
public fun ExtClass.testCompPublic() = a
private fun ExtClass.testCompPrivate() = a
fun testCompanion(extClass: ExtClass) {
// EXPRESSION: extClass.testCompPublic()
// RESULT: 1: I
//Breakpoint!
extClass.testCompPublic()
with(extClass) {
// EXPRESSION: testCompPublic()
// RESULT: Following declarations are unavailable in debug scope: testCompPublic
//Breakpoint!
testCompPublic()
}
// EXPRESSION: extClass.testCompPrivate()
// RESULT: 1: I
//Breakpoint!
extClass.testCompPrivate()
with(extClass) {
// EXPRESSION: testCompPrivate()
// RESULT: Following declarations are unavailable in debug scope: testCompPrivate
//Breakpoint!
testCompPrivate()
}
extClass.testExtCompanion()
}
fun ExtClass.testExtCompanion() {
// EXPRESSION: testCompPublic()
// RESULT: Following declarations are unavailable in debug scope: testCompPublic
//Breakpoint!
testCompPublic()
// EXPRESSION: this.testCompPublic()
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
//Breakpoint!
this.testCompPublic()
// EXPRESSION: testCompPrivate()
// RESULT: Following declarations are unavailable in debug scope: testCompPrivate
//Breakpoint!
testCompPrivate()
// EXPRESSION: this.testCompPrivate()
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
//Breakpoint!
this.testCompPrivate()
}
}
}
class ExtClass {
val a = 1
}