diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt index ca227f0a075..243aba54eb3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt @@ -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()) { it.refCount > 0 } + val adjustedParameters = paramsInfo.parameters.filterTo(LinkedHashSet()) { it.refCount > 0 } val receiverCandidates = adjustedParameters.filterTo(HashSet()) { 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, diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/inferParameterInfo.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/inferParameterInfo.kt index 29fbb105f14..467c14d3d8b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/inferParameterInfo.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/inferParameterInfo.kt @@ -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() - val parameters = HashSet() + val parameters = LinkedHashSet() val typeParameters = HashSet() val nonDenotableTypes = HashSet() val replacementMap = MultiMap.create() @@ -78,7 +75,7 @@ internal fun ExtractionData.inferParametersInfo( ): ParametersInfo { val info = ParametersInfo() - val extractedDescriptorToParameter = HashMap() + val extractedDescriptorToParameter = LinkedHashMap() for (refInfo in getBrokenReferencesInfo(virtualBlock)) { val ref = refInfo.refExpr diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt index 9e6ed436501..81ff9090179 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt @@ -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 diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt.after index cd65851c00f..6c80811e80d 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithReturn.kt.after @@ -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) diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt index d753acf684d..708aae77a46 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt @@ -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 diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt.after index 886ce73e843..9b78c75cd1b 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValueWithSingleLineExpression.kt.after @@ -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 { +private fun pair(b: Int, a: Int): Pair { var b1 = b return Pair({ b1 += a; b1 }(), b1) } \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt index cfcf0509684..bbc2b287ba5 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt @@ -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 { diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt.after index a4727ff3f4d..91fdb256d2f 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pair.kt.after @@ -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 { +private fun pair(b: Int, a: Int, c: Int): Pair { var b1 = b var c1 = c b1 += a diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt index 9e402ae1d0e..1c7fe4995c7 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt @@ -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 { diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt.after index 330581c73d9..c1683fd7231 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/pairWithNameClash.kt.after @@ -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 { +private fun pair(b: Int, a: Int, c: Int): Pair { var b1 = b var c1 = c b1 += a diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt index 9ac3fcb84de..2872d4797c4 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt @@ -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 diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt.after index 60bd400dc34..245f779223a 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/singleOutputValue.kt.after @@ -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) diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt index b11b3dbf331..fe771a31823 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt @@ -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 diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt.after index c7b8a5fc097..43e5b4bfe0d 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/tooManyOutputValuesAsList.kt.after @@ -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 { +private fun list(b: Int, a: Int, c: Int, d: Int, e: Int): List { var b1 = b var c1 = c var d1 = d diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt index e7d807222c3..de93fd4e333 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt @@ -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: diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt.after index 6e748cda563..7e349ce732a 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/triple.kt.after @@ -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 { +private fun triple(b: Int, a: Int, c: Int, d: Int): Triple { var b1 = b var c1 = c var d1 = d diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt index 656824af02a..635204ab51e 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt @@ -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 { diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt.after b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt.after index e7da61535bc..e11d80407df 100644 --- a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt.after +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/usedAndUnusedOutputValues.kt.after @@ -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 diff --git a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt index 8732f2d8f13..2cf253f3cd2 100644 --- a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt +++ b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt @@ -1,7 +1,7 @@ -// PARAM_TYPES: kotlin.String, kotlin.Comparable, kotlin.CharSequence, java.io.Serializable, kotlin.Any // PARAM_TYPES: X -// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo +// PARAM_TYPES: kotlin.String, kotlin.Comparable, kotlin.CharSequence, java.io.Serializable, kotlin.Any // PARAM_DESCRIPTOR: value-parameter x: X defined in foo +// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo class X { fun add(t: T) { diff --git a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt.after b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt.after index d2698209ac8..a6542c10221 100644 --- a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt.after +++ b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nonNullableTypes.kt.after @@ -1,7 +1,7 @@ -// PARAM_TYPES: kotlin.String, kotlin.Comparable, kotlin.CharSequence, java.io.Serializable, kotlin.Any // PARAM_TYPES: X -// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo +// PARAM_TYPES: kotlin.String, kotlin.Comparable, kotlin.CharSequence, java.io.Serializable, kotlin.Any // PARAM_DESCRIPTOR: value-parameter x: X defined in foo +// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo class X { fun add(t: T) { @@ -11,10 +11,10 @@ class X { // SIBLING: fun foo(s: String?, x: X) { when { - s != null -> __dummyTestFun__(s, x) + s != null -> __dummyTestFun__(x, s) } } -private fun __dummyTestFun__(s: String, x: X) { +private fun __dummyTestFun__(x: X, s: String) { x.add(s) } \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt index 42f634a6fb2..fda8a48a83c 100644 --- a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt +++ b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt @@ -1,7 +1,7 @@ -// PARAM_TYPES: kotlin.String?, kotlin.Comparable?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any? // PARAM_TYPES: X -// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo +// PARAM_TYPES: kotlin.String?, kotlin.Comparable?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any? // PARAM_DESCRIPTOR: value-parameter x: X defined in foo +// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo class X { fun add(t: T) { diff --git a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt.after b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt.after index e29b0f27dc3..515d45d4be4 100644 --- a/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt.after +++ b/idea/testData/refactoring/extractFunction/parameters/candidateTypes/nullableTypes.kt.after @@ -1,7 +1,7 @@ -// PARAM_TYPES: kotlin.String?, kotlin.Comparable?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any? // PARAM_TYPES: X -// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo +// PARAM_TYPES: kotlin.String?, kotlin.Comparable?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any? // PARAM_DESCRIPTOR: value-parameter x: X defined in foo +// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo class X { fun add(t: T) { @@ -11,10 +11,10 @@ class X { // SIBLING: fun foo(s: String?, x: X) { when { - s != null -> __dummyTestFun__(s, x) + s != null -> __dummyTestFun__(x, s) } } -private fun __dummyTestFun__(s: String?, x: X) { +private fun __dummyTestFun__(x: X, s: String?) { x.add(s) } \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt index d697bb1b68c..f5f07262791 100644 --- a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt +++ b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt @@ -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 diff --git a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt.after b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt.after index 34c521c84c6..37419d9df33 100644 --- a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt.after +++ b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFun.kt.after @@ -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) \ No newline at end of file +private fun i(n: Int, bar: Int.(m: Int) -> Int) = n.bar(n + 1) \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt index 781d5a4dc61..4124916bf68 100644 --- a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt +++ b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt @@ -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 diff --git a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt.after b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt.after index 4fd6934045c..ea2f709cba5 100644 --- a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt.after +++ b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunChainedCalls.kt.after @@ -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) \ No newline at end of file +private fun i(n: Int, bar1: Int.(m: Int) -> Int, bar2: Int.(m: Int) -> Int) = n.bar1(n + 1).bar2(n + 2) \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt index d3134b8daa0..ce3d1772688 100644 --- a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt +++ b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt @@ -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 diff --git a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt.after b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt.after index 31f3c38e2e8..862ee14178d 100644 --- a/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt.after +++ b/idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt.after @@ -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) \ No newline at end of file +private fun i(n: Int, bar: Int.(m: Int) -> Int) = n bar (n + 1) \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt b/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt index 007d32aad90..8cfa22aeace 100644 --- a/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt +++ b/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt @@ -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 { diff --git a/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt.after b/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt.after index 775ae76238b..2d7ebc1c372 100644 --- a/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt.after +++ b/idea/testData/refactoring/extractFunction/parameters/misc/usagesInCallArgs.kt.after @@ -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) }