From 5ae9bb600cd4ab845c785511649b53298af6ce60 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 2 Mar 2015 19:44:13 +0300 Subject: [PATCH] Introduce Property: Place property before its usages --- .../introduce/extractionEngine/ExtractionData.kt | 7 ++++--- .../extractLazyMultipleExpressions.kt.after | 10 +++++----- .../introduceProperty/extractLazyToClass.kt.after | 8 ++++---- .../introduceProperty/extractLazyToFile.kt.after | 8 ++++---- .../introduceProperty/extractLazyWithBlock.kt.after | 10 +++++----- .../extractToClassWithNameClash.kt.after | 4 ++-- .../extractToFileWithNameClash.kt.after | 4 ++-- .../extractWithGetterMultipleExpressions.kt.after | 10 +++++----- .../extractWithGetterToClass.kt.after | 8 ++++---- .../introduceProperty/extractWithGetterToFile.kt.after | 10 +++++----- ...xtractWithInitializerAndSingleElementBlock.kt.after | 4 ++-- .../extractWithInitializerToClass.kt.after | 4 ++-- .../extractWithInitializerToFile.kt.after | 6 +++--- .../introduceProperty/replaceDuplicates.kt.after | 4 ++-- 14 files changed, 49 insertions(+), 48 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractionData.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractionData.kt index c7928ce64a2..393b8aa382a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractionData.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractionData.kt @@ -86,9 +86,10 @@ data class ExtractionData( val project: Project = originalFile.getProject() val originalElements: List = originalRange.elements - val insertBefore: Boolean = targetSibling.getStrictParentOfType()?.let { - it is JetDeclarationWithBody || it is JetClassInitializer - } ?: false + val insertBefore: Boolean = options.extractAsProperty + || targetSibling.getStrictParentOfType()?.let { + it is JetDeclarationWithBody || it is JetClassInitializer + } ?: false fun getExpressions(): List = originalElements.filterIsInstance() diff --git a/idea/testData/refactoring/introduceProperty/extractLazyMultipleExpressions.kt.after b/idea/testData/refactoring/introduceProperty/extractLazyMultipleExpressions.kt.after index 4fbb6042d40..f63c4dd3099 100644 --- a/idea/testData/refactoring/introduceProperty/extractLazyMultipleExpressions.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractLazyMultipleExpressions.kt.after @@ -3,15 +3,15 @@ import kotlin.properties.Delegates // WITH_RUNTIME // EXTRACTION_TARGET: lazy property class A { - fun foo(): Int { - val b = i - val c = b - 1 - } - private val i: Int by Delegates.lazy { val a = 1 + 2 val b = a * 2 b } + + fun foo(): Int { + val b = i + val c = b - 1 + } } diff --git a/idea/testData/refactoring/introduceProperty/extractLazyToClass.kt.after b/idea/testData/refactoring/introduceProperty/extractLazyToClass.kt.after index bc5618c8576..edbc594a214 100644 --- a/idea/testData/refactoring/introduceProperty/extractLazyToClass.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractLazyToClass.kt.after @@ -6,12 +6,12 @@ import kotlin.properties.Delegates class A(val n: Int = 1) { val m: Int = 2 - fun foo(): Int { - return i - } - private val i: Int by Delegates.lazy { m + n + 1 } + + fun foo(): Int { + return i + } } diff --git a/idea/testData/refactoring/introduceProperty/extractLazyToFile.kt.after b/idea/testData/refactoring/introduceProperty/extractLazyToFile.kt.after index 247e35bc8ee..7be7932a678 100644 --- a/idea/testData/refactoring/introduceProperty/extractLazyToFile.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractLazyToFile.kt.after @@ -5,10 +5,10 @@ import kotlin.properties.Delegates val n: Int = 1 -fun foo(): Int { - return i -} - private val i: Int by Delegates.lazy { n + 1 +} + +fun foo(): Int { + return i } \ No newline at end of file diff --git a/idea/testData/refactoring/introduceProperty/extractLazyWithBlock.kt.after b/idea/testData/refactoring/introduceProperty/extractLazyWithBlock.kt.after index b6f8b8e1c00..35a93ac3187 100644 --- a/idea/testData/refactoring/introduceProperty/extractLazyWithBlock.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractLazyWithBlock.kt.after @@ -6,15 +6,15 @@ import kotlin.properties.Delegates class A(val n: Int = 1) { val m: Int = 2 + private val i: Int by Delegates.lazy { + println(n) + m + n + 1 + } + fun foo(): Int { return if (n > 1) { i } else 0 } - - private val i: Int by Delegates.lazy { - println(n) - m + n + 1 - } } diff --git a/idea/testData/refactoring/introduceProperty/extractToClassWithNameClash.kt.after b/idea/testData/refactoring/introduceProperty/extractToClassWithNameClash.kt.after index e555e402c1c..735782585f7 100644 --- a/idea/testData/refactoring/introduceProperty/extractToClassWithNameClash.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractToClassWithNameClash.kt.after @@ -2,10 +2,10 @@ class A { val i = 1 + private val i1 = 1 + 2 + fun foo(): Int { return i1 } - - private val i1 = 1 + 2 } diff --git a/idea/testData/refactoring/introduceProperty/extractToFileWithNameClash.kt.after b/idea/testData/refactoring/introduceProperty/extractToFileWithNameClash.kt.after index a5027c11ff0..82a8b45777f 100644 --- a/idea/testData/refactoring/introduceProperty/extractToFileWithNameClash.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractToFileWithNameClash.kt.after @@ -1,9 +1,9 @@ // EXTRACTION_TARGET: property with initializer val i = 1 +private val i1 = 1 + 2 + fun foo(): Int { return i1 } -private val i1 = 1 + 2 - diff --git a/idea/testData/refactoring/introduceProperty/extractWithGetterMultipleExpressions.kt.after b/idea/testData/refactoring/introduceProperty/extractWithGetterMultipleExpressions.kt.after index e7576fa1ef1..3503ff7df7c 100644 --- a/idea/testData/refactoring/introduceProperty/extractWithGetterMultipleExpressions.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractWithGetterMultipleExpressions.kt.after @@ -1,15 +1,15 @@ // EXTRACTION_TARGET: property with getter class A { - fun foo(): Int { - val b = i - val c = b - 1 - } - private val i: Int get() { val a = 1 + 2 val b = a * 2 return b } + + fun foo(): Int { + val b = i + val c = b - 1 + } } diff --git a/idea/testData/refactoring/introduceProperty/extractWithGetterToClass.kt.after b/idea/testData/refactoring/introduceProperty/extractWithGetterToClass.kt.after index b7162cc518f..b8d8a178fe1 100644 --- a/idea/testData/refactoring/introduceProperty/extractWithGetterToClass.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractWithGetterToClass.kt.after @@ -2,13 +2,13 @@ class A(val n: Int = 1) { val m: Int = 2 - fun foo(): Int { - return i - } - private val i: Int get() { return m + n + 1 } + + fun foo(): Int { + return i + } } diff --git a/idea/testData/refactoring/introduceProperty/extractWithGetterToFile.kt.after b/idea/testData/refactoring/introduceProperty/extractWithGetterToFile.kt.after index c5c19984925..9fe3f71333a 100644 --- a/idea/testData/refactoring/introduceProperty/extractWithGetterToFile.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractWithGetterToFile.kt.after @@ -1,11 +1,11 @@ // EXTRACTION_TARGET: property with getter val n: Int = 1 -fun foo(): Int { - return i -} - private val i: Int get() { return n + 1 - } \ No newline at end of file + } + +fun foo(): Int { + return i +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceProperty/extractWithInitializerAndSingleElementBlock.kt.after b/idea/testData/refactoring/introduceProperty/extractWithInitializerAndSingleElementBlock.kt.after index 45f90de3516..1e48c833005 100644 --- a/idea/testData/refactoring/introduceProperty/extractWithInitializerAndSingleElementBlock.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractWithInitializerAndSingleElementBlock.kt.after @@ -3,12 +3,12 @@ class A(val n: Int = 1) { val m: Int = 2 + private val i = m + n + 1 + fun foo(): Int { return if (n > 1) { i } else 0 } - - private val i = m + n + 1 } diff --git a/idea/testData/refactoring/introduceProperty/extractWithInitializerToClass.kt.after b/idea/testData/refactoring/introduceProperty/extractWithInitializerToClass.kt.after index d80514cfe9b..a2c8269bc75 100644 --- a/idea/testData/refactoring/introduceProperty/extractWithInitializerToClass.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractWithInitializerToClass.kt.after @@ -3,10 +3,10 @@ class A(val n: Int = 1) { val m: Int = 2 + private val i = m + n + 1 + fun foo(): Int { return i } - - private val i = m + n + 1 } diff --git a/idea/testData/refactoring/introduceProperty/extractWithInitializerToFile.kt.after b/idea/testData/refactoring/introduceProperty/extractWithInitializerToFile.kt.after index 046b82b12b3..7647323d5a5 100644 --- a/idea/testData/refactoring/introduceProperty/extractWithInitializerToFile.kt.after +++ b/idea/testData/refactoring/introduceProperty/extractWithInitializerToFile.kt.after @@ -2,8 +2,8 @@ val n: Int = 1 +private val i = n + 1 + fun foo(): Int { return i -} - -private val i = n + 1 \ No newline at end of file +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceProperty/replaceDuplicates.kt.after b/idea/testData/refactoring/introduceProperty/replaceDuplicates.kt.after index 0d2d6b93194..5636617e1a9 100644 --- a/idea/testData/refactoring/introduceProperty/replaceDuplicates.kt.after +++ b/idea/testData/refactoring/introduceProperty/replaceDuplicates.kt.after @@ -1,11 +1,11 @@ // EXTRACTION_TARGET: property with initializer class A(val n: Int) { + private val i = n + 1 + fun foo(k: Int) { val a = i val b = i - 2 val c = foo(i) } - - private val i = n + 1 } \ No newline at end of file