[FIR] add RawFirBuilder test for script

^KT-60728
^KT-60519
This commit is contained in:
Dmitrii Gridin
2023-07-30 01:54:47 +02:00
committed by Space Team
parent 2c932c9e1d
commit a2dc6ca8f2
9 changed files with 173 additions and 20 deletions
@@ -0,0 +1,36 @@
class Builder {
var version: String = ""
fun execute() {
println(version)
}
class Nested {
fun foo() {}
fun boo() {}
}
}
fun build(action: Builder.() -> Unit) = Builder().apply(action)
fun build2(action: Builder.() -> Unit): Builder = Builder().apply(action)
build {
version = "123"
class A {
fun doo() {
}
}
execute()
}
version += 123
val builder = build {
version = "321"
}
println()
builder.version = ""
builder.execute()
@@ -0,0 +1,39 @@
FILE: script.kts
SCRIPT:
public? final? class Builder : R|kotlin/Any| {
public? constructor(): R|Builder| {
LAZY_super<R|kotlin/Any|>
}
public? final? var version: String = LAZY_EXPRESSION
public? get(): String
public? set(value: String): R|kotlin/Unit|
public? final? fun execute(): R|kotlin/Unit| { LAZY_BLOCK }
public? final? class Nested : R|kotlin/Any| {
public? constructor(): R|Builder.Nested| {
LAZY_super<R|kotlin/Any|>
}
public? final? fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
public? final? fun boo(): R|kotlin/Unit| { LAZY_BLOCK }
}
}
public? final? fun build(action: ( Builder.() -> Unit )): <implicit> { LAZY_BLOCK }
public? final? fun build2(action: ( Builder.() -> Unit )): Builder { LAZY_BLOCK }
build#(<L> = LAZY_EXPRESSION)
+=(version#, IntegerLiteral(123))
public? final? val builder: <implicit> = LAZY_EXPRESSION
public? get(): <implicit>
println#()
builder#.version# = String()
builder#.execute#()
@@ -0,0 +1,64 @@
FILE: script.kts
SCRIPT:
public? final? class Builder : R|kotlin/Any| {
public? [ContainingClassKey=Builder] constructor(): R|Builder| {
super<R|kotlin/Any|>()
}
public? final? var version: String = String()
public? [ContainingClassKey=Builder] get(): String
public? [ContainingClassKey=Builder] set(value: String): R|kotlin/Unit|
public? final? fun execute(): R|kotlin/Unit| {
println#(version#)
}
public? final? class Nested : R|kotlin/Any| {
public? [ContainingClassKey=Nested] constructor(): R|Builder.Nested| {
super<R|kotlin/Any|>()
}
public? final? fun foo(): R|kotlin/Unit| {
}
public? final? fun boo(): R|kotlin/Unit| {
}
}
}
public? final? fun build(action: ( Builder.() -> Unit )): <implicit> {
^build Builder#().apply#(action#)
}
public? final? fun build2(action: ( Builder.() -> Unit )): Builder {
^build2 Builder#().apply#(action#)
}
build#(<L> = build@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
version# = String(123)
local final? class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? fun doo(): R|kotlin/Unit| {
}
}
execute#()
}
)
+=(version#, IntegerLiteral(123))
public? final? val builder: <implicit> = build#(<L> = build@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
version# = String(321)
}
)
public? get(): <implicit>
println#()
builder#.version# = String()
builder#.execute#()