Extraction Engine: Support lazy properties and properties with initializer

This commit is contained in:
Alexey Sedunov
2015-03-02 15:56:01 +03:00
parent 03fada71d7
commit 5382504306
35 changed files with 461 additions and 64 deletions
@@ -0,0 +1,10 @@
// WITH_RUNTIME
// EXTRACTION_TARGET: lazy property
class A {
fun foo(): Int {
<selection>val a = 1 + 2
val b = a*2</selection>
val c = b - 1
}
}
@@ -0,0 +1,17 @@
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
}
}
@@ -0,0 +1,11 @@
// WITH_RUNTIME
// EXTRACTION_TARGET: lazy property
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return <selection>m + n + 1</selection>
}
}
@@ -0,0 +1,17 @@
// WITH_RUNTIME
// EXTRACTION_TARGET: lazy property
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
}
}
@@ -0,0 +1,8 @@
// WITH_RUNTIME
// EXTRACTION_TARGET: lazy property
val n: Int = 1
fun foo(): Int {
return <selection>n + 1</selection>
}
@@ -0,0 +1,14 @@
// WITH_RUNTIME
// EXTRACTION_TARGET: lazy property
import kotlin.properties.Delegates
val n: Int = 1
fun foo(): Int {
return i
}
private val i: Int by Delegates.lazy {
n + 1
}
@@ -0,0 +1,14 @@
// WITH_RUNTIME
// EXTRACTION_TARGET: lazy property
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return if (n > 1) <selection>{
println(n)
m + n + 1
}</selection> else 0
}
}
@@ -0,0 +1,20 @@
// WITH_RUNTIME
// EXTRACTION_TARGET: lazy property
import kotlin.properties.Delegates
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return if (n > 1) {
i
} else 0
}
private val i: Int by Delegates.lazy {
println(n)
m + n + 1
}
}
@@ -0,0 +1,10 @@
// EXTRACTION_TARGET: lazy property
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
<selection>return m + n + 1</selection>
}
}
@@ -0,0 +1 @@
Can't generate lazy property: return m + n + 1
@@ -1 +1 @@
Can't generate property: n + 1
Can't generate property with getter: n + 1
@@ -1 +1 @@
Can't generate property: 1 + 1
Can't generate property with getter: 1 + 1
@@ -0,0 +1,13 @@
// EXTRACTION_TARGET: property with initializer
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return if (n > 1) <selection>{
println(n)
m + n + 1
}</selection> else 0
}
}
@@ -0,0 +1 @@
Can't generate property with initializer: println(n) m + n + 1
@@ -0,0 +1,11 @@
// EXTRACTION_TARGET: property with initializer
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
val t = <selection>return m + n + 1</selection>
return t
}
}
@@ -0,0 +1 @@
Can't generate property with initializer: return m + n + 1
@@ -0,0 +1,12 @@
// EXTRACTION_TARGET: property with initializer
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return if (n > 1) <selection>{
m + n + 1
}</selection> else 0
}
}
@@ -0,0 +1,14 @@
// EXTRACTION_TARGET: property with initializer
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return if (n > 1) {
i
} else 0
}
private val i = m + n + 1
}
@@ -0,0 +1,9 @@
// EXTRACTION_TARGET: property with initializer
class A {
fun foo(): Int {
<selection>val a = 1 + 2
val b = a*2</selection>
val c = b - 1
}
}
@@ -0,0 +1 @@
Can't generate property with initializer: val a = 1 + 2 val b = a*2
@@ -0,0 +1,10 @@
// EXTRACTION_TARGET: property with initializer
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return <selection>m + n + 1</selection>
}
}
@@ -0,0 +1,12 @@
// EXTRACTION_TARGET: property with initializer
class A(val n: Int = 1) {
val m: Int = 2
fun foo(): Int {
return i
}
private val i = m + n + 1
}
@@ -0,0 +1,7 @@
// EXTRACTION_TARGET: property with initializer
val n: Int = 1
fun foo(): Int {
return <selection>n + 1</selection>
}
@@ -0,0 +1,9 @@
// EXTRACTION_TARGET: property with initializer
val n: Int = 1
fun foo(): Int {
return i
}
private val i = n + 1
@@ -1 +1 @@
Can't generate property: n + m + 1
Can't generate property with getter: n + m + 1