Extract Function: Implement duplicate search

This commit is contained in:
Alexey Sedunov
2014-09-16 15:26:19 +04:00
parent 03e2b4d516
commit 741e5f61e9
30 changed files with 1110 additions and 201 deletions
@@ -0,0 +1,87 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
var b: Int = 1
val t = <selection>if (a > 0) {
b++
b + a
}
else {
b--
b - a
}</selection>
return t
}
fun foo1() {
val x = 1
var y: Int = x
println(
if (x > 0) {
y++
y + x
}
else {
y--
y - x
}
)
}
fun foo2(x: Int) {
var p: Int = 1
var q: Int
if (x > 0) {
p++
q = p + x
}
else {
p--
q = p - x
}
println(q)
}
fun foo3(x: Int): Int {
var p: Int = 1
if (x > 0) {
p++
return p + x
}
else {
p--
return p - x
}
}
fun foo4() {
val t: (Int) -> (Int) = {
var n = it
if (it > 0) {
n++
n + it
}
else {
n--
n - it
}
}
println(t(1))
}
fun foo5(x: Int): Int {
var p: Int = 1
if (x > 0) {
p++
val t = p + x
}
else {
p--
val u = p - x
}
}
@@ -0,0 +1,70 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
var b: Int = 1
val t = i(a, b)
return t
}
private fun i(a: Int, b: Int): Int {
var b1 = b
return if (a > 0) {
b1++
b1 + a
} else {
b1--
b1 - a
}
}
fun foo1() {
val x = 1
var y: Int = x
println(
i(x, y)
)
}
fun foo2(x: Int) {
var p: Int = 1
var q: Int
if (x > 0) {
p++
q = p + x
}
else {
p--
q = p - x
}
println(q)
}
fun foo3(x: Int): Int {
var p: Int = 1
if (x > 0) {
p++
return p + x
}
else {
p--
return p - x
}
}
fun foo4() {
val t: (Int) -> (Int) = {
var n = it
i(it, n)
}
println(t(1))
}
fun foo5(x: Int): Int {
var p: Int = 1
i(x, p)
}
@@ -0,0 +1,74 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
var b: Int = 1
<selection>if (a > 0) {
b = b + a
}
else {
b = b - a
}</selection>
return b
}
fun foo1() {
val x = 1
var y: Int = x
println(
if (x > 0) {
y + x
}
else {
y - x
}
)
}
fun foo2(x: Int) {
var p: Int = 1
if (x > 0) {
p = p + x
}
else {
p = p - x
}
println(p)
}
fun foo3(x: Int): Int {
var p: Int = 1
if (x > 0) {
return p + x
}
else {
return p - x
}
}
fun foo4() {
val t: (Int) -> (Int) = {
var n = it
if (it > 0) {
n + it
}
else {
n - it
}
}
println(t(1))
}
fun foo5(x: Int): Int {
var p: Int = 1
if (x > 0) {
val t = p + x
}
else {
val u = p - x
}
}
@@ -0,0 +1,64 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// PARAM_DESCRIPTOR: var b: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
var b: Int = 1
b = i(a, b)
return b
}
private fun i(a: Int, b: Int): Int {
var b1 = b
if (a > 0) {
b1 = b1 + a
} else {
b1 = b1 - a
}
return b1
}
fun foo1() {
val x = 1
var y: Int = x
println(
if (x > 0) {
y + x
}
else {
y - x
}
)
}
fun foo2(x: Int) {
var p: Int = 1
p = i(x, p)
println(p)
}
fun foo3(x: Int): Int {
var p: Int = 1
return i(x, p)
}
fun foo4() {
val t: (Int) -> (Int) = {
var n = it
if (it > 0) {
n + it
}
else {
n - it
}
}
println(t(1))
}
fun foo5(x: Int): Int {
var p: Int = 1
i(x, p)
}
@@ -0,0 +1,20 @@
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in foo
// PARAM_DESCRIPTOR: value-parameter val b: kotlin.Int defined in foo
// SIBLING:
fun foo(a: Int, b: Int) {
<selection>println("a = $a")
println("b = $b")
println(a + b*a)</selection>
}
fun bar() {
val x = 1
val y = 2
println("a = $x")
println("b = $y")
println(x + y*x)
}
@@ -0,0 +1,22 @@
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in foo
// PARAM_DESCRIPTOR: value-parameter val b: kotlin.Int defined in foo
// SIBLING:
fun foo(a: Int, b: Int) {
unit(a, b)
}
private fun unit(a: Int, b: Int) {
println("a = $a")
println("b = $b")
println(a + b * a)
}
fun bar() {
val x = 1
val y = 2
unit(x, y)
}
@@ -0,0 +1,30 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
<selection>val b = a + 1
val c = a - 1</selection>
return b*c
}
fun foo1(a: Int) {
var x = a + 1
var y = a - 1
println(x + y)
}
fun foo2(): Int {
var p: Int = 1
var q: Int
p = p + 1
q = p - 1
return p + q
}
fun foo4(a: Int) {
var b = a
b = b + 1
return b - 1
}
@@ -0,0 +1,35 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
val (b, c) = pair(a)
return b*c
}
private fun pair(a: Int): Pair<Int, Int> {
val b = a + 1
val c = a - 1
return Pair(b, c)
}
fun foo1(a: Int) {
var (x, y) = pair(a)
println(x + y)
}
fun foo2(): Int {
var p: Int = 1
var q: Int
val pair = pair(p)
p = pair.first
q = pair.second
return p + q
}
fun foo4(a: Int) {
var b = a
b = b + 1
return b - 1
}
@@ -0,0 +1,22 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: val z: kotlin.Int defined in test
// SIBLING:
fun test(): () -> Int {
val z = 1
return {
<selection>println(z)
z + 1</selection>
}
}
fun foo1(a: Int): Int {
val t = println(a)
return a + 1
}
fun foo2(a: Int) {
println(a)
a + 1
}
@@ -0,0 +1,25 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: val z: kotlin.Int defined in test
// SIBLING:
fun test(): () -> Int {
val z = 1
return {
i(z)
}
}
private fun i(z: Int): Int {
println(z)
return z + 1
}
fun foo1(a: Int): Int {
val t = println(a)
return a + 1
}
fun foo2(a: Int) {
i(a)
}
@@ -0,0 +1,41 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
<selection>println(a)
return a + 1</selection>
}
fun foo1(): Int {
val x = 1
println(x)
val y = x + 1
return y
}
fun foo2(): () -> Int {
val z = 1
return {
println(z)
z + 1
}
}
fun foo3() {
var t = 1
println(t)
t = t + 1
println(t)
}
fun foo4(a: Int): Int {
val t = println(a)
return a + 1
}
fun foo5(a: Int) {
println(a)
a + 1
}
@@ -0,0 +1,41 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in test
// SIBLING:
fun test(a: Int): Int {
return i(a)
}
private fun i(a: Int): Int {
println(a)
return a + 1
}
fun foo1(): Int {
val x = 1
val y = i(x)
return y
}
fun foo2(): () -> Int {
val z = 1
return {
i(z)
}
}
fun foo3() {
var t = 1
t = i(t)
println(t)
}
fun foo4(a: Int): Int {
val t = println(a)
return a + 1
}
fun foo5(a: Int) {
i(a)
}
@@ -0,0 +1,25 @@
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in foo
// PARAM_DESCRIPTOR: value-parameter val b: kotlin.Int defined in foo
// SIBLING:
fun foo(a: Int, b: Int): Int {
return <selection>a + b*a</selection> + 1
}
fun bar() {
fun f() = 1
val a = 1
val b = 2
val c = 3
c + b*c
b + a*b
a plus a*a
a + a*b
a + c
f() + a*f()
f() + f().times(f())
}
@@ -0,0 +1,29 @@
// PARAM_TYPES: kotlin.Int
// PARAM_TYPES: kotlin.Int
// PARAM_DESCRIPTOR: value-parameter val a: kotlin.Int defined in foo
// PARAM_DESCRIPTOR: value-parameter val b: kotlin.Int defined in foo
// SIBLING:
fun foo(a: Int, b: Int): Int {
return i(a, b) + 1
}
private fun i(a: Int, b: Int): Int {
return a + b * a
}
fun bar() {
fun f() = 1
val a = 1
val b = 2
val c = 3
i(c, b)
i(b, a)
i(a, a)
a + a*b
a + c
i(f(), a)
i(f(), f())
}