IR: preserve argument evaluation order more carefully

1. receivers should be evaluated before named arguments;
 2. just because an argument has no side effects doesn't mean it is not
    affected by the other arguments' side effects - in that case it
    should still be evaluated in source order.

 #KT-47660 Fixed
This commit is contained in:
pyos
2021-07-12 15:30:55 +02:00
committed by TeamCityServer
parent b5942204dc
commit 3dc7b6c3ee
14 changed files with 123 additions and 298 deletions
@@ -17,9 +17,7 @@ open class Base {
class Test1 : Base {
constructor(xx: Int, yy: Int) /* primary */ {
{ // BLOCK
super/*Base*/(x = xx, y = yy)
}
super/*Base*/(x = xx, y = yy)
/* <init>() */
}
@@ -28,17 +26,13 @@ class Test1 : Base {
class Test2 : Base {
constructor(xx: Int, yy: Int) {
{ // BLOCK
super/*Base*/(x = xx, y = yy)
}
super/*Base*/(x = xx, y = yy)
/* <init>() */
}
constructor(xxx: Int, yyy: Int, a: Any) {
{ // BLOCK
this/*Test2*/(xx = xxx, yy = yyy)
}
this/*Test2*/(xx = xxx, yy = yyy)
}
}