Pull Up: Initial support

#KT-7330 Fixed
This commit is contained in:
Alexey Sedunov
2015-07-16 16:08:20 +03:00
parent e303a38f9e
commit 39ff3c3000
47 changed files with 1709 additions and 23 deletions
+27
View File
@@ -0,0 +1,27 @@
// WITH_RUNTIME
open class A
abstract class <caret>B: A() {
// INFO: {"checked": "true"}
val x = 1
// INFO: {"checked": "true"}
val y: Int get() = 2
// INFO: {"checked": "true"}
val z: Int by lazy { 3 }
// INFO: {"checked": "true"}
abstract val t: Int
// INFO: {"checked": "true"}
fun foo(n: Int): Boolean = n > 0
// INFO: {"checked": "true"}
abstract fun bar(s: String)
// INFO: {"checked": "true"}
inner class X {
}
// INFO: {"checked": "true"}
class Y {
}
}
@@ -0,0 +1,31 @@
// WITH_RUNTIME
abstract class A {
// INFO: {"checked": "true"}
val x = 1
// INFO: {"checked": "true"}
val y: Int get() = 2
// INFO: {"checked": "true"}
val z: Int by lazy { 3 }
// INFO: {"checked": "true"}
abstract val t: Int
// INFO: {"checked": "true"}
fun foo(n: Int): Boolean = n > 0
// INFO: {"checked": "true"}
abstract fun bar(s: String)
// INFO: {"checked": "true"}
inner class X {
}
// INFO: {"checked": "true"}
class Y {
}
}
abstract class B: A() {
}
@@ -0,0 +1,27 @@
// WITH_RUNTIME
open class A
abstract class <caret>B: A() {
// INFO: {"checked": "true", "toAbstract": "true"}
val x = 1
// INFO: {"checked": "true", "toAbstract": "true"}
val y: Int get() = 2
// INFO: {"checked": "true", "toAbstract": "true"}
val z: Int by lazy { 3 }
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val t: Int
// INFO: {"checked": "true", "toAbstract": "true"}
fun foo(n: Int): Boolean = n > 0
// INFO: {"checked": "true", "toAbstract": "true"}
abstract fun bar(s: String)
// INFO: {"checked": "true", "toAbstract": "true"}
inner class X {
}
// INFO: {"checked": "true", "toAbstract": "true"}
class Y {
}
}
@@ -0,0 +1,40 @@
// WITH_RUNTIME
abstract class A {
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val x: Int
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val y: Int
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val z: Int
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val t: Int
// INFO: {"checked": "true", "toAbstract": "true"}
abstract fun foo(n: Int): Boolean
// INFO: {"checked": "true", "toAbstract": "true"}
abstract fun bar(s: String)
// INFO: {"checked": "true", "toAbstract": "true"}
inner class X {
}
// INFO: {"checked": "true", "toAbstract": "true"}
class Y {
}
}
abstract class B: A() {
// INFO: {"checked": "true", "toAbstract": "true"}
override val x = 1
// INFO: {"checked": "true", "toAbstract": "true"}
override val y: Int get() = 2
// INFO: {"checked": "true", "toAbstract": "true"}
override val z: Int by lazy { 3 }
// INFO: {"checked": "true", "toAbstract": "true"}
override fun foo(n: Int): Boolean = n > 0
}
@@ -0,0 +1,36 @@
// WITH_RUNTIME
interface I
interface Z<T>
open class A<T: I, U: I, V>
class C<W: I> {
inner class <caret>B<X: I, Y>(x: X, y: Y): A<X, I, Z<Y>>() {
// INFO: {"checked": "true"}
fun foo<S>(x1: X, x2: Z<X>, y1: Y, y2: Z<Y>, w1: W, w2: Z<W>, s1: S, s2: Z<S>) {
}
// INFO: {"checked": "true"}
inner class Foo<S>(x1: X, x2: Z<X>, y1: Y, y2: Z<Y>, w1: W, w2: Z<W>, s1: S, s2: Z<S>): A<X, I, Z<Y>>(), Z<W> {
}
// INFO: {"checked": "true"}
val foo1: X
// INFO: {"checked": "true"}
val foo2: Z<X>
// INFO: {"checked": "true"}
val foo3: Y
// INFO: {"checked": "true"}
val foo4: Z<Y>
// INFO: {"checked": "true", "toAbstract": "true"}
val foo5 = x
// INFO: {"checked": "true", "toAbstract": "true"}
val foo6 = object: Z<X> {}
// INFO: {"checked": "true", "toAbstract": "true"}
val foo7 = y
// INFO: {"checked": "true", "toAbstract": "true"}
val foo8 = object: Z<Y> {}
}
}
@@ -0,0 +1,47 @@
// WITH_RUNTIME
interface I
interface Z<T>
abstract class A<T: I, U: I, V> {
// INFO: {"checked": "true"}
val foo1: T
// INFO: {"checked": "true"}
val foo2: Z<T>
// INFO: {"checked": "true"}
val foo3: Any?
// INFO: {"checked": "true"}
val foo4: Z<Any?>
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val foo5: T
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val foo6: Z<T>
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val foo7: Any?
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val foo8: Z<Any?>
// INFO: {"checked": "true"}
fun foo<S>(x1: T, x2: Z<T>, y1: Any?, y2: Z<Any?>, w1: I, w2: Z<I>, s1: S, s2: Z<S>) {
}
// INFO: {"checked": "true"}
inner class Foo<S>(x1: T, x2: Z<T>, y1: Any?, y2: Z<Any?>, w1: I, w2: Z<I>, s1: S, s2: Z<S>): A<T, I, Z<Any?>>(), Z<I> {
}
}
class C<W: I> {
inner class B<X: I, Y>(x: X, y: Y): A<X, I, Z<Y>>() {
// INFO: {"checked": "true", "toAbstract": "true"}
override val foo5 = x
// INFO: {"checked": "true", "toAbstract": "true"}
override val foo6 = object: Z<X> {}
// INFO: {"checked": "true", "toAbstract": "true"}
override val foo7 = y
// INFO: {"checked": "true", "toAbstract": "true"}
override val foo8 = object: Z<Y> {}
}
}
@@ -0,0 +1,27 @@
// WITH_RUNTIME
interface T
abstract class <caret>B: T {
// INFO: {"checked": "true"}
val x = 1
// INFO: {"checked": "true"}
val y: Int get() = 2
// INFO: {"checked": "true"}
val z: Int by lazy { 3 }
// INFO: {"checked": "true"}
abstract val t: Int
// INFO: {"checked": "true"}
fun foo(n: Int): Boolean = n > 0
// INFO: {"checked": "true"}
abstract fun bar(s: String)
// INFO: {"checked": "true"}
inner class X {
}
// INFO: {"checked": "true"}
class Y {
}
}
@@ -0,0 +1,35 @@
// WITH_RUNTIME
interface T {
// INFO: {"checked": "true"}
val x: Int
// INFO: {"checked": "true"}
val y: Int get() = 2
// INFO: {"checked": "true"}
val z: Int
// INFO: {"checked": "true"}
val t: Int
// INFO: {"checked": "true"}
fun foo(n: Int): Boolean = n > 0
// INFO: {"checked": "true"}
fun bar(s: String)
// INFO: {"checked": "true"}
class X {
}
// INFO: {"checked": "true"}
class Y {
}
}
abstract class B: T {
// INFO: {"checked": "true"}
override val x = 1
// INFO: {"checked": "true"}
override val z: Int by lazy { 3 }
}
@@ -0,0 +1,27 @@
// WITH_RUNTIME
interface T
abstract class <caret>B: T {
// INFO: {"checked": "true", "toAbstract": "true"}
val x = 1
// INFO: {"checked": "true", "toAbstract": "true"}
val y: Int get() = 2
// INFO: {"checked": "true", "toAbstract": "true"}
val z: Int by lazy { 3 }
// INFO: {"checked": "true", "toAbstract": "true"}
abstract val t: Int
// INFO: {"checked": "true", "toAbstract": "true"}
fun foo(n: Int): Boolean = n > 0
// INFO: {"checked": "true", "toAbstract": "true"}
abstract fun bar(s: String)
// INFO: {"checked": "true", "toAbstract": "true"}
inner class X {
}
// INFO: {"checked": "true", "toAbstract": "true"}
class Y {
}
}
@@ -0,0 +1,40 @@
// WITH_RUNTIME
interface T {
// INFO: {"checked": "true", "toAbstract": "true"}
val x: Int
// INFO: {"checked": "true", "toAbstract": "true"}
val y: Int
// INFO: {"checked": "true", "toAbstract": "true"}
val z: Int
// INFO: {"checked": "true", "toAbstract": "true"}
val t: Int
// INFO: {"checked": "true", "toAbstract": "true"}
fun foo(n: Int): Boolean
// INFO: {"checked": "true", "toAbstract": "true"}
fun bar(s: String)
// INFO: {"checked": "true", "toAbstract": "true"}
class X {
}
// INFO: {"checked": "true", "toAbstract": "true"}
class Y {
}
}
abstract class B: T {
// INFO: {"checked": "true", "toAbstract": "true"}
override val x = 1
// INFO: {"checked": "true", "toAbstract": "true"}
override val y: Int get() = 2
// INFO: {"checked": "true", "toAbstract": "true"}
override val z: Int by lazy { 3 }
// INFO: {"checked": "true", "toAbstract": "true"}
override fun foo(n: Int): Boolean = n > 0
}
@@ -0,0 +1,12 @@
open class A
class X {
class <caret>B: A() {
// INFO: {"checked": "true"}
fun foo(): Int = bar() + B.bar() + X.B.bar()
companion object {
fun bar() = 1
}
}
}
@@ -0,0 +1,13 @@
open class A {
// INFO: {"checked": "true"}
fun foo(): Int = X.B.bar() + X.B.bar() + X.B.bar()
}
class X {
class B: A() {
companion object {
fun bar() = 1
}
}
}
+4
View File
@@ -0,0 +1,4 @@
class A {
val x: Int = 1
}
+2
View File
@@ -0,0 +1,2 @@
Cannot perform refactoring.
Caret should be positioned inside a class to pull members from
+3
View File
@@ -0,0 +1,3 @@
class <caret>A {
val x: Int = 1
}
@@ -0,0 +1,2 @@
Cannot perform refactoring.
A does not have base classes/interfaces in current project
+3
View File
@@ -0,0 +1,3 @@
fun <caret>test() {
}
@@ -0,0 +1,2 @@
Cannot perform refactoring.
Caret should be positioned inside a class to pull members from
+6
View File
@@ -0,0 +1,6 @@
interface I
class <caret>A: I {
// INFO: {"checked": "true"}
public fun foo(): Int = 1
}
@@ -0,0 +1,7 @@
interface I {
// INFO: {"checked": "true"}
fun foo(): Int = 1
}
class A: I {
}
+10
View File
@@ -0,0 +1,10 @@
open class A {
open fun bar() = 1
}
class <caret>B: A() {
override fun bar() = 1
// INFO: {"checked": "true"}
fun foo() = super.bar()
}
+10
View File
@@ -0,0 +1,10 @@
open class A {
open fun bar() = 1
// INFO: {"checked": "true"}
fun foo() = bar()
}
class B: A() {
override fun bar() = 1
}
@@ -0,0 +1,13 @@
// TARGET_CLASS: A
open class A {
}
open class B: A() {
}
class <caret>C: B() {
// INFO: {"checked": "true"}
val x: Int
}
@@ -0,0 +1,13 @@
// TARGET_CLASS: A
open class A {
// INFO: {"checked": "true"}
val x: Int
}
open class B: A() {
}
class C: B() {
}
@@ -0,0 +1,8 @@
open class A
class <caret>B: A() {
// INFO: {"checked": "true"}
private fun foo(): Int = 1
fun bar() = foo() + 1
}
@@ -0,0 +1,9 @@
open class A {
// INFO: {"checked": "true"}
protected fun foo(): Int = 1
}
class B: A() {
fun bar() = foo() + 1
}