[LL FIR] make script initializers independent

Now we can resolve all script declarations independently

^KT-65344 Fixed
This commit is contained in:
Dmitrii Gridin
2024-02-05 15:57:24 +01:00
committed by Space Team
parent d59b8b3244
commit 58ad26ee5b
26 changed files with 535 additions and 362 deletions
@@ -14,21 +14,16 @@ Tower Data Context:
Element 6
Scope: FirScriptDeclarationsScope
Classifiers:
FirRegularClassSymbol public final class ScriptClass : R|kotlin/Any|
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun foo(i: R|kotlin/Int|, action: R|(kotlin/Int) -> kotlin/Unit|): R|kotlin/Unit|
FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int|
FirNamedFunctionSymbol public final fun unusedScriptFunction(p: R|kotlin/String|): R|kotlin/Int|
FirNamedFunctionSymbol public? final? fun unusedScriptFunction(p: String): <implicit>
Properties:
FirPropertySymbol public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit|
Element 7
Scope: FirLocalScope
Classifiers:
FirRegularClassSymbol public final class ScriptClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int|
FirNamedFunctionSymbol public final fun unusedScriptFunction(p: R|kotlin/String|): R|kotlin/Int|
Properties:
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
Element 8
@@ -37,9 +32,9 @@ Tower Data Context:
SCRIPT: <script-statement.kts>
lval args: R|kotlin/Array<kotlin/String>|
public final class ScriptClass : R|kotlin/Any|
public final? class ScriptClass : R|kotlin/Any|
public final fun scriptFunction(): R|kotlin/Int|
public final fun unusedScriptFunction(p: R|kotlin/String|): R|kotlin/Int|
public? final? fun unusedScriptFunction(p: String): <implicit>
init
public final fun foo(i: R|kotlin/Int|, action: R|(kotlin/Int) -> kotlin/Unit|): R|kotlin/Unit|
public final val $$result: R|kotlin/Unit|
@@ -53,37 +48,30 @@ Tower Data Context:
FILE: [ResolvedTo(IMPORTS)] statement.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(BODY_RESOLVE)] <script-statement.kts>
[ResolvedTo(BODY_RESOLVE)] lval args: R|kotlin/Array<kotlin/String>|
SCRIPT: [ResolvedTo(TYPES)] <script-statement.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public final [ResolvedTo(STATUS)] class ScriptClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|ScriptClass| {
super<R|kotlin/Any|>()
public final? [ResolvedTo(RAW_FIR)] class ScriptClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|ScriptClass| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(BODY_RESOLVE)] val memberProperty: R|kotlin/Int| = Int(4)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public? final? [ResolvedTo(RAW_FIR)] val memberProperty: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
}
public final [ResolvedTo(BODY_RESOLVE)] fun scriptFunction(): R|kotlin/Int| {
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun scriptFunction(): R|kotlin/Int| {
^scriptFunction Int(42)
}
public final [ResolvedTo(BODY_RESOLVE)] fun unusedScriptFunction([ResolvedTo(BODY_RESOLVE)] p: R|kotlin/String|): R|kotlin/Int| {
^unusedScriptFunction Int(22)
}
public? final? [ResolvedTo(RAW_FIR)] fun unusedScriptFunction([ResolvedTo(RAW_FIR)] p: String): <implicit> { LAZY_BLOCK }
[ResolvedTo(BODY_RESOLVE)] init {
R|/scriptFunction|()
}
public final [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] action: R|(kotlin/Int) -> kotlin/Unit|): R|kotlin/Unit| {
R|<local>/action|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/i|)
}
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(BODY_RESOLVE)] val $$result: R|kotlin/Unit| = R|/foo|(R|/scriptFunction|(), <L> = [ResolvedTo(BODY_RESOLVE)] foo@fun <anonymous>([ResolvedTo(BODY_RESOLVE)] it: R|kotlin/Int|): R|kotlin/Unit| <inline=NoInline> {
R|/scriptFunction|()
}
)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Unit|
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, <L> = LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -14,21 +14,16 @@ Tower Data Context:
Element 6
Scope: FirScriptDeclarationsScope
Classifiers:
FirRegularClassSymbol public final class ScriptClass : R|kotlin/Any|
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun foo(i: R|kotlin/Int|, action: R|(kotlin/Int) -> kotlin/Unit|): R|kotlin/Unit|
FirNamedFunctionSymbol public? final? fun foo(i: Int, action: ( (Int) -> Unit )): R|kotlin/Unit|
FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int|
FirNamedFunctionSymbol public final fun unusedScriptFunction(p: R|kotlin/String|): R|kotlin/Int|
FirNamedFunctionSymbol public? final? fun unusedScriptFunction(p: String): <implicit>
Properties:
FirPropertySymbol public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit|
FirPropertySymbol public final val $$result: <implicit>
public get(): <implicit>
Element 7
Scope: FirLocalScope
Classifiers:
FirRegularClassSymbol public final class ScriptClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int|
FirNamedFunctionSymbol public final fun unusedScriptFunction(p: R|kotlin/String|): R|kotlin/Int|
Properties:
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
Element 8
@@ -37,13 +32,13 @@ Tower Data Context:
SCRIPT: <script-statement.kts>
lval args: R|kotlin/Array<kotlin/String>|
public final class ScriptClass : R|kotlin/Any|
public final? class ScriptClass : R|kotlin/Any|
public final fun scriptFunction(): R|kotlin/Int|
public final fun unusedScriptFunction(p: R|kotlin/String|): R|kotlin/Int|
public? final? fun unusedScriptFunction(p: String): <implicit>
init
public final fun foo(i: R|kotlin/Int|, action: R|(kotlin/Int) -> kotlin/Unit|): R|kotlin/Unit|
public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit|
public? final? fun foo(i: Int, action: ( (Int) -> Unit )): R|kotlin/Unit|
public final val $$result: <implicit>
public get(): <implicit>
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script>
Element 9
@@ -53,37 +48,30 @@ Tower Data Context:
FILE: [ResolvedTo(IMPORTS)] statement.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(BODY_RESOLVE)] <script-statement.kts>
[ResolvedTo(BODY_RESOLVE)] lval args: R|kotlin/Array<kotlin/String>|
SCRIPT: [ResolvedTo(TYPES)] <script-statement.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class ScriptClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|ScriptClass| {
super<R|kotlin/Any|>()
public final? [ResolvedTo(RAW_FIR)] class ScriptClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|ScriptClass| {
LAZY_super<R|kotlin/Any|>
}
public final [ResolvedTo(BODY_RESOLVE)] val memberProperty: R|kotlin/Int| = Int(4)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public? final? [ResolvedTo(RAW_FIR)] val memberProperty: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
}
public final [ResolvedTo(BODY_RESOLVE)] fun scriptFunction(): R|kotlin/Int| {
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun scriptFunction(): R|kotlin/Int| {
^scriptFunction Int(42)
}
public final [ResolvedTo(BODY_RESOLVE)] fun unusedScriptFunction([ResolvedTo(BODY_RESOLVE)] p: R|kotlin/String|): R|kotlin/Int| {
^unusedScriptFunction Int(22)
}
public? final? [ResolvedTo(RAW_FIR)] fun unusedScriptFunction([ResolvedTo(RAW_FIR)] p: String): <implicit> { LAZY_BLOCK }
[ResolvedTo(BODY_RESOLVE)] init {
R|/scriptFunction|()
}
public final [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] action: R|(kotlin/Int) -> kotlin/Unit|): R|kotlin/Unit| {
R|<local>/action|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/i|)
}
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(BODY_RESOLVE)] val $$result: R|kotlin/Unit| = R|/foo|(R|/scriptFunction|(), <L> = [ResolvedTo(BODY_RESOLVE)] foo@fun <anonymous>([ResolvedTo(BODY_RESOLVE)] it: R|kotlin/Int|): R|kotlin/Unit| <inline=NoInline> {
R|/scriptFunction|()
}
)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Unit|
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, <L> = LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -14,11 +14,11 @@ Tower Data Context:
Element 6
Scope: FirScriptDeclarationsScope
Classifiers:
FirRegularClassSymbol public final class After_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final class Before_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final? class Before_OtherClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun after_Fun(): R|kotlin/Unit|
FirNamedFunctionSymbol public final fun before_Fun(): R|kotlin/Unit|
FirNamedFunctionSymbol public? final? fun after_Fun(): R|kotlin/Unit|
FirNamedFunctionSymbol public? final? fun before_Fun(): R|kotlin/Unit|
Properties:
FirPropertySymbol public final val after_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -26,10 +26,6 @@ Tower Data Context:
public get(): R|kotlin/Int|
Element 7
Scope: FirLocalScope
Classifiers:
FirRegularClassSymbol public final class Before_OtherClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun before_Fun(): R|kotlin/Unit|
Properties:
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
Element 8
@@ -38,17 +34,17 @@ Tower Data Context:
SCRIPT: <script-topLevel.kts>
lval args: R|kotlin/Array<kotlin/String>|
public final fun before_Fun(): R|kotlin/Unit|
public? final? fun before_Fun(): R|kotlin/Unit|
public final val before_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
public final class Before_OtherClass : R|kotlin/Any|
public final? class Before_OtherClass : R|kotlin/Any|
init
public final fun after_Fun(): R|kotlin/Unit|
public? final? fun after_Fun(): R|kotlin/Unit|
public final val after_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
public final class After_OtherClass : R|kotlin/Any|
public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script>
Element 9
@@ -58,18 +54,17 @@ Tower Data Context:
FILE: [ResolvedTo(IMPORTS)] topLevel.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(BODY_RESOLVE)] <script-topLevel.kts>
[ResolvedTo(BODY_RESOLVE)] lval args: R|kotlin/Array<kotlin/String>|
SCRIPT: [ResolvedTo(TYPES)] <script-topLevel.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public final [ResolvedTo(BODY_RESOLVE)] fun before_Fun(): R|kotlin/Unit| {
}
public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(BODY_RESOLVE)] val before_Val: R|kotlin/Int| = Int(10)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public? final? [ResolvedTo(RAW_FIR)] val before_Val: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public final [ResolvedTo(STATUS)] class Before_OtherClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|Before_OtherClass| {
super<R|kotlin/Any|>()
public final? [ResolvedTo(RAW_FIR)] class Before_OtherClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|Before_OtherClass| {
LAZY_super<R|kotlin/Any|>
}
}
@@ -78,13 +73,12 @@ FILE: [ResolvedTo(IMPORTS)] topLevel.kts
R|<local>/args|
}
public final [ResolvedTo(BODY_RESOLVE)] fun after_Fun(): R|kotlin/Unit| {
}
public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(BODY_RESOLVE)] val after_Val: R|kotlin/Int| = Int(10)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public? final? [ResolvedTo(RAW_FIR)] val after_Val: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public final [ResolvedTo(STATUS)] class After_OtherClass : R|kotlin/Any| {
public final? [ResolvedTo(RAW_FIR)] class After_OtherClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|After_OtherClass| {
LAZY_super<R|kotlin/Any|>
}
@@ -14,22 +14,18 @@ Tower Data Context:
Element 6
Scope: FirScriptDeclarationsScope
Classifiers:
FirRegularClassSymbol public final class After_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final class Before_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final? class Before_OtherClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun after_Fun(): R|kotlin/Unit|
FirNamedFunctionSymbol public final fun before_Fun(): R|kotlin/Unit|
FirNamedFunctionSymbol public? final? fun after_Fun(): R|kotlin/Unit|
FirNamedFunctionSymbol public? final? fun before_Fun(): R|kotlin/Unit|
Properties:
FirPropertySymbol public final val after_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
FirPropertySymbol public final val before_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
FirPropertySymbol public? final? val after_Val: <implicit>
public? get(): <implicit>
FirPropertySymbol public? final? val before_Val: <implicit>
public? get(): <implicit>
Element 7
Scope: FirLocalScope
Classifiers:
FirRegularClassSymbol public final class Before_OtherClass : R|kotlin/Any|
Functions
FirNamedFunctionSymbol public final fun before_Fun(): R|kotlin/Unit|
Properties:
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
Element 8
@@ -38,17 +34,17 @@ Tower Data Context:
SCRIPT: <script-topLevel.kts>
lval args: R|kotlin/Array<kotlin/String>|
public final fun before_Fun(): R|kotlin/Unit|
public final val before_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
public? final? fun before_Fun(): R|kotlin/Unit|
public? final? val before_Val: <implicit>
public? get(): <implicit>
public final class Before_OtherClass : R|kotlin/Any|
public final? class Before_OtherClass : R|kotlin/Any|
init
public final fun after_Fun(): R|kotlin/Unit|
public final val after_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
public? final? fun after_Fun(): R|kotlin/Unit|
public? final? val after_Val: <implicit>
public? get(): <implicit>
public final class After_OtherClass : R|kotlin/Any|
public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script>
Element 9
@@ -58,18 +54,17 @@ Tower Data Context:
FILE: [ResolvedTo(IMPORTS)] topLevel.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(BODY_RESOLVE)] <script-topLevel.kts>
[ResolvedTo(BODY_RESOLVE)] lval args: R|kotlin/Array<kotlin/String>|
SCRIPT: [ResolvedTo(TYPES)] <script-topLevel.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public final [ResolvedTo(BODY_RESOLVE)] fun before_Fun(): R|kotlin/Unit| {
}
public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(BODY_RESOLVE)] val before_Val: R|kotlin/Int| = Int(10)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public? final? [ResolvedTo(RAW_FIR)] val before_Val: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class Before_OtherClass : R|kotlin/Any| {
public [ResolvedTo(BODY_RESOLVE)] constructor(): R|Before_OtherClass| {
super<R|kotlin/Any|>()
public final? [ResolvedTo(RAW_FIR)] class Before_OtherClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|Before_OtherClass| {
LAZY_super<R|kotlin/Any|>
}
}
@@ -78,14 +73,13 @@ FILE: [ResolvedTo(IMPORTS)] topLevel.kts
R|<local>/args|
}
public final [ResolvedTo(BODY_RESOLVE)] fun after_Fun(): R|kotlin/Unit| {
}
public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(BODY_RESOLVE)] val after_Val: R|kotlin/Int| = Int(10)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public? final? [ResolvedTo(RAW_FIR)] val after_Val: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public final [ResolvedTo(STATUS)] class After_OtherClass : R|kotlin/Any| {
public [ResolvedTo(STATUS)] constructor(): R|After_OtherClass| {
public final? [ResolvedTo(RAW_FIR)] class After_OtherClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|After_OtherClass| {
LAZY_super<R|kotlin/Any|>
}