Extract Function: Add support for member extension properties

This commit is contained in:
Alexey Sedunov
2015-11-30 16:19:40 +03:00
parent 39b46bb3ef
commit ffd8863875
7 changed files with 248 additions and 30 deletions
@@ -0,0 +1,53 @@
LineBreakpoint created at extensionMemberProperty.kt:13
LineBreakpoint created at extensionMemberProperty.kt:19
LineBreakpoint created at extensionMemberProperty.kt:25
LineBreakpoint created at extensionMemberProperty.kt:31
LineBreakpoint created at extensionMemberProperty.kt:41
LineBreakpoint created at extensionMemberProperty.kt:46
LineBreakpoint created at extensionMemberProperty.kt:51
LineBreakpoint created at extensionMemberProperty.kt:56
LineBreakpoint created at extensionMemberProperty.kt:74
LineBreakpoint created at extensionMemberProperty.kt:80
LineBreakpoint created at extensionMemberProperty.kt:86
LineBreakpoint created at extensionMemberProperty.kt:92
LineBreakpoint created at extensionMemberProperty.kt:102
LineBreakpoint created at extensionMemberProperty.kt:107
LineBreakpoint created at extensionMemberProperty.kt:112
LineBreakpoint created at extensionMemberProperty.kt:117
!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! extensionMemberProperty.ExtensionMemberPropertyKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
extensionMemberProperty.kt:13
Compile bytecode for extClass.testPublic
extensionMemberProperty.kt:19
Compile bytecode for testPublic
extensionMemberProperty.kt:25
Compile bytecode for extClass.testPrivate
extensionMemberProperty.kt:31
Compile bytecode for testPrivate
extensionMemberProperty.kt:41
Compile bytecode for testPublic
extensionMemberProperty.kt:46
Compile bytecode for this.testPublic
extensionMemberProperty.kt:51
Compile bytecode for testPrivate
extensionMemberProperty.kt:56
Compile bytecode for this.testPrivate
extensionMemberProperty.kt:74
Compile bytecode for extClass.testCompPublic
extensionMemberProperty.kt:80
Compile bytecode for testCompPublic
extensionMemberProperty.kt:86
Compile bytecode for extClass.testCompPrivate
extensionMemberProperty.kt:92
Compile bytecode for testCompPrivate
extensionMemberProperty.kt:102
Compile bytecode for testCompPublic
extensionMemberProperty.kt:107
Compile bytecode for this.testCompPublic
extensionMemberProperty.kt:112
Compile bytecode for testCompPrivate
extensionMemberProperty.kt:117
Compile bytecode for this.testCompPrivate
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,124 @@
package extensionMemberProperty
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: 1: I
//Breakpoint!
testPublic
}
// EXPRESSION: extClass.testPrivate
// RESULT: 1: I
//Breakpoint!
extClass.testPrivate
with(extClass) {
// EXPRESSION: testPrivate
// RESULT: 1: I
//Breakpoint!
testPrivate
}
extClass.testExtMember()
}
fun ExtClass.testExtMember() {
// EXPRESSION: testPublic
// RESULT: 1: I
//Breakpoint!
testPublic
// EXPRESSION: this.testPublic
// RESULT: 1: I
//Breakpoint!
this.testPublic
// EXPRESSION: testPrivate
// RESULT: 1: I
//Breakpoint!
testPrivate
// EXPRESSION: this.testPrivate
// RESULT: 1: I
//Breakpoint!
this.testPrivate
}
public val ExtClass.testPublic: Int
get() = a
private val ExtClass.testPrivate: Int
get() = a
companion object {
public val ExtClass.testCompPublic: Int
get() = a
private val ExtClass.testCompPrivate: Int
get() = a
fun testCompanion(extClass: ExtClass) {
// EXPRESSION: extClass.testCompPublic
// RESULT: 1: I
//Breakpoint!
extClass.testCompPublic
with(extClass) {
// EXPRESSION: testCompPublic
// RESULT: 1: I
//Breakpoint!
testCompPublic
}
// EXPRESSION: extClass.testCompPrivate
// RESULT: 1: I
//Breakpoint!
extClass.testCompPrivate
with(extClass) {
// EXPRESSION: testCompPrivate
// RESULT: 1: I
//Breakpoint!
testCompPrivate
}
extClass.testExtCompanion()
}
fun ExtClass.testExtCompanion() {
// EXPRESSION: testCompPublic
// RESULT: 1: I
//Breakpoint!
testCompPublic
// EXPRESSION: this.testCompPublic
// RESULT: 1: I
//Breakpoint!
this.testCompPublic
// EXPRESSION: testCompPrivate
// RESULT: 1: I
//Breakpoint!
testCompPrivate
// EXPRESSION: this.testCompPrivate
// RESULT: 1: I
//Breakpoint!
this.testCompPrivate
}
}
}
class ExtClass {
val a = 1
}