Extract Function: Add support for member extension functions
This commit is contained in:
+1
-1
@@ -307,7 +307,7 @@ private fun suggestParameterType(
|
|||||||
|
|
||||||
private fun isMemberExtensionFunction(resolvedCall: ResolvedCall<*>, ref: KtSimpleNameExpression): Boolean {
|
private fun isMemberExtensionFunction(resolvedCall: ResolvedCall<*>, ref: KtSimpleNameExpression): Boolean {
|
||||||
// TODO temporary hack because we couldn't correctly extract member extension function with two explicit receivers
|
// TODO temporary hack because we couldn't correctly extract member extension function with two explicit receivers
|
||||||
if (ref.parent !is KtCallExpression || ref.parent.parent !is KtQualifiedExpression) return false
|
if (ref.parent !is KtCallExpression) return false
|
||||||
|
|
||||||
val resultingDescriptor = resolvedCall.resultingDescriptor
|
val resultingDescriptor = resolvedCall.resultingDescriptor
|
||||||
return resultingDescriptor is FunctionDescriptor && resolvedCall.extensionReceiver != ReceiverValue.NO_RECEIVER && resolvedCall.dispatchReceiver != ReceiverValue.NO_RECEIVER
|
return resultingDescriptor is FunctionDescriptor && resolvedCall.extensionReceiver != ReceiverValue.NO_RECEIVER && resolvedCall.dispatchReceiver != ReceiverValue.NO_RECEIVER
|
||||||
|
|||||||
@@ -19,23 +19,35 @@ Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socke
|
|||||||
extensionMemberFunction.kt:13
|
extensionMemberFunction.kt:13
|
||||||
Compile bytecode for extClass.testPublic()
|
Compile bytecode for extClass.testPublic()
|
||||||
extensionMemberFunction.kt:19
|
extensionMemberFunction.kt:19
|
||||||
|
Compile bytecode for testPublic()
|
||||||
extensionMemberFunction.kt:25
|
extensionMemberFunction.kt:25
|
||||||
Compile bytecode for extClass.testPrivate()
|
Compile bytecode for extClass.testPrivate()
|
||||||
extensionMemberFunction.kt:31
|
extensionMemberFunction.kt:31
|
||||||
|
Compile bytecode for testPrivate()
|
||||||
extensionMemberFunction.kt:41
|
extensionMemberFunction.kt:41
|
||||||
|
Compile bytecode for testPublic()
|
||||||
extensionMemberFunction.kt:46
|
extensionMemberFunction.kt:46
|
||||||
|
Compile bytecode for this.testPublic()
|
||||||
extensionMemberFunction.kt:51
|
extensionMemberFunction.kt:51
|
||||||
|
Compile bytecode for testPrivate()
|
||||||
extensionMemberFunction.kt:56
|
extensionMemberFunction.kt:56
|
||||||
|
Compile bytecode for this.testPrivate()
|
||||||
extensionMemberFunction.kt:70
|
extensionMemberFunction.kt:70
|
||||||
Compile bytecode for extClass.testCompPublic()
|
Compile bytecode for extClass.testCompPublic()
|
||||||
extensionMemberFunction.kt:76
|
extensionMemberFunction.kt:76
|
||||||
|
Compile bytecode for testCompPublic()
|
||||||
extensionMemberFunction.kt:82
|
extensionMemberFunction.kt:82
|
||||||
Compile bytecode for extClass.testCompPrivate()
|
Compile bytecode for extClass.testCompPrivate()
|
||||||
extensionMemberFunction.kt:88
|
extensionMemberFunction.kt:88
|
||||||
|
Compile bytecode for testCompPrivate()
|
||||||
extensionMemberFunction.kt:98
|
extensionMemberFunction.kt:98
|
||||||
|
Compile bytecode for testCompPublic()
|
||||||
extensionMemberFunction.kt:103
|
extensionMemberFunction.kt:103
|
||||||
|
Compile bytecode for this.testCompPublic()
|
||||||
extensionMemberFunction.kt:108
|
extensionMemberFunction.kt:108
|
||||||
|
Compile bytecode for testCompPrivate()
|
||||||
extensionMemberFunction.kt:113
|
extensionMemberFunction.kt:113
|
||||||
|
Compile bytecode for this.testCompPrivate()
|
||||||
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||||
|
|
||||||
Process finished with exit code 0
|
Process finished with exit code 0
|
||||||
|
|||||||
+12
-12
@@ -14,7 +14,7 @@ class MemberClass {
|
|||||||
|
|
||||||
with(extClass) {
|
with(extClass) {
|
||||||
// EXPRESSION: testPublic()
|
// EXPRESSION: testPublic()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testPublic
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testPublic()
|
testPublic()
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ class MemberClass {
|
|||||||
|
|
||||||
with(extClass) {
|
with(extClass) {
|
||||||
// EXPRESSION: testPrivate()
|
// EXPRESSION: testPrivate()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testPrivate
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testPrivate()
|
testPrivate()
|
||||||
}
|
}
|
||||||
@@ -36,22 +36,22 @@ class MemberClass {
|
|||||||
|
|
||||||
fun ExtClass.testExtMember() {
|
fun ExtClass.testExtMember() {
|
||||||
// EXPRESSION: testPublic()
|
// EXPRESSION: testPublic()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testPublic
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testPublic()
|
testPublic()
|
||||||
|
|
||||||
// EXPRESSION: this.testPublic()
|
// EXPRESSION: this.testPublic()
|
||||||
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
this.testPublic()
|
this.testPublic()
|
||||||
|
|
||||||
// EXPRESSION: testPrivate()
|
// EXPRESSION: testPrivate()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testPrivate
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testPrivate()
|
testPrivate()
|
||||||
|
|
||||||
// EXPRESSION: this.testPrivate()
|
// EXPRESSION: this.testPrivate()
|
||||||
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
this.testPrivate()
|
this.testPrivate()
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,7 @@ class MemberClass {
|
|||||||
|
|
||||||
with(extClass) {
|
with(extClass) {
|
||||||
// EXPRESSION: testCompPublic()
|
// EXPRESSION: testCompPublic()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testCompPublic
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testCompPublic()
|
testCompPublic()
|
||||||
}
|
}
|
||||||
@@ -83,7 +83,7 @@ class MemberClass {
|
|||||||
|
|
||||||
with(extClass) {
|
with(extClass) {
|
||||||
// EXPRESSION: testCompPrivate()
|
// EXPRESSION: testCompPrivate()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testCompPrivate
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testCompPrivate()
|
testCompPrivate()
|
||||||
}
|
}
|
||||||
@@ -93,22 +93,22 @@ class MemberClass {
|
|||||||
|
|
||||||
fun ExtClass.testExtCompanion() {
|
fun ExtClass.testExtCompanion() {
|
||||||
// EXPRESSION: testCompPublic()
|
// EXPRESSION: testCompPublic()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testCompPublic
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testCompPublic()
|
testCompPublic()
|
||||||
|
|
||||||
// EXPRESSION: this.testCompPublic()
|
// EXPRESSION: this.testCompPublic()
|
||||||
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
this.testCompPublic()
|
this.testCompPublic()
|
||||||
|
|
||||||
// EXPRESSION: testCompPrivate()
|
// EXPRESSION: testCompPrivate()
|
||||||
// RESULT: Following declarations are unavailable in debug scope: testCompPrivate
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
testCompPrivate()
|
testCompPrivate()
|
||||||
|
|
||||||
// EXPRESSION: this.testCompPrivate()
|
// EXPRESSION: this.testCompPrivate()
|
||||||
// RESULT: A receiver of type extensionMemberFunction.ExtClass is required
|
// RESULT: 1: I
|
||||||
//Breakpoint!
|
//Breakpoint!
|
||||||
this.testCompPrivate()
|
this.testCompPrivate()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user