[FIR] Let prefix inc/dec call getter twice for compatibility with K1
#KT-57179 Fixed
This commit is contained in:
committed by
Space Team
parent
fea344faa4
commit
45d2424ad8
@@ -1,46 +0,0 @@
|
||||
class IncDec() {
|
||||
operator fun inc() : IncDec = this
|
||||
operator fun dec() : IncDec = this
|
||||
}
|
||||
|
||||
fun testIncDec() {
|
||||
var x = IncDec()
|
||||
x++
|
||||
++x
|
||||
x--
|
||||
--x
|
||||
x = x++
|
||||
x = x--
|
||||
x = ++x
|
||||
x = --x
|
||||
}
|
||||
|
||||
class WrongIncDec() {
|
||||
<!INAPPLICABLE_OPERATOR_MODIFIER!>operator<!> fun inc() : Int = 1
|
||||
<!INAPPLICABLE_OPERATOR_MODIFIER!>operator<!> fun dec() : Int = 1
|
||||
}
|
||||
|
||||
fun testWrongIncDec() {
|
||||
var x = WrongIncDec()
|
||||
x<!RESULT_TYPE_MISMATCH!>++<!>
|
||||
<!RESULT_TYPE_MISMATCH!>++x<!>
|
||||
x<!RESULT_TYPE_MISMATCH!>--<!>
|
||||
<!RESULT_TYPE_MISMATCH!>--x<!>
|
||||
}
|
||||
|
||||
class UnitIncDec() {
|
||||
<!INAPPLICABLE_OPERATOR_MODIFIER!>operator<!> fun inc() : Unit {}
|
||||
<!INAPPLICABLE_OPERATOR_MODIFIER!>operator<!> fun dec() : Unit {}
|
||||
}
|
||||
|
||||
fun testUnitIncDec() {
|
||||
var x = UnitIncDec()
|
||||
x<!INC_DEC_SHOULD_NOT_RETURN_UNIT!>++<!>
|
||||
<!INC_DEC_SHOULD_NOT_RETURN_UNIT!>++<!>x
|
||||
x<!INC_DEC_SHOULD_NOT_RETURN_UNIT!>--<!>
|
||||
<!INC_DEC_SHOULD_NOT_RETURN_UNIT!>--<!>x
|
||||
x = x<!INC_DEC_SHOULD_NOT_RETURN_UNIT!>++<!>
|
||||
x = x<!INC_DEC_SHOULD_NOT_RETURN_UNIT!>--<!>
|
||||
x = <!INC_DEC_SHOULD_NOT_RETURN_UNIT, INC_DEC_SHOULD_NOT_RETURN_UNIT!>++<!>x
|
||||
x = <!INC_DEC_SHOULD_NOT_RETURN_UNIT, INC_DEC_SHOULD_NOT_RETURN_UNIT!>--<!>x
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
class IncDec() {
|
||||
operator fun inc() : IncDec = this
|
||||
operator fun dec() : IncDec = this
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ object MismatchingTypes {
|
||||
}
|
||||
|
||||
fun testMismatchingTypes() {
|
||||
++<!ARGUMENT_TYPE_MISMATCH!>MismatchingTypes[0]<!>
|
||||
<!ARGUMENT_TYPE_MISMATCH!>++MismatchingTypes[0]<!>
|
||||
<!ARGUMENT_TYPE_MISMATCH!>MismatchingTypes[0]++<!>
|
||||
MismatchingTypes[0] <!UNRESOLVED_REFERENCE!>+=<!> 1
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// Breaking change in K2, see KT-57178
|
||||
|
||||
open class I {
|
||||
operator fun inc(): ST = ST()
|
||||
}
|
||||
|
||||
class ST : I()
|
||||
|
||||
var topLevel: I
|
||||
get() = I()
|
||||
set(value) {}
|
||||
|
||||
fun main() {
|
||||
val x: ST = <!INITIALIZER_TYPE_MISMATCH!>++topLevel<!>
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
// Breaking change in K2, see KT-57178
|
||||
|
||||
open class I {
|
||||
operator fun inc(): ST = ST()
|
||||
}
|
||||
|
||||
class ST : I()
|
||||
|
||||
var topLevel: I
|
||||
get() = I()
|
||||
set(value) {}
|
||||
|
||||
fun main() {
|
||||
val x: ST = ++topLevel
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// Changed in K2, see KT-57178
|
||||
|
||||
open class I {
|
||||
operator fun inc(): ST = ST()
|
||||
}
|
||||
|
||||
class ST : I()
|
||||
|
||||
fun main() {
|
||||
var local = I()
|
||||
val x: ST = ++local
|
||||
val y: ST = local
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// Changed in K2, see KT-57178
|
||||
|
||||
open class I {
|
||||
operator fun inc(): ST = ST()
|
||||
}
|
||||
|
||||
class ST : I()
|
||||
|
||||
fun main() {
|
||||
var local = I()
|
||||
val x: ST = ++local
|
||||
val y: ST = <!TYPE_MISMATCH!>local<!>
|
||||
}
|
||||
Reference in New Issue
Block a user