Pull Up: Initial support
#KT-7330 Fixed
This commit is contained in:
@@ -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
@@ -0,0 +1,4 @@
|
||||
|
||||
class A {
|
||||
val x: Int = 1
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
Cannot perform refactoring.
|
||||
Caret should be positioned inside a class to pull members from
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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()
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user