Extract method refactoring should order parameters by first usage
Fixes #KT-16198
This commit is contained in:
+3
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
* Copyright 2010-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -39,7 +39,6 @@ import org.jetbrains.kotlin.cfg.pseudocodeTraverser.traverseFollowingInstruction
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
@@ -65,7 +64,6 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsStatement
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
|
||||
@@ -694,7 +692,7 @@ fun ExtractionData.performAnalysis(): AnalysisResult {
|
||||
}
|
||||
}
|
||||
)
|
||||
val adjustedParameters = paramsInfo.parameters.filterTo(HashSet<Parameter>()) { it.refCount > 0 }
|
||||
val adjustedParameters = paramsInfo.parameters.filterTo(LinkedHashSet<Parameter>()) { it.refCount > 0 }
|
||||
|
||||
val receiverCandidates = adjustedParameters.filterTo(HashSet<Parameter>()) { it.receiverCandidate }
|
||||
val receiverParameter = if (receiverCandidates.size == 1 && !options.canWrapInWith) receiverCandidates.first() else null
|
||||
@@ -705,7 +703,7 @@ fun ExtractionData.performAnalysis(): AnalysisResult {
|
||||
bindingContext,
|
||||
suggestFunctionNames(returnType),
|
||||
getDefaultVisibility(),
|
||||
adjustedParameters.sortedBy { it.name },
|
||||
adjustedParameters.toList(),
|
||||
receiverParameter,
|
||||
paramsInfo.typeParameters.sortedBy { it.originalDeclaration.name!! },
|
||||
paramsInfo.replacementMap,
|
||||
|
||||
+3
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
* Copyright 2010-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -26,8 +26,6 @@ import org.jetbrains.kotlin.cfg.pseudocode.getExpectedTypePredicate
|
||||
import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.InstructionWithReceivers
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
||||
import org.jetbrains.kotlin.idea.core.NewDeclarationNameValidator
|
||||
@@ -47,7 +45,6 @@ import org.jetbrains.kotlin.resolve.calls.tasks.isSynthesizedInvoke
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getImportableDescriptor
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver
|
||||
@@ -62,7 +59,7 @@ import java.util.*
|
||||
internal class ParametersInfo {
|
||||
var errorMessage: AnalysisResult.ErrorMessage? = null
|
||||
val originalRefToParameter = MultiMap.create<KtSimpleNameExpression, MutableParameter>()
|
||||
val parameters = HashSet<MutableParameter>()
|
||||
val parameters = LinkedHashSet<MutableParameter>()
|
||||
val typeParameters = HashSet<TypeParameter>()
|
||||
val nonDenotableTypes = HashSet<KotlinType>()
|
||||
val replacementMap = MultiMap.create<KtSimpleNameExpression, Replacement>()
|
||||
@@ -78,7 +75,7 @@ internal fun ExtractionData.inferParametersInfo(
|
||||
): ParametersInfo {
|
||||
val info = ParametersInfo()
|
||||
|
||||
val extractedDescriptorToParameter = HashMap<DeclarationDescriptor, MutableParameter>()
|
||||
val extractedDescriptorToParameter = LinkedHashMap<DeclarationDescriptor, MutableParameter>()
|
||||
|
||||
for (refInfo in getBrokenReferencesInfo(virtualBlock)) {
|
||||
val ref = refInfo.refExpr
|
||||
|
||||
Vendored
+1
-1
@@ -1,8 +1,8 @@
|
||||
// WITH_RUNTIME
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
|
||||
Vendored
+3
-3
@@ -1,16 +1,16 @@
|
||||
// WITH_RUNTIME
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
|
||||
return i(a, b)
|
||||
return i(b, a)
|
||||
}
|
||||
|
||||
private fun i(a: Int, b: Int): Int {
|
||||
private fun i(b: Int, a: Int): Int {
|
||||
var b1 = b
|
||||
b1 += a
|
||||
println(b1)
|
||||
|
||||
+1
-1
@@ -2,8 +2,8 @@
|
||||
// WITH_RUNTIME
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
|
||||
+3
-3
@@ -2,13 +2,13 @@
|
||||
// WITH_RUNTIME
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
|
||||
val pair = pair(a, b)
|
||||
val pair = pair(b, a)
|
||||
b = pair.second
|
||||
val t = pair.first
|
||||
println(b)
|
||||
@@ -16,7 +16,7 @@ fun foo(a: Int): Int {
|
||||
return t
|
||||
}
|
||||
|
||||
private fun pair(a: Int, b: Int): Pair<Int, Int> {
|
||||
private fun pair(b: Int, a: Int): Pair<Int, Int> {
|
||||
var b1 = b
|
||||
return Pair({ b1 += a; b1 }(), b1)
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
|
||||
+3
-3
@@ -2,22 +2,22 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
var c: Int = 1
|
||||
|
||||
val pair = pair(a, b, c)
|
||||
val pair = pair(b, a, c)
|
||||
b = pair.first
|
||||
c = pair.second
|
||||
|
||||
return b + c
|
||||
}
|
||||
|
||||
private fun pair(a: Int, b: Int, c: Int): Pair<Int, Int> {
|
||||
private fun pair(b: Int, a: Int, c: Int): Pair<Int, Int> {
|
||||
var b1 = b
|
||||
var c1 = c
|
||||
b1 += a
|
||||
|
||||
+1
-1
@@ -2,8 +2,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
|
||||
Vendored
+3
-3
@@ -2,8 +2,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
@@ -11,14 +11,14 @@ fun foo(a: Int): Int {
|
||||
var c: Int = 1
|
||||
val pair = 2
|
||||
|
||||
val pair1 = pair(a, b, c)
|
||||
val pair1 = pair(b, a, c)
|
||||
b = pair1.first
|
||||
c = pair1.second
|
||||
|
||||
return b + c
|
||||
}
|
||||
|
||||
private fun pair(a: Int, b: Int, c: Int): Pair<Int, Int> {
|
||||
private fun pair(b: Int, a: Int, c: Int): Pair<Int, Int> {
|
||||
var b1 = b
|
||||
var c1 = c
|
||||
b1 += a
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
|
||||
Vendored
+3
-3
@@ -1,17 +1,17 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
|
||||
b = i(a, b)
|
||||
b = i(b, a)
|
||||
|
||||
return b
|
||||
}
|
||||
|
||||
private fun i(a: Int, b: Int): Int {
|
||||
private fun i(b: Int, a: Int): Int {
|
||||
var b1 = b
|
||||
b1 += a
|
||||
println(b1)
|
||||
|
||||
Vendored
+1
-1
@@ -5,8 +5,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var d: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var e: kotlin.Int defined in foo
|
||||
|
||||
+3
-3
@@ -5,8 +5,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var d: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var e: kotlin.Int defined in foo
|
||||
@@ -17,7 +17,7 @@ fun foo(a: Int): Int {
|
||||
var d: Int = 1
|
||||
var e: Int = 1
|
||||
|
||||
val list = list(a, b, c, d, e)
|
||||
val list = list(b, a, c, d, e)
|
||||
b = list[0]
|
||||
c = list[1]
|
||||
d = list[2]
|
||||
@@ -26,7 +26,7 @@ fun foo(a: Int): Int {
|
||||
return b + c + d + e
|
||||
}
|
||||
|
||||
private fun list(a: Int, b: Int, c: Int, d: Int, e: Int): List<Int> {
|
||||
private fun list(b: Int, a: Int, c: Int, d: Int, e: Int): List<Int> {
|
||||
var b1 = b
|
||||
var c1 = c
|
||||
var d1 = d
|
||||
|
||||
+1
-1
@@ -3,8 +3,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var d: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
|
||||
+3
-3
@@ -3,8 +3,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var d: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
@@ -13,7 +13,7 @@ fun foo(a: Int): Int {
|
||||
var c: Int = 1
|
||||
var d: Int = 1
|
||||
|
||||
val triple = triple(a, b, c, d)
|
||||
val triple = triple(b, a, c, d)
|
||||
b = triple.first
|
||||
c = triple.second
|
||||
d = triple.third
|
||||
@@ -21,7 +21,7 @@ fun foo(a: Int): Int {
|
||||
return b + c + d
|
||||
}
|
||||
|
||||
private fun triple(a: Int, b: Int, c: Int, d: Int): Triple<Int, Int, Int> {
|
||||
private fun triple(b: Int, a: Int, c: Int, d: Int): Triple<Int, Int, Int> {
|
||||
var b1 = b
|
||||
var c1 = c
|
||||
var d1 = d
|
||||
|
||||
Vendored
+1
-1
@@ -2,8 +2,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
|
||||
+3
-3
@@ -2,20 +2,20 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
fun foo(a: Int): Int {
|
||||
var b: Int = 1
|
||||
var c: Int = 1
|
||||
|
||||
b = i(a, b, c)
|
||||
b = i(b, a, c)
|
||||
|
||||
return b
|
||||
}
|
||||
|
||||
private fun i(a: Int, b: Int, c: Int): Int {
|
||||
private fun i(b: Int, a: Int, c: Int): Int {
|
||||
var b1 = b
|
||||
var c1 = c
|
||||
b1 += a
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_TYPES: X<kotlin.Any>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_TYPES: X<kotlin.Any>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
@@ -11,10 +11,10 @@ class X<T> {
|
||||
// SIBLING:
|
||||
fun foo(s: String?, x: X<Any>) {
|
||||
when {
|
||||
s != null -> __dummyTestFun__(s, x)
|
||||
s != null -> __dummyTestFun__(x, s)
|
||||
}
|
||||
}
|
||||
|
||||
private fun __dummyTestFun__(s: String, x: X<Any>) {
|
||||
private fun __dummyTestFun__(x: X<Any>, s: String) {
|
||||
x.add(s)
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_TYPES: X<kotlin.Any?>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any?> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_TYPES: X<kotlin.Any?>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any?> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
@@ -11,10 +11,10 @@ class X<T> {
|
||||
// SIBLING:
|
||||
fun foo(s: String?, x: X<Any?>) {
|
||||
when {
|
||||
s != null -> __dummyTestFun__(s, x)
|
||||
s != null -> __dummyTestFun__(x, s)
|
||||
}
|
||||
}
|
||||
|
||||
private fun __dummyTestFun__(s: String?, x: X<Any?>) {
|
||||
private fun __dummyTestFun__(x: X<Any?>, s: String?) {
|
||||
x.add(s)
|
||||
}
|
||||
Vendored
+2
-2
@@ -1,8 +1,8 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -1,12 +1,12 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar, n)
|
||||
return i(n, Int::bar)
|
||||
}
|
||||
|
||||
private fun i(bar: Int.(m: Int) -> Int, n: Int) = n.bar(n + 1)
|
||||
private fun i(n: Int, bar: Int.(m: Int) -> Int) = n.bar(n + 1)
|
||||
+4
-3
@@ -1,10 +1,11 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar1(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar2(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar1(m: Int) = this + m + n
|
||||
fun Int.bar2(m: Int) = this * m * n
|
||||
|
||||
+6
-5
@@ -1,15 +1,16 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar1(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar2(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar1(m: Int) = this + m + n
|
||||
fun Int.bar2(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar1, Int::bar2, n)
|
||||
return i(n, Int::bar1, Int::bar2)
|
||||
}
|
||||
|
||||
private fun i(bar1: Int.(m: Int) -> Int, bar2: Int.(m: Int) -> Int, n: Int) = n.bar1(n + 1).bar2(n + 2)
|
||||
private fun i(n: Int, bar1: Int.(m: Int) -> Int, bar2: Int.(m: Int) -> Int) = n.bar1(n + 1).bar2(n + 2)
|
||||
idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt
Vendored
+2
-2
@@ -1,8 +1,8 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar, n)
|
||||
return i(n, Int::bar)
|
||||
}
|
||||
|
||||
private fun i(bar: Int.(m: Int) -> Int, n: Int) = n bar (n + 1)
|
||||
private fun i(n: Int, bar: Int.(m: Int) -> Int) = n bar (n + 1)
|
||||
+1
-1
@@ -4,8 +4,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: A defined in foo
|
||||
// PARAM_DESCRIPTOR: val t: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter x: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
public class A() {
|
||||
fun bar(a: Int, b: Int): Int {
|
||||
|
||||
+3
-3
@@ -4,8 +4,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: A defined in foo
|
||||
// PARAM_DESCRIPTOR: val t: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter x: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
public class A() {
|
||||
fun bar(a: Int, b: Int): Int {
|
||||
@@ -13,10 +13,10 @@ public class A() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun i(a: A, t: Int, u: Int, x: Int) = a.bar(t - x, u + x)
|
||||
private fun i(a: A, t: Int, x: Int, u: Int) = a.bar(t - x, u + x)
|
||||
|
||||
fun foo(a: A, x: Int): Int {
|
||||
val t = 10
|
||||
val u = 20
|
||||
return i(a, t, u, x)
|
||||
return i(a, t, x, u)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user