K2 Scripting: wrap script statements into blocks

(reuse anonymous initializers as block wrappers) so the top-level script
elements are all declarations now. Rename the property accordingly (
together with the previous commit).
It makes script more similar to the class and thus simplify e.g.
control flow analysis and resolve code.
This commit is contained in:
Ilya Chernikov
2023-11-22 16:40:51 +01:00
committed by Space Team
parent c9aee5bf09
commit eeb723eb01
20 changed files with 224 additions and 156 deletions
@@ -37,28 +37,43 @@ FILE: script.kts
^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|<local>/A| {
super<R|kotlin/Any|>()
}
public? final? fun doo(): R|kotlin/Unit| {
init {
build#(<L> = build@fun <implicit>.<anonymous>(): <implicit> <inline=Unknown> {
version# = String(123)
local final? class A : R|kotlin/Any| {
public? [ContainingClassKey=A] constructor(): R|<local>/A| {
super<R|kotlin/Any|>()
}
public? final? fun doo(): R|kotlin/Unit| {
}
}
execute#()
}
execute#()
)
}
)
+=(version#, IntegerLiteral(123))
init {
+=(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#()
init {
println#()
}
init {
builder#.version# = String()
}
init {
builder#.execute#()
}