Enable ReplaceWith for type aliases (KT-14929)

#KT-14929 Fixed
This commit is contained in:
Nikolay Krasko
2017-07-21 19:55:45 +03:00
parent 224df7a1ea
commit 5df2698f77
16 changed files with 263 additions and 19 deletions
@@ -0,0 +1,20 @@
// "Replace with 'New<T, U>'" "false"
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
@Deprecated("Use New", replaceWith = ReplaceWith("New<T, U>"))
class Old<T, U>
@Deprecated("Use New1", replaceWith = ReplaceWith("New1"))
class Old1
@Deprecated("Use New2", replaceWith = ReplaceWith("New2"))
class Old2
typealias OOO = Old<Old1, Old2>
class New<T, U>
class New1
class New2
fun foo(): <caret>OOO? = null
@@ -0,0 +1,17 @@
// "Replace with 'NewClass'" "false"
// ACTION: Introduce local variable
// ACTION: Replace with 'New'
@Deprecated("Use NewClass", ReplaceWith("NewClass"))
class OldClass
@Deprecated("Use New", ReplaceWith("New"))
typealias Old = OldClass
class NewClass
typealias New = NewClass
fun foo() {
<caret>Old()
}
@@ -0,0 +1,15 @@
// "Replace with 'New'" "true"
package ppp
@Deprecated("", ReplaceWith("NewClass"))
class OldClass(p: Int)
@Deprecated("", ReplaceWith("New"))
typealias Old = OldClass
class NewClass(p: Int)
typealias New = NewClass
fun foo() {
<caret>Old(1)
}
@@ -0,0 +1,15 @@
// "Replace with 'New'" "true"
package ppp
@Deprecated("", ReplaceWith("NewClass"))
class OldClass(p: Int)
@Deprecated("", ReplaceWith("New"))
typealias Old = OldClass
class NewClass(p: Int)
typealias New = NewClass
fun foo() {
New(1)
}
@@ -0,0 +1,16 @@
// "Replace with 'New'" "false"
// ACTION: Convert to block body
// ACTION: Introduce local variable
// ACTION: Replace with 'NewClass(12)'
@Deprecated("Use NewClass", replaceWith = ReplaceWith("NewClass"))
class OldClass @Deprecated("Use NewClass(12)", replaceWith = ReplaceWith("NewClass(12)")) constructor()
@Deprecated("Use New", replaceWith = ReplaceWith("New"))
typealias Old = OldClass
class NewClass(p: Int = 12)
typealias New = NewClass
// 'New' replacement shouldn't be used because it may brake code behaviour
fun foo() = <caret>Old()
@@ -0,0 +1,12 @@
// "Replace with 'NewClass(12)'" "true"
@Deprecated("Use NewClass", replaceWith = ReplaceWith("NewClass"))
class OldClass @Deprecated("Use NewClass(12)", replaceWith = ReplaceWith("NewClass(12)")) constructor()
@Deprecated("Use New", replaceWith = ReplaceWith("New"))
typealias Old = OldClass
class NewClass(p: Int = 12)
typealias New = NewClass
fun foo() = <caret>Old()
@@ -0,0 +1,12 @@
// "Replace with 'NewClass(12)'" "true"
@Deprecated("Use NewClass", replaceWith = ReplaceWith("NewClass"))
class OldClass @Deprecated("Use NewClass(12)", replaceWith = ReplaceWith("NewClass(12)")) constructor()
@Deprecated("Use New", replaceWith = ReplaceWith("New"))
typealias Old = OldClass
class NewClass(p: Int = 12)
typealias New = NewClass
fun foo() = NewClass(12)
@@ -0,0 +1,8 @@
// "Replace with 'Some'" "true"
class Some
@Deprecated("Use Some instead", replaceWith = ReplaceWith("Some"))
typealias A = Some
val a: <caret>A = A()
@@ -0,0 +1,8 @@
// "Replace with 'Some'" "true"
class Some
@Deprecated("Use Some instead", replaceWith = ReplaceWith("Some"))
typealias A = Some
val a: Some = A()
@@ -0,0 +1,12 @@
// "Replace with 'NewClass'" "false"
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
@Deprecated("", ReplaceWith("NewClass"))
class OldClass
typealias Old = OldClass
class NewClass
fun foo(): <caret>Old = null!!
@@ -0,0 +1,14 @@
// "Replace with 'NewClass'" "false"
// ACTION: Convert to block body
// ACTION: Introduce local variable
@Deprecated("", replaceWith = ReplaceWith("NewClass"))
class OldClass()
typealias Old1 = OldClass
typealias Old2 = Old1
class NewClass()
fun foo() = <caret>Old2()
@@ -0,0 +1,10 @@
// "Replace with 'X<Int>'" "true"
package ppp
class X<T>
@Deprecated("Will be dropped", replaceWith = ReplaceWith("X<Int>", "ppp.X"))
typealias IntX = X<Int>
fun foo(ix: <caret>IntX) {}
@@ -0,0 +1,10 @@
// "Replace with 'X<Int>'" "true"
package ppp
class X<T>
@Deprecated("Will be dropped", replaceWith = ReplaceWith("X<Int>", "ppp.X"))
typealias IntX = X<Int>
fun foo(ix: <caret>X<Int>) {}