K2 scripting: treat default import similarly to K1
namely, add them to importing scopes directly and according to the schema used for other implicit imports, rather than adding them to the regular script file imports. See KT-65982 for explanation. #KT-65982 fixed
This commit is contained in:
committed by
Space Team
parent
9037975758
commit
266447120d
+10
-6
@@ -4,22 +4,26 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-insideClassBody.kts>
|
||||
@@ -28,11 +32,11 @@ Tower Data Context:
|
||||
public final class Foo : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Implicit receiver:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Type: Foo
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] insideClassBody.kts
|
||||
|
||||
+10
-6
@@ -4,22 +4,26 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-insideClassBody.kts>
|
||||
@@ -28,11 +32,11 @@ Tower Data Context:
|
||||
public final class Foo : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Implicit receiver:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Type: Foo
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] insideClassBody.kts
|
||||
|
||||
+11
-7
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
|
||||
@@ -25,11 +29,11 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Int|
|
||||
FirPropertySymbol public final val before_Val: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-insideClassMember.kts>
|
||||
@@ -48,13 +52,13 @@ Tower Data Context:
|
||||
public final? class After_OtherClass : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Implicit receiver:
|
||||
FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
|
||||
Type: MyClass
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
Element 11
|
||||
Element 13
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] insideClassMember.kts
|
||||
|
||||
+11
-7
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
|
||||
@@ -25,11 +29,11 @@ Tower Data Context:
|
||||
public? get(): <implicit>
|
||||
FirPropertySymbol public? final? val before_Val: <implicit>
|
||||
public? get(): <implicit>
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-insideClassMember.kts>
|
||||
@@ -48,13 +52,13 @@ Tower Data Context:
|
||||
public final? class After_OtherClass : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Implicit receiver:
|
||||
FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
|
||||
Type: MyClass
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
Element 11
|
||||
Element 13
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] insideClassMember.kts
|
||||
|
||||
Vendored
+10
-6
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
|
||||
@@ -25,11 +29,11 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Int|
|
||||
FirPropertySymbol public final val before_Val: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Functions
|
||||
FirNamedFunctionSymbol public final fun usage(foo: R|kotlin/Int|): R|kotlin/Unit|
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-insideTopLevelFunction.kts>
|
||||
@@ -48,11 +52,11 @@ Tower Data Context:
|
||||
public final? class After_OtherClass : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirValueParameterSymbol foo: R|kotlin/Int|
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] insideTopLevelFunction.kts
|
||||
|
||||
+10
-6
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
|
||||
@@ -25,11 +29,11 @@ Tower Data Context:
|
||||
public? get(): <implicit>
|
||||
FirPropertySymbol public? final? val before_Val: <implicit>
|
||||
public? get(): <implicit>
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Functions
|
||||
FirNamedFunctionSymbol public final fun usage(foo: R|kotlin/Int|): R|kotlin/Unit|
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-insideTopLevelFunction.kts>
|
||||
@@ -48,11 +52,11 @@ Tower Data Context:
|
||||
public final? class After_OtherClass : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirValueParameterSymbol foo: R|kotlin/Int|
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] insideTopLevelFunction.kts
|
||||
|
||||
+8
-4
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
|
||||
@@ -22,9 +26,9 @@ Tower Data Context:
|
||||
Properties:
|
||||
FirPropertySymbol public final val $$result: R|kotlin/Unit|
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-lastStatement.kts>
|
||||
|
||||
+8
-4
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
|
||||
@@ -22,9 +26,9 @@ Tower Data Context:
|
||||
Properties:
|
||||
FirPropertySymbol public final val $$result: R|kotlin/Unit|
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-lastStatement.kts>
|
||||
|
||||
Vendored
+10
-6
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
|
||||
@@ -22,9 +26,9 @@ Tower Data Context:
|
||||
Properties:
|
||||
FirPropertySymbol public final val $$result: R|kotlin/Unit|
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-scriptInsideLastStatement.kts>
|
||||
@@ -39,11 +43,11 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirValueParameterSymbol it: R|kotlin/Int|
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] scriptInsideLastStatement.kts
|
||||
|
||||
+10
-6
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
|
||||
@@ -22,9 +26,9 @@ Tower Data Context:
|
||||
Properties:
|
||||
FirPropertySymbol public final val $$result: R|kotlin/Unit|
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-scriptInsideLastStatement.kts>
|
||||
@@ -39,11 +43,11 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirValueParameterSymbol it: R|kotlin/Int|
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] scriptInsideLastStatement.kts
|
||||
|
||||
+10
-6
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
|
||||
@@ -22,9 +26,9 @@ Tower Data Context:
|
||||
Properties:
|
||||
FirPropertySymbol public final val $$result: R|kotlin/Unit|
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-statement.kts>
|
||||
@@ -39,9 +43,9 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] statement.kts
|
||||
|
||||
+10
-6
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
|
||||
@@ -22,9 +26,9 @@ Tower Data Context:
|
||||
Properties:
|
||||
FirPropertySymbol public final val $$result: <implicit>
|
||||
public get(): <implicit>
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-statement.kts>
|
||||
@@ -39,9 +43,9 @@ Tower Data Context:
|
||||
public get(): <implicit>
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] statement.kts
|
||||
|
||||
+10
-6
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
|
||||
@@ -24,9 +28,9 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Int|
|
||||
FirPropertySymbol public final val before_Val: R|kotlin/Int|
|
||||
public get(): R|kotlin/Int|
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-topLevel.kts>
|
||||
@@ -45,9 +49,9 @@ Tower Data Context:
|
||||
public final? class After_OtherClass : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] topLevel.kts
|
||||
|
||||
@@ -4,14 +4,18 @@ Tower Data Context:
|
||||
Element 1
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 2
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirPackageMemberScope
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 6
|
||||
Scope: FirPackageMemberScope
|
||||
Element 7
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 8
|
||||
Scope: FirScriptDeclarationsScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
|
||||
@@ -24,9 +28,9 @@ Tower Data Context:
|
||||
public? get(): <implicit>
|
||||
FirPropertySymbol public? final? val before_Val: <implicit>
|
||||
public? get(): <implicit>
|
||||
Element 7
|
||||
Element 9
|
||||
Scope: FirLocalScope
|
||||
Element 8
|
||||
Element 10
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
SCRIPT: <script-topLevel.kts>
|
||||
@@ -45,9 +49,9 @@ Tower Data Context:
|
||||
public final? class After_OtherClass : R|kotlin/Any|
|
||||
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
Label: <script>
|
||||
Element 9
|
||||
Element 11
|
||||
Scope: FirLocalScope
|
||||
Element 10
|
||||
Element 12
|
||||
Scope: FirLocalScope
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] topLevel.kts
|
||||
|
||||
+11
@@ -33,6 +33,7 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
|
||||
FirSamConversionTransformerExtension::class,
|
||||
FirAssignExpressionAltererExtension::class,
|
||||
FirScriptConfiguratorExtension::class,
|
||||
FirScriptResolutionConfigurationExtension::class,
|
||||
Fir2IrScriptConfiguratorExtension::class,
|
||||
FirFunctionTypeKindExtension::class,
|
||||
@OptIn(FirExtensionApiInternals::class)
|
||||
@@ -100,6 +101,11 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
|
||||
registerExtension(FirScriptConfiguratorExtension::class, this)
|
||||
}
|
||||
|
||||
@JvmName("plusFirScriptResolutionConfigurationExtension")
|
||||
operator fun (FirScriptResolutionConfigurationExtension.Factory).unaryPlus() {
|
||||
registerExtension(FirScriptResolutionConfigurationExtension::class, this)
|
||||
}
|
||||
|
||||
@JvmName("plusFir2IrScriptConfiguratorExtension")
|
||||
operator fun (Fir2IrScriptConfiguratorExtension.Factory).unaryPlus() {
|
||||
registerExtension(Fir2IrScriptConfiguratorExtension::class, this)
|
||||
@@ -168,6 +174,11 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
|
||||
FirScriptConfiguratorExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||
}
|
||||
|
||||
@JvmName("plusFirScriptResolutionConfigurationExtension")
|
||||
operator fun ((FirSession) -> FirScriptResolutionConfigurationExtension).unaryPlus() {
|
||||
FirScriptResolutionConfigurationExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||
}
|
||||
|
||||
@JvmName("plusFir2IrScriptConfiguratorExtension")
|
||||
operator fun ((FirSession) -> Fir2IrScriptConfiguratorExtension).unaryPlus() {
|
||||
Fir2IrScriptConfiguratorExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.extensions
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||
import org.jetbrains.kotlin.fir.declarations.FirScript
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class FirScriptResolutionConfigurationExtension(
|
||||
session: FirSession,
|
||||
) : FirExtension(session) {
|
||||
companion object {
|
||||
val NAME = FirExtensionPointName("FirScriptResolutionConfiguration")
|
||||
}
|
||||
|
||||
final override val name: FirExtensionPointName
|
||||
get() = NAME
|
||||
|
||||
final override val extensionType: KClass<out FirExtension> = FirScriptResolutionConfigurationExtension::class
|
||||
|
||||
fun interface Factory : FirExtension.Factory<FirScriptResolutionConfigurationExtension>
|
||||
|
||||
abstract fun getScriptDefaultImports(script: FirScript): List<FirImport>
|
||||
}
|
||||
|
||||
val FirExtensionService.firScriptResolutionConfigurators: List<FirScriptResolutionConfigurationExtension> by FirExtensionService.registeredExtensions()
|
||||
@@ -6,13 +6,15 @@
|
||||
package org.jetbrains.kotlin.fir.scopes
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||
import org.jetbrains.kotlin.fir.extensions.firScriptResolutionConfigurators
|
||||
import org.jetbrains.kotlin.fir.importTracker
|
||||
import org.jetbrains.kotlin.fir.packageFqName
|
||||
import org.jetbrains.kotlin.fir.reportImportDirectives
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.scopeSessionKey
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -20,6 +22,8 @@ import org.jetbrains.kotlin.name.FqName
|
||||
private val ALL_IMPORTS = scopeSessionKey<FirFile, ListStorageFirScope>()
|
||||
private val DEFAULT_STAR_IMPORT = scopeSessionKey<DefaultStarImportKey, FirSingleLevelDefaultStarImportingScope>()
|
||||
private val DEFAULT_SIMPLE_IMPORT = scopeSessionKey<DefaultSimpleImportKey, FirDefaultSimpleImportingScope>()
|
||||
private val DEFAULT_SCRIPT_STAR_IMPORT = scopeSessionKey<FirFile, FirExplicitStarImportingScope>()
|
||||
private val DEFAULT_SCRIPT_SIMPLE_IMPORT = scopeSessionKey<FirFile, FirExplicitSimpleImportingScope>()
|
||||
|
||||
private data class DefaultStarImportKey(val priority: DefaultImportPriority, val excludedImportNames: Set<FqName>)
|
||||
|
||||
@@ -60,6 +64,18 @@ internal fun computeImportingScopes(
|
||||
}
|
||||
}
|
||||
|
||||
val script = file.declarations.firstOrNull() as? FirScript
|
||||
val scriptDefaultImports by lazy(LazyThreadSafetyMode.NONE) {
|
||||
script?.let {
|
||||
val importResolveTransformer = FirImportResolveTransformer(session)
|
||||
session.extensionService.firScriptResolutionConfigurators.flatMap {
|
||||
it.getScriptDefaultImports(script).map { firImport ->
|
||||
(importResolveTransformer.transformImport(firImport, null) as? FirResolvedImport) ?: firImport
|
||||
}
|
||||
}
|
||||
}?.partition { it.isAllUnder }
|
||||
}
|
||||
|
||||
return buildList {
|
||||
if (includeDefaultImports) {
|
||||
this += FirDefaultStarImportingScope(
|
||||
@@ -70,6 +86,11 @@ internal fun computeImportingScopes(
|
||||
FirSingleLevelDefaultStarImportingScope(session, scopeSession, DefaultImportPriority.LOW, excludedImportNames)
|
||||
},
|
||||
)
|
||||
if (script != null) {
|
||||
this += scopeSession.getOrBuild(file, DEFAULT_SCRIPT_STAR_IMPORT) {
|
||||
FirExplicitStarImportingScope(scriptDefaultImports?.first.orEmpty(), session, scopeSession, excludedImportNames)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this += FirExplicitStarImportingScope(file.imports, session, scopeSession, excludedImportNames)
|
||||
@@ -81,6 +102,11 @@ internal fun computeImportingScopes(
|
||||
this += scopeSession.getOrBuild(DefaultSimpleImportKey(DefaultImportPriority.HIGH, excludedImportNames), DEFAULT_SIMPLE_IMPORT) {
|
||||
FirDefaultSimpleImportingScope(session, scopeSession, priority = DefaultImportPriority.HIGH, excludedImportNames)
|
||||
}
|
||||
if (script != null) {
|
||||
this += scopeSession.getOrBuild(file, DEFAULT_SCRIPT_SIMPLE_IMPORT) {
|
||||
FirExplicitSimpleImportingScope(scriptDefaultImports?.second.orEmpty(), session, scopeSession)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (includePackageImport) {
|
||||
|
||||
+2
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.services.Fir2IrScriptConfiguratorExtensionImpl
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.services.FirScriptConfiguratorExtensionImpl
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.services.FirScriptDefinitionProviderService
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.services.FirScriptResolutionConfigurationExtensionImpl
|
||||
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
|
||||
import kotlin.script.experimental.host.ScriptingHostConfiguration
|
||||
|
||||
@@ -28,6 +29,7 @@ class FirScriptingCompilerExtensionRegistrar(
|
||||
}
|
||||
|
||||
+FirScriptConfiguratorExtensionImpl.getFactory(hostConfiguration)
|
||||
+FirScriptResolutionConfigurationExtensionImpl.getFactory(hostConfiguration)
|
||||
+Fir2IrScriptConfiguratorExtensionImpl.getFactory(hostConfiguration)
|
||||
}
|
||||
}
|
||||
-18
@@ -50,25 +50,7 @@ class FirScriptConfiguratorExtensionImpl(
|
||||
@Suppress("UNUSED_PARAMETER") hostConfiguration: ScriptingHostConfiguration,
|
||||
) : FirScriptConfiguratorExtension(session) {
|
||||
|
||||
@OptIn(SymbolInternals::class)
|
||||
override fun FirScriptBuilder.configureContainingFile(fileBuilder: FirFileBuilder) {
|
||||
val sourceFile = fileBuilder.sourceFile ?: return
|
||||
val configuration = getOrLoadConfiguration(sourceFile) ?: run {
|
||||
log.warn("Configuration for ${sourceFile.asString()} wasn't found. FirScriptBuilder wasn't configured.")
|
||||
return
|
||||
}
|
||||
|
||||
configuration[ScriptCompilationConfiguration.defaultImports]?.forEach { defaultImport ->
|
||||
val trimmed = defaultImport.trim()
|
||||
val endsWithStar = trimmed.endsWith("*")
|
||||
val stripped = if (endsWithStar) trimmed.substring(0, trimmed.length - 2) else trimmed
|
||||
val fqName = FqName.fromSegments(stripped.split("."))
|
||||
fileBuilder.imports += buildImport {
|
||||
source = fileBuilder.source?.fakeElement(KtFakeSourceElementKind.ImplicitImport)
|
||||
importedFqName = fqName
|
||||
isAllUnder = endsWithStar
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(SymbolInternals::class)
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.scripting.compiler.plugin.services
|
||||
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.fakeElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||
import org.jetbrains.kotlin.fir.declarations.FirScript
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildImport
|
||||
import org.jetbrains.kotlin.fir.extensions.FirScriptResolutionConfigurationExtension
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
||||
import kotlin.script.experimental.api.defaultImports
|
||||
import kotlin.script.experimental.host.ScriptingHostConfiguration
|
||||
|
||||
class FirScriptResolutionConfigurationExtensionImpl(
|
||||
session: FirSession,
|
||||
@Suppress("UNUSED_PARAMETER") hostConfiguration: ScriptingHostConfiguration
|
||||
) : FirScriptResolutionConfigurationExtension(session) {
|
||||
override fun getScriptDefaultImports(script: FirScript): List<FirImport> {
|
||||
val scriptFile = session.firProvider.getFirScriptContainerFile(script.symbol) ?: return emptyList()
|
||||
val scriptSourceFile = scriptFile.sourceFile?.toSourceCode() ?: return emptyList()
|
||||
val compilationConfiguration = session.getScriptCompilationConfiguration(scriptSourceFile, getDefault = { null }) ?: return emptyList()
|
||||
|
||||
return compilationConfiguration.firImportsFromDefaultImports(script.source?.fakeElement(KtFakeSourceElementKind.ImplicitImport))
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun getFactory(hostConfiguration: ScriptingHostConfiguration): Factory {
|
||||
return Factory { session -> FirScriptResolutionConfigurationExtensionImpl(session, hostConfiguration) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun ScriptCompilationConfiguration.firImportsFromDefaultImports(sourceElement: KtSourceElement?): List<FirImport> =
|
||||
this[ScriptCompilationConfiguration.defaultImports]?.map { defaultImport ->
|
||||
val trimmed = defaultImport.trim()
|
||||
val endsWithStar = trimmed.endsWith("*")
|
||||
val stripped = if (endsWithStar) trimmed.substring(0, trimmed.length - 2) else trimmed
|
||||
val fqName = FqName.fromSegments(stripped.split("."))
|
||||
buildImport {
|
||||
source = sourceElement
|
||||
importedFqName = fqName
|
||||
isAllUnder = endsWithStar
|
||||
}
|
||||
}.orEmpty()
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// SCRIPT_DEFAULT_IMPORTS: b.A
|
||||
|
||||
// MODULE: a
|
||||
// FILE: a.java
|
||||
package a;
|
||||
public class A {
|
||||
public static void s() { return; }
|
||||
}
|
||||
// FILE: aa.java
|
||||
package b;
|
||||
public interface A {}
|
||||
//MODULE: b(a)
|
||||
// FILE: b.test.kts
|
||||
import a.A
|
||||
val b = A.s()
|
||||
+6
@@ -24,6 +24,12 @@ public class ScriptWithCustomDefDiagnosticsTestBaseGenerated extends AbstractScr
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/scripting/scripting-tests/testData/diagnostics/testScripts"), Pattern.compile("^(.+)\\.kts$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("conflictingImportsWithJava.test.kts")
|
||||
public void testConflictingImportsWithJava_test() {
|
||||
runTest("plugins/scripting/scripting-tests/testData/diagnostics/testScripts/conflictingImportsWithJava.test.kts");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("providedPropertiesShadowing.test.kts")
|
||||
public void testProvidedPropertiesShadowing_test() {
|
||||
|
||||
Reference in New Issue
Block a user