Extract Function: Choose default visibility at analysis phase

This commit is contained in:
Alexey Sedunov
2014-07-28 16:24:05 +04:00
parent 8af173bd4b
commit cb3328c052
131 changed files with 139 additions and 135 deletions
@@ -581,6 +581,13 @@ private fun ExtractionData.getLocalInstructions(pseudocode: Pseudocode): List<In
return instructions
}
fun ExtractionData.isVisibilityApplicable(): Boolean {
return when (targetSibling.getParent()) {
is JetClassBody, is JetFile -> true
else -> false
}
}
fun ExtractionData.performAnalysis(): AnalysisResult {
if (originalElements.empty) {
return AnalysisResult(null, Status.CRITICAL_ERROR, listOf(ErrorMessage.NO_EXPRESSION))
@@ -664,7 +671,7 @@ fun ExtractionData.performAnalysis(): AnalysisResult {
ExtractableCodeDescriptor(
this,
functionName,
"",
if (isVisibilityApplicable()) "private" else "",
adjustedParameters.sortBy { it.name },
receiverParameter,
paramsInfo.typeParameters.sortBy { it.originalDeclaration.getName()!! },
@@ -29,8 +29,6 @@ import kotlin.Function0;
import kotlin.Function1;
import kotlin.Unit;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetClassBody;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.refactoring.JetNameSuggester;
import org.jetbrains.jet.plugin.refactoring.JetRefactoringBundle;
import org.jetbrains.jet.plugin.refactoring.RefactoringPackage;
@@ -81,8 +79,7 @@ public class KotlinExtractFunctionDialog extends DialogWrapper {
}
private boolean isVisibilitySectionAvailable() {
PsiElement target = originalDescriptor.getDescriptor().getExtractionData().getTargetSibling().getParent();
return target instanceof JetClassBody || target instanceof JetFile;
return ExtractFunctionPackage.isVisibilityApplicable(originalDescriptor.getDescriptor().getExtractionData());
}
private String getFunctionName() {
@@ -132,7 +129,7 @@ public class KotlinExtractFunctionDialog extends DialogWrapper {
boolean enableVisibility = isVisibilitySectionAvailable();
visibilityBox.setEnabled(enableVisibility);
if (enableVisibility) {
visibilityBox.setSelectedItem("private");
visibilityBox.setSelectedItem(originalDescriptor.getDescriptor().getVisibility());
}
visibilityBox.addItemListener(
new ItemListener() {
@@ -6,7 +6,7 @@ fun foo(a: Int): Int {
return -a
}
fun b(a: Int): Boolean {
private fun b(a: Int): Boolean {
// test
println(a)
if (a > 0) return true
@@ -6,7 +6,7 @@ fun foo(a: Int): Int {
return -a
}
fun b(a: Int): Boolean {
private fun b(a: Int): Boolean {
/*
test
*/
@@ -6,7 +6,7 @@ fun foo(a: Int): Int {
return -a
}
fun b(a: Int): Boolean {
private fun b(a: Int): Boolean {
println(a)
if (a > 0) return true
return false
@@ -11,7 +11,7 @@ fun foo(a: Int): Int {
return 1
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a + b > 0) return true
println(a - b)
if (a - b > 0) return true
@@ -14,7 +14,7 @@ fun foo(a: Int): Int {
return 1
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a + b > 0) return true
val c: Int
println(a - b)
@@ -12,7 +12,7 @@ fun foo(a: Int): Int {
return 1
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a + b > 0) return true
else {
println(a - b)
@@ -11,7 +11,7 @@ fun foo(a: Int): Int {
return 1
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
when {
a + b > 0 -> return true
a - b > 0 -> return true
@@ -9,7 +9,7 @@ fun foo(a: Int): Int {
return 1
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a + b > 0) return true
println(a - b)
return false
@@ -9,7 +9,7 @@ fun foo(a: Int): Int {
return 1
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a + b > 0) return true
else if (a - b < 0) println(a - b)
else println(0)
@@ -10,7 +10,7 @@ fun foo(a: Int): Int {
return 1
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
when (a + b) {
0 -> return true
1 -> println(1)
@@ -12,7 +12,7 @@ fun foo(a: Int): Int {
return 1
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
if (a + b > 0) return
println(a - b)
return
@@ -12,7 +12,7 @@ fun foo(a: Int): Int {
return 1
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
if (a + b > 0) return
else {
println(a - b)
@@ -12,7 +12,7 @@ fun foo(a: Int): Int {
return 1
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
when {
a + b > 0 -> return
a - b > 0 -> return
@@ -9,7 +9,7 @@ fun foo(a: Int) {
unit(a, b)
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
if (a > 0) {
println(a)
}
@@ -13,7 +13,7 @@ fun foo(a: Int) {
println(c)
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
if (a > 0) {
println(a)
}
@@ -7,7 +7,7 @@ fun foo(a: Int) {
unit(a)
}
fun unit(a: Int) {
private fun unit(a: Int) {
var t = a
while (t > 0) {
if (t == 2) continue
@@ -15,7 +15,7 @@ fun foo(a: Int) {
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
if (a > 0) {
bar(a)
} else {
@@ -14,6 +14,6 @@ fun foo(a: Int) {
unit(a, b)
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
if (a > 0) bar(a) else b
}
@@ -15,7 +15,7 @@ fun foo(a: Int) {
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
when {
a > 0 -> {
bar(a)
@@ -15,7 +15,7 @@ fun foo(a: Int) {
}
fun unit(a: Int, b: Int) {
private fun unit(a: Int, b: Int) {
when {
a > 0 -> bar(a)
else -> b
@@ -8,7 +8,7 @@ fun foo(a: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
if (a + b > 0) return 1
else if (a - b < 0) return 2
else return b
@@ -8,7 +8,7 @@ fun foo(a: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
when (a + b) {
0 -> return b
1 -> return -b
@@ -8,6 +8,6 @@ fun foo(a: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -8,6 +8,6 @@ fun foo(a: Int): Int {
return if (b(a, b)) 1 else if (a - b < 0) 2 else b
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
return a + b > 0
}
@@ -8,6 +8,6 @@ fun foo(a: Int): Int {
return if (a + b > 0) 1 else i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return if (a - b < 0) 2 else b
}
@@ -4,6 +4,6 @@ fun foo(a: Int): Int {
return if (a + b > 0) i() else if (a - b < 0) 2 else b
}
fun i(): Int {
private fun i(): Int {
return 1
}
@@ -10,6 +10,6 @@ fun foo(a: Int): Int {
}
}
fun i(b: Int): Int {
private fun i(b: Int): Int {
return b
}
@@ -8,6 +8,6 @@ fun foo(a: Int): Int {
}
}
fun i(): Int {
private fun i(): Int {
return 0
}
@@ -12,6 +12,6 @@ fun foo(a: Int): Int {
}
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -5,6 +5,6 @@
// SIBLING:
fun foo(a: Int, b: Int): Int = i(a, b)
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -8,6 +8,6 @@ fun foo(a: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return if (a + b > 0) 1 else if (a - b < 0) 2 else b
}
@@ -8,7 +8,7 @@ fun foo(a: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return when (a + b) {
0 -> b
1 -> -b
@@ -8,6 +8,6 @@ fun foo(a: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -5,6 +5,6 @@ fun foo(t: Array<Int>) {
t.check(function())
}
fun function(): (Int) -> Boolean {
private fun function(): (Int) -> Boolean {
return { it + 1 > 1 }
}
@@ -5,6 +5,6 @@ fun foo(t: Array<Int>) {
t.check(function())
}
fun function(): (Int) -> Boolean {
private fun function(): (Int) -> Boolean {
return { it + 1 > 1 }
}
@@ -5,6 +5,6 @@ fun foo(t: Array<Int>) {
t.check(1, 2, function())
}
fun function(): (Int) -> Boolean {
private fun function(): (Int) -> Boolean {
return { it + 1 > 1 }
}
@@ -4,7 +4,7 @@ fun foo() {
println(a)
}
fun i(): Int {
private fun i(): Int {
val a = 10
return a
}
@@ -9,7 +9,7 @@ fun foo() {
println(a + b + c)
}
fun i(): Int {
private fun i(): Int {
val a: Int
val b = 10
val c: Int
@@ -7,7 +7,7 @@ fun foo() {
println(a + b)
}
fun i(): Int {
private fun i(): Int {
val a: Int
val b = 10
val c: Int = 1
@@ -4,7 +4,7 @@ fun foo() {
println(a)
}
fun i(): Int {
private fun i(): Int {
val a: Int
a = 10
return a
@@ -6,7 +6,7 @@ fun main(args: Array<String>) {
}
}
fun i(): Int {
private fun i(): Int {
val a = 1
return a
}
@@ -6,7 +6,7 @@ fun main(args: Array<String>) {
}
}
fun i(): Int {
private fun i(): Int {
val a = 1
return a
}
@@ -4,7 +4,7 @@ fun main(args: Array<String>) {
fun foo() = a
}
fun i(): Int {
private fun i(): Int {
val a = 1
return a
}
@@ -11,7 +11,7 @@ fun foo(a: Int): Int {
return b
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
var b1 = b
b1 += a
println(b1)
@@ -11,7 +11,7 @@ fun foo(a: Int): Int {
return b
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
var b1 = b
if (a > 0) {
b1 = b1 + 1
@@ -11,7 +11,7 @@ fun foo(a: Int): Int {
return b
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
var b1 = b
if (a > 0) {
b1 = b1 + 1
@@ -11,7 +11,7 @@ fun foo(a: Int): Int {
return b
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
var b1 = b
when {
a > 0 -> {
@@ -11,7 +11,7 @@ fun foo(a: Int): Int {
return b
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
var b1 = b
when {
a > 0 -> {
@@ -5,7 +5,7 @@ fun foo() {
unit()
}
fun unit() {
private fun unit() {
bar { t ->
val k = 1
t.n + k + 1
@@ -5,7 +5,7 @@ fun foo() {
unit()
}
fun unit() {
private fun unit() {
if (true) {
val k = 1
T().n + k + 1
@@ -10,7 +10,7 @@ fun foo(a: Int): Int {
}
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a > 0) throw Exception("")
if (a + b > 0) return true
println(a - b)
@@ -10,7 +10,7 @@ fun foo(a: Int): Int {
}
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a > 0) throw Exception("")
if (a + b > 0) return true
println(a - b)
@@ -10,6 +10,6 @@ fun foo(a: Int): Int {
return t
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return if (a > 0) throw Exception("") else a + b
}
@@ -9,7 +9,7 @@ fun foo(a: Int) {
if (b(a, b)) return
}
fun b(a: Int, b: Int): Boolean {
private fun b(a: Int, b: Int): Boolean {
if (a > 0) throw Exception("")
if (b + a > 0) return true
println(a - b)
@@ -9,7 +9,7 @@ fun foo(a: Int): Int {
return b
}
fun i(b: Int): Int {
private fun i(b: Int): Int {
var b1 = b
if (n == 10) throw Exception("")
b1++
@@ -9,7 +9,7 @@ fun foo(a: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
if (a > 0) throw Exception("") else return a + b
return a - b
}
@@ -5,7 +5,7 @@ class A {
return i()
}
fun i(): Int {
private fun i(): Int {
return a + b - 1
}
}
@@ -8,7 +8,7 @@ class A {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b - 1
}
}
@@ -9,7 +9,7 @@ class A {
}.invoke()
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b - 1
}
}
@@ -5,7 +5,7 @@ class A {
return i()
}
fun i(): Int {
private fun i(): Int {
return a + b - 1
}
}
@@ -9,7 +9,7 @@ class A {
}.invoke()
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b - 1
}
}
@@ -6,6 +6,6 @@ fun foo(a: Int, b: Int): Int {
return i(a, b)
}
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b - 1
}
@@ -8,6 +8,6 @@ class A(a: Int, b: Int): T
class B(a: Int, b: Int): T by A(i(a, b), a - b)
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -6,6 +6,6 @@ class A(a: Int, b: Int): T
class B(t: T): T by t(t)
fun t(t: T): T {
private fun t(t: T): T {
return t
}
@@ -6,6 +6,6 @@ open class A(a: Int, b: Int)
class B(a: Int, b: Int): A(i(a, b), a - b)
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -1,7 +1,7 @@
class A(val a: Int, val b: Int) {
val foo: Int get() = i() - 1
fun i(): Int {
private fun i(): Int {
return a + b
}
}
@@ -1,7 +1,7 @@
class A(val a: Int, val b: Int) {
val foo: Int get() = { i() - 1 }.invoke()
fun i(): Int {
private fun i(): Int {
return a + b
}
}
@@ -2,6 +2,6 @@ val a = 1
val b = 1
val foo: Int get() = i() - 1
fun i(): Int {
private fun i(): Int {
return a + b
}
@@ -2,6 +2,6 @@ val a = 1
val b = 1
val foo: Int get() = { i() - 1 }.invoke()
fun i(): Int {
private fun i(): Int {
return a + b
}
@@ -5,7 +5,7 @@ class A(val a: Int, b: Int) {
println(i(b) - 1)
}
fun i(b: Int): Int {
private fun i(b: Int): Int {
return a + b
}
}
@@ -5,7 +5,7 @@ class A(val a: Int, b: Int) {
println({ i(b) - 1 }.invoke())
}
fun i(b: Int): Int {
private fun i(b: Int): Int {
return a + b
}
}
@@ -3,6 +3,6 @@
val n = 1
class A(val a: Int, val b: Int = i(a))
fun i(a: Int): Int {
private fun i(a: Int): Int {
return a + n
}
@@ -3,6 +3,6 @@
val n = 1
class A(val a: Int, val b: Int = { i(a) }.invoke())
fun i(a: Int): Int {
private fun i(a: Int): Int {
return a + n
}
@@ -5,7 +5,7 @@
class A(val n: Int) {
fun foo(a: Int, b: Int) = i(a, b) - 1
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b - n
}
}
@@ -3,7 +3,7 @@
class A(val n: Int) {
fun foo(a: Int, b: Int = i(a)) = a + b - n - 1
fun i(a: Int): Int {
private fun i(a: Int): Int {
return a + n
}
}
@@ -3,7 +3,7 @@
class A(val n: Int) {
fun foo(a: Int, b: Int = { i(a) }.invoke()) = a + b - n - 1
fun i(a: Int): Int {
private fun i(a: Int): Int {
return a + n
}
}
@@ -5,7 +5,7 @@
class A(val n: Int) {
fun foo(a: Int, b: Int) = { i(a, b) - 1 }.invoke()
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b - n
}
}
@@ -4,6 +4,6 @@
// PARAM_DESCRIPTOR: value-parameter val b: kotlin.Int defined in foo
fun foo(a: Int, b: Int) = i(a, b) - 1
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -3,6 +3,6 @@
val n = 1
fun foo(a: Int, b: Int = i(a)) = a + b - 1
fun i(a: Int): Int {
private fun i(a: Int): Int {
return a + n
}
@@ -3,6 +3,6 @@
val n = 1
fun foo(a: Int, b: Int = { i(a) }) = a + b - 1
fun i(a: Int): Int {
private fun i(a: Int): Int {
return a + n
}
@@ -4,6 +4,6 @@
// PARAM_DESCRIPTOR: value-parameter val b: kotlin.Int defined in foo
fun foo(a: Int, b: Int) = { i(a, b) - 1 }.invoke()
fun i(a: Int, b: Int): Int {
private fun i(a: Int, b: Int): Int {
return a + b
}
@@ -3,7 +3,7 @@
class A(val a: Int, b: Int) {
val foo = i(b) - 1
fun i(b: Int): Int {
private fun i(b: Int): Int {
return a + b
}
}
@@ -3,7 +3,7 @@
class A(val a: Int, b: Int) {
val foo = { i(b) - 1 }.invoke()
fun i(b: Int): Int {
private fun i(b: Int): Int {
return a + b
}
}
@@ -2,6 +2,6 @@ val a = 1
val b = 1
val foo = i() - 1
fun i(): Int {
private fun i(): Int {
return a + b
}
@@ -2,6 +2,6 @@ val a = 1
val b = 1
val foo = { i() - 1 }.invoke()
fun i(): Int {
private fun i(): Int {
return a + b
}
@@ -15,6 +15,6 @@ fun foo(s: String?, x: X<Any>) {
}
}
fun unit(s: String, x: X<Any>) {
private fun unit(s: String, x: X<Any>) {
x.add(s)
}
@@ -15,6 +15,6 @@ fun foo(s: String?, x: X<Any?>) {
}
}
fun unit(s: String?, x: X<Any?>) {
private fun unit(s: String?, x: X<Any?>) {
x.add(s)
}
@@ -35,6 +35,6 @@ fun foo(c: C) {
c.doC()
}
fun unit(c: C) {
private fun unit(c: C) {
c.doA()
}
@@ -35,6 +35,6 @@ fun foo(c: C) {
c.doC()
}
fun unit(c: C) {
private fun unit(c: C) {
c.doB()
}
@@ -35,6 +35,6 @@ fun foo(c: C) {
unit(c)
}
fun unit(c: C) {
private fun unit(c: C) {
c.doC()
}
@@ -34,7 +34,7 @@ fun foo(c: C) {
c.doC()
}
fun unit(c: C) {
private fun unit(c: C) {
c.doA()
c.doB()
}
@@ -19,6 +19,6 @@ public class A(): Z() {
}
}
fun i(a1: A, b1: A.B): Int {
private fun i(a1: A, b1: A.B): Int {
return a1.a + b1.b + a1.z + b1.z
}
@@ -7,6 +7,6 @@ fun Z.foo(): Int {
return i() + 1
}
fun Z.i(): Int {
private fun Z.i(): Int {
return this.a
}
@@ -19,6 +19,6 @@ public class A(): Z() {
}
}
fun i(a1: A, b1: A.B): Int {
private fun i(a1: A, b1: A.B): Int {
return a1.a + b1.b + b1.z
}
@@ -19,6 +19,6 @@ public class A(): Z() {
}
}
fun i(a1: A, b1: A.B): Int {
private fun i(a1: A, b1: A.B): Int {
return a1.a + b1.b + a1.z + b1.z
}
@@ -7,6 +7,6 @@ fun Z.foo(): Int {
return i() + 1
}
fun Z.i(): Int {
private fun Z.i(): Int {
return this.a + a
}
@@ -7,6 +7,6 @@ fun Z.foo(): Int {
return i() + 1
}
fun Z.i(): Int {
private fun Z.i(): Int {
return a
}
@@ -19,6 +19,6 @@ public class A(): Z() {
}
}
fun i(a1: A, b1: A.B): Int {
private fun i(a1: A, b1: A.B): Int {
return a1.a + b1.b + b1.z
}

Some files were not shown because too many files have changed in this diff Show More