Additional tests on mod/rem migration

This commit is contained in:
Mikhail Zarechenskiy
2016-12-09 16:42:27 +03:00
parent 040f4e90ce
commit 8e73a902e4
17 changed files with 289 additions and 22 deletions
@@ -0,0 +1,41 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class OldAndNew {
<!DEPRECATED_BINARY_MOD!>operator<!> fun modAssign(x: Int) {}
operator fun remAssign(x: Int) {}
}
class OnlyOld {
<!DEPRECATED_BINARY_MOD!>operator<!> fun modAssign(x: Int) {}
}
class OnlyNew {
operator fun remAssign(x: Int) {}
}
class Sample
<!DEPRECATED_BINARY_MOD!>operator<!> fun Sample.modAssign(x: Int) {}
operator fun Sample.remAssign(x: Int) {}
class ModAndRemAssign {
<!DEPRECATED_BINARY_MOD!>operator<!> fun mod(x: Int): ModAndRemAssign = ModAndRemAssign()
operator fun remAssign(x: Int) {}
}
fun test() {
val oldAndNew = OldAndNew()
oldAndNew %= 1
val onlyOld = OnlyOld()
onlyOld <!DEPRECATED_BINARY_MOD_AS_REM!>%=<!> 1
val onlyNew = OnlyNew()
onlyNew %= 1
val sample = Sample()
sample %= 1
var modAndRemAssign = ModAndRemAssign()
modAndRemAssign %= 1
}
@@ -0,0 +1,46 @@
package
public fun test(): kotlin.Unit
public operator fun Sample.modAssign(/*0*/ x: kotlin.Int): kotlin.Unit
public operator fun Sample.remAssign(/*0*/ x: kotlin.Int): kotlin.Unit
public final class ModAndRemAssign {
public constructor ModAndRemAssign()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun mod(/*0*/ x: kotlin.Int): ModAndRemAssign
public final operator fun remAssign(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OldAndNew {
public constructor OldAndNew()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun modAssign(/*0*/ x: kotlin.Int): kotlin.Unit
public final operator fun remAssign(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OnlyNew {
public constructor OnlyNew()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun remAssign(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OnlyOld {
public constructor OnlyOld()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun modAssign(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Sample {
public constructor Sample()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,35 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class OldAndNew {
<!DEPRECATED_BINARY_MOD!>operator<!> fun mod(x: Int) {}
operator fun rem(x: Int) {}
}
class OnlyOld {
<!DEPRECATED_BINARY_MOD!>operator<!> fun mod(x: Int) {}
}
class OnlyNew {
operator fun rem(x: Int) {}
}
class Sample
<!DEPRECATED_BINARY_MOD!>operator<!> fun Sample.mod(x: Int) {}
operator fun Sample.rem(x: Int) {}
class IntAndUnit {
<!DEPRECATED_BINARY_MOD!>operator<!> fun mod(x: Int) = 0
operator fun rem(x: Int): Int = 0
}
fun test() {
OldAndNew() % 1
OnlyOld() <!DEPRECATED_BINARY_MOD_AS_REM!>%<!> 1
OnlyNew() % 1
Sample() % 1
takeInt(IntAndUnit() % 1)
}
fun takeInt(x: Int) {}
@@ -0,0 +1,47 @@
package
public fun takeInt(/*0*/ x: kotlin.Int): kotlin.Unit
public fun test(): kotlin.Unit
public operator fun Sample.mod(/*0*/ x: kotlin.Int): kotlin.Unit
public operator fun Sample.rem(/*0*/ x: kotlin.Int): kotlin.Unit
public final class IntAndUnit {
public constructor IntAndUnit()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun mod(/*0*/ x: kotlin.Int): kotlin.Int
public final operator fun rem(/*0*/ x: kotlin.Int): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OldAndNew {
public constructor OldAndNew()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun mod(/*0*/ x: kotlin.Int): kotlin.Unit
public final operator fun rem(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OnlyNew {
public constructor OnlyNew()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun rem(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class OnlyOld {
public constructor OnlyOld()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun mod(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Sample {
public constructor Sample()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,12 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
object OldMod {
<!DEPRECATED_BINARY_MOD!>operator<!> fun mod(x: Int) {}
}
object RemExtension
operator fun RemExtension.rem(x: Int) {}
fun foo() {
OldMod <!DEPRECATED_BINARY_MOD_AS_REM!>%<!> 123
}
@@ -0,0 +1,19 @@
package
public fun foo(): kotlin.Unit
public operator fun RemExtension.rem(/*0*/ x: kotlin.Int): kotlin.Unit
public object OldMod {
private constructor OldMod()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun mod(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public object RemExtension {
private constructor RemExtension()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -9,8 +9,16 @@ class Bar {
<!UNSUPPORTED_FEATURE!>operator<!> fun remAssign(x: Int) {}
}
fun baz() {
val f = Foo() % 1
val b = Bar()
b %= 1
class Baz {
companion object {
<!UNSUPPORTED_FEATURE!>operator<!> fun rem(x: Int) {}
<!UNSUPPORTED_FEATURE!>operator<!> fun Int.rem(x: Int) {}
}
}
<!UNSUPPORTED_FEATURE!>operator<!> fun Baz.rem(x: Int) {}
fun local() {
<!UNSUPPORTED_FEATURE!>operator<!> fun Int.rem(x: Int) {}
<!UNSUPPORTED_FEATURE!>operator<!> fun String.remAssign(x: Int) {}
}
@@ -1,6 +1,7 @@
package
public fun baz(): kotlin.Unit
public fun local(): kotlin.Unit
public operator fun Baz.rem(/*0*/ x: kotlin.Int): kotlin.Unit
public final class Bar {
public constructor Bar()
@@ -10,6 +11,22 @@ public final class Bar {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Baz {
public constructor Baz()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Companion {
private constructor Companion()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun rem(/*0*/ x: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final operator fun kotlin.Int.rem(/*0*/ x: kotlin.Int): kotlin.Unit
}
}
public final class Foo {
public constructor Foo()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -0,0 +1,15 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class A {
companion object {
operator fun A.rem(x: Int) = 0
}
fun test() {
<!DEPRECATED_BINARY_MOD!>operator<!> fun A.mod(x: Int) = ""
takeInt(A() % 123)
}
}
fun takeInt(x: Int) {}
@@ -0,0 +1,19 @@
package
public fun takeInt(/*0*/ x: kotlin.Int): kotlin.Unit
public final class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Companion {
private constructor Companion()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final operator fun A.rem(/*0*/ x: kotlin.Int): kotlin.Int
}
}
@@ -0,0 +1,29 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
object B
class A {
operator fun B.rem(x: Int) = 0
}
fun test1() {
<!DEPRECATED_BINARY_MOD!>operator<!> fun B.mod(x: Int) = ""
with(A()) {
takeInt(B % 10)
}
}
class C {
<!DEPRECATED_BINARY_MOD!>operator<!> fun B.mod(x: Int) = ""
}
fun test2() {
operator fun B.rem(x: Int) = 0
with(C()) {
takeInt(B % 10)
}
}
fun takeInt(x: Int) {}
@@ -0,0 +1,28 @@
package
public fun takeInt(/*0*/ x: kotlin.Int): kotlin.Unit
public fun test1(): kotlin.Unit
public fun test2(): kotlin.Unit
public final class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final operator fun B.rem(/*0*/ x: kotlin.Int): kotlin.Int
}
public object B {
private constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final operator fun B.mod(/*0*/ x: kotlin.Int): kotlin.String
}
@@ -0,0 +1,19 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class A {
<!DEPRECATED_BINARY_MOD!>operator<!> fun Int.mod(s: String) = 4
}
class B {
operator fun Int.rem(s: String) = ""
}
fun test() {
with(B()) {
with(A()) {
takeString(1 % "")
}
}
}
fun takeString(s: String) {}
@@ -0,0 +1,20 @@
package
public fun takeString(/*0*/ s: kotlin.String): kotlin.Unit
public fun test(): kotlin.Unit
public final class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final operator fun kotlin.Int.mod(/*0*/ s: kotlin.String): kotlin.Int
}
public final class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final operator fun kotlin.Int.rem(/*0*/ s: kotlin.String): kotlin.String
}
@@ -0,0 +1,14 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
object A {
@Deprecated("Use mod instead", ReplaceWith("mod"), DeprecationLevel.HIDDEN)
operator fun rem(x: Int) = 0
<!DEPRECATED_BINARY_MOD!>operator<!> fun mod(x: Int) = ""
}
fun test() {
takeString(A <!DEPRECATED_BINARY_MOD_AS_REM!>%<!> 123)
}
fun takeString(s: String) {}
@@ -0,0 +1,13 @@
package
public fun takeString(/*0*/ s: kotlin.String): kotlin.Unit
public fun test(): kotlin.Unit
public object A {
private constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final operator fun mod(/*0*/ x: kotlin.Int): kotlin.String
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "Use mod instead", replaceWith = kotlin.ReplaceWith(expression = "mod", imports = {})) public final operator fun rem(/*0*/ x: kotlin.Int): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}