[IR] Add special preprocessors for ir interpreter
These preprocessors allow us to modify IR at first and only after that try to evaluate. With this we can drop `KCallableNamePropertyLowering`.
This commit is contained in:
+2
@@ -15,6 +15,7 @@ const val methodName = A::foo.<!EVALUATED("foo")!>name<!>
|
||||
const val suspendMethodName = A::bar.<!EVALUATED("bar")!>name<!>
|
||||
const val className = ::A.<!EVALUATED("<init>")!>name<!>
|
||||
const val topLevelPropName = ::topLevelProp.<!EVALUATED("topLevelProp")!>name<!>
|
||||
const val nameInComplexExpression = A::OK.<!EVALUATED("OK")!>name<!> <!EVALUATED("OK!")!>+ "!"<!>
|
||||
|
||||
// STOP_EVALUATION_CHECKS
|
||||
fun box(): String {
|
||||
@@ -24,5 +25,6 @@ fun box(): String {
|
||||
if (suspendMethodName.id() != "bar") return "Fail 3.2"
|
||||
if (className.id() != "<init>") return "Fail 4"
|
||||
if (topLevelPropName.id() != "topLevelProp") return "Fail 5"
|
||||
if (nameInComplexExpression.id() != "OK!") return "Fail 5"
|
||||
return "OK"
|
||||
}
|
||||
|
||||
Vendored
+7
-4
@@ -17,13 +17,16 @@ class A {
|
||||
val b = A::b.<!EVALUATED("b")!>name<!>
|
||||
|
||||
val c = ::A.<!EVALUATED("<init>")!>name<!>
|
||||
val d = this::a.name
|
||||
val d = this::a.<!EVALUATED("a")!>name<!>
|
||||
|
||||
val e = A()::b.name
|
||||
val f = getA()::b.name
|
||||
val e = A()::b.<!EVALUATED("b")!>name<!>
|
||||
val f = getA()::b.<!EVALUATED("b")!>name<!>
|
||||
|
||||
val temp = A()
|
||||
val g = temp::b.name
|
||||
val g = temp::b.<!EVALUATED("b")!>name<!>
|
||||
|
||||
val complexExpression1 = A()::a.<!EVALUATED("a")!>name<!> + A()::b.<!EVALUATED("b")!>name<!>
|
||||
val complexExpression2 = A::a.<!EVALUATED("a")!>name<!> <!EVALUATED("ab")!>+ A::b.<!EVALUATED("b")!>name<!><!>
|
||||
}
|
||||
|
||||
fun getA(): A = A()
|
||||
|
||||
Reference in New Issue
Block a user