[LL FIR] rework FirDesignation collector

The main change – now we collect not only `FirRegularClass`, but also
`FirScript`.
This allows us to have a proper context collector for
diagnostics for scripts.
Also, this change fixes dangling files for scripts in `IGNORE_SELF`
as now we have the correct patcher for this case, so we won't resolve
the copied script

^KT-65345
^KT-62841 Fixed
This commit is contained in:
Dmitrii Gridin
2024-01-29 21:14:25 +01:00
committed by Space Team
parent f06b17cbb2
commit 39131a7f30
10 changed files with 190 additions and 471 deletions
@@ -14,7 +14,7 @@ Tower Data Context:
Element 6
Scope: FirScriptDeclarationsScope
Classifiers:
FirRegularClassSymbol public final? class Foo : R|kotlin/Any|
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
Element 7
Scope: FirLocalScope
Classifiers:
@@ -27,7 +27,7 @@ Tower Data Context:
SCRIPT: <script-insideClassBody.kts>
lval args: R|kotlin/Array<kotlin/String>|
public final? class Foo : R|kotlin/Any|
public final class Foo : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script>
Element 9
@@ -38,8 +38,8 @@ Tower Data Context:
Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideClassBody.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(TYPES)] <script-insideClassBody.kts>
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-insideClassBody.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public final? [ResolvedTo(RAW_FIR)] class Foo : R|kotlin/Any| {
@@ -16,15 +16,15 @@ Tower Data Context:
Classifiers:
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final? class Before_OtherClass : R|kotlin/Any|
FirRegularClassSymbol public final? class MyClass : R|kotlin/Any|
FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
Functions
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: <implicit>
public? get(): <implicit>
FirPropertySymbol public? final? val before_Val: <implicit>
public? get(): <implicit>
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|
Element 7
Scope: FirLocalScope
Classifiers:
@@ -38,14 +38,14 @@ Tower Data Context:
lval args: R|kotlin/Array<kotlin/String>|
public? final? fun before_Fun(): R|kotlin/Unit|
public? final? val before_Val: <implicit>
public? get(): <implicit>
public final val before_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
public final? class Before_OtherClass : R|kotlin/Any|
public final? class MyClass : R|kotlin/Any|
public final class MyClass : R|kotlin/Any|
public? final? fun after_Fun(): R|kotlin/Unit|
public? final? val after_Val: <implicit>
public? get(): <implicit>
public final val after_Val: R|kotlin/Int|
public get(): R|kotlin/Int|
public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
@@ -60,8 +60,8 @@ Tower Data Context:
Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideClassMember.kts
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: [ResolvedTo(TYPES)] <script-insideClassMember.kts>
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-insideClassMember.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
@@ -0,0 +1,91 @@
Tower Data Context:
Element 0
Scope: FirDefaultStarImportingScope
Element 1
Scope: FirExplicitStarImportingScope
Element 2
Scope: FirDefaultSimpleImportingScope
Element 3
Scope: FirDefaultSimpleImportingScope
Element 4
Scope: FirPackageMemberScope
Element 5
Scope: FirExplicitSimpleImportingScope
Element 6
Scope: FirScriptDeclarationsScope
Classifiers:
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 usage(foo: R|kotlin/Int|): 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|
Element 7
Scope: FirLocalScope
Functions
FirNamedFunctionSymbol public final fun usage(foo: R|kotlin/Int|): R|kotlin/Unit|
Properties:
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
Element 8
Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-insideTopLevelFunction.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? class Before_OtherClass : R|kotlin/Any|
public final fun usage(foo: R|kotlin/Int|): 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|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script>
Element 9
Scope: FirLocalScope
Properties:
FirValueParameterSymbol foo: R|kotlin/Int|
Element 10
Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideTopLevelFunction.kts
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
SCRIPT: [ResolvedTo(RAW_FIR)] <script-insideTopLevelFunction.kts>
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [ResolvedTo(RAW_FIR)] val before_Val: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public final? [ResolvedTo(RAW_FIR)] class Before_OtherClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|Before_OtherClass| {
LAZY_super<R|kotlin/Any|>
}
}
public final [ResolvedTo(BODY_RESOLVE)] fun usage([ResolvedTo(BODY_RESOLVE)] foo: R|kotlin/Int|): R|kotlin/Unit| {
R|<local>/foo|
}
public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [ResolvedTo(RAW_FIR)] val after_Val: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public final? [ResolvedTo(RAW_FIR)] class After_OtherClass : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] constructor(): R|After_OtherClass| {
LAZY_super<R|kotlin/Any|>
}
}