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:
Ilya Chernikov
2024-02-14 17:52:02 +01:00
committed by Space Team
parent 9037975758
commit 266447120d
22 changed files with 282 additions and 102 deletions
@@ -4,22 +4,26 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final class Foo : R|kotlin/Any| FirRegularClassSymbol public final class Foo : R|kotlin/Any|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Classifiers: Classifiers:
FirRegularClassSymbol public final class Foo : R|kotlin/Any| FirRegularClassSymbol public final class Foo : R|kotlin/Any|
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-insideClassBody.kts> SCRIPT: <script-insideClassBody.kts>
@@ -28,11 +32,11 @@ Tower Data Context:
public final class Foo : R|kotlin/Any| public final class Foo : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Implicit receiver: Implicit receiver:
FirRegularClassSymbol public final class Foo : R|kotlin/Any| FirRegularClassSymbol public final class Foo : R|kotlin/Any|
Type: Foo Type: Foo
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideClassBody.kts FILE: [ResolvedTo(IMPORTS)] insideClassBody.kts
@@ -4,22 +4,26 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final class Foo : R|kotlin/Any| FirRegularClassSymbol public final class Foo : R|kotlin/Any|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Classifiers: Classifiers:
FirRegularClassSymbol public final class Foo : R|kotlin/Any| FirRegularClassSymbol public final class Foo : R|kotlin/Any|
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-insideClassBody.kts> SCRIPT: <script-insideClassBody.kts>
@@ -28,11 +32,11 @@ Tower Data Context:
public final class Foo : R|kotlin/Any| public final class Foo : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Implicit receiver: Implicit receiver:
FirRegularClassSymbol public final class Foo : R|kotlin/Any| FirRegularClassSymbol public final class Foo : R|kotlin/Any|
Type: Foo Type: Foo
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideClassBody.kts FILE: [ResolvedTo(IMPORTS)] insideClassBody.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
@@ -25,11 +29,11 @@ Tower Data Context:
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
FirPropertySymbol public final val before_Val: R|kotlin/Int| FirPropertySymbol public final val before_Val: R|kotlin/Int|
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Classifiers: Classifiers:
FirRegularClassSymbol public final class MyClass : R|kotlin/Any| FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-insideClassMember.kts> SCRIPT: <script-insideClassMember.kts>
@@ -48,13 +52,13 @@ Tower Data Context:
public final? class After_OtherClass : R|kotlin/Any| public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Implicit receiver: Implicit receiver:
FirRegularClassSymbol public final class MyClass : R|kotlin/Any| FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
Type: MyClass Type: MyClass
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
Element 11 Element 13
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideClassMember.kts FILE: [ResolvedTo(IMPORTS)] insideClassMember.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
@@ -25,11 +29,11 @@ Tower Data Context:
public? get(): <implicit> public? get(): <implicit>
FirPropertySymbol public? final? val before_Val: <implicit> FirPropertySymbol public? final? val before_Val: <implicit>
public? get(): <implicit> public? get(): <implicit>
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Classifiers: Classifiers:
FirRegularClassSymbol public final class MyClass : R|kotlin/Any| FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-insideClassMember.kts> SCRIPT: <script-insideClassMember.kts>
@@ -48,13 +52,13 @@ Tower Data Context:
public final? class After_OtherClass : R|kotlin/Any| public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Implicit receiver: Implicit receiver:
FirRegularClassSymbol public final class MyClass : R|kotlin/Any| FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
Type: MyClass Type: MyClass
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
Element 11 Element 13
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideClassMember.kts FILE: [ResolvedTo(IMPORTS)] insideClassMember.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
@@ -25,11 +29,11 @@ Tower Data Context:
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
FirPropertySymbol public final val before_Val: R|kotlin/Int| FirPropertySymbol public final val before_Val: R|kotlin/Int|
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Functions Functions
FirNamedFunctionSymbol public final fun usage(foo: R|kotlin/Int|): R|kotlin/Unit| FirNamedFunctionSymbol public final fun usage(foo: R|kotlin/Int|): R|kotlin/Unit|
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-insideTopLevelFunction.kts> SCRIPT: <script-insideTopLevelFunction.kts>
@@ -48,11 +52,11 @@ Tower Data Context:
public final? class After_OtherClass : R|kotlin/Any| public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Properties: Properties:
FirValueParameterSymbol foo: R|kotlin/Int| FirValueParameterSymbol foo: R|kotlin/Int|
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideTopLevelFunction.kts FILE: [ResolvedTo(IMPORTS)] insideTopLevelFunction.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
@@ -25,11 +29,11 @@ Tower Data Context:
public? get(): <implicit> public? get(): <implicit>
FirPropertySymbol public? final? val before_Val: <implicit> FirPropertySymbol public? final? val before_Val: <implicit>
public? get(): <implicit> public? get(): <implicit>
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Functions Functions
FirNamedFunctionSymbol public final fun usage(foo: R|kotlin/Int|): R|kotlin/Unit| FirNamedFunctionSymbol public final fun usage(foo: R|kotlin/Int|): R|kotlin/Unit|
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-insideTopLevelFunction.kts> SCRIPT: <script-insideTopLevelFunction.kts>
@@ -48,11 +52,11 @@ Tower Data Context:
public final? class After_OtherClass : R|kotlin/Any| public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Properties: Properties:
FirValueParameterSymbol foo: R|kotlin/Int| FirValueParameterSymbol foo: R|kotlin/Int|
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] insideTopLevelFunction.kts FILE: [ResolvedTo(IMPORTS)] insideTopLevelFunction.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
@@ -22,9 +26,9 @@ Tower Data Context:
Properties: Properties:
FirPropertySymbol public final val $$result: R|kotlin/Unit| FirPropertySymbol public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-lastStatement.kts> SCRIPT: <script-lastStatement.kts>
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
@@ -22,9 +26,9 @@ Tower Data Context:
Properties: Properties:
FirPropertySymbol public final val $$result: R|kotlin/Unit| FirPropertySymbol public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-lastStatement.kts> SCRIPT: <script-lastStatement.kts>
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
@@ -22,9 +26,9 @@ Tower Data Context:
Properties: Properties:
FirPropertySymbol public final val $$result: R|kotlin/Unit| FirPropertySymbol public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-scriptInsideLastStatement.kts> SCRIPT: <script-scriptInsideLastStatement.kts>
@@ -39,11 +43,11 @@ Tower Data Context:
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Properties: Properties:
FirValueParameterSymbol it: R|kotlin/Int| FirValueParameterSymbol it: R|kotlin/Int|
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] scriptInsideLastStatement.kts FILE: [ResolvedTo(IMPORTS)] scriptInsideLastStatement.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
@@ -22,9 +26,9 @@ Tower Data Context:
Properties: Properties:
FirPropertySymbol public final val $$result: R|kotlin/Unit| FirPropertySymbol public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-scriptInsideLastStatement.kts> SCRIPT: <script-scriptInsideLastStatement.kts>
@@ -39,11 +43,11 @@ Tower Data Context:
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Properties: Properties:
FirValueParameterSymbol it: R|kotlin/Int| FirValueParameterSymbol it: R|kotlin/Int|
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] scriptInsideLastStatement.kts FILE: [ResolvedTo(IMPORTS)] scriptInsideLastStatement.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
@@ -22,9 +26,9 @@ Tower Data Context:
Properties: Properties:
FirPropertySymbol public final val $$result: R|kotlin/Unit| FirPropertySymbol public final val $$result: R|kotlin/Unit|
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-statement.kts> SCRIPT: <script-statement.kts>
@@ -39,9 +43,9 @@ Tower Data Context:
public get(): R|kotlin/Unit| public get(): R|kotlin/Unit|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] statement.kts FILE: [ResolvedTo(IMPORTS)] statement.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
@@ -22,9 +26,9 @@ Tower Data Context:
Properties: Properties:
FirPropertySymbol public final val $$result: <implicit> FirPropertySymbol public final val $$result: <implicit>
public get(): <implicit> public get(): <implicit>
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-statement.kts> SCRIPT: <script-statement.kts>
@@ -39,9 +43,9 @@ Tower Data Context:
public get(): <implicit> public get(): <implicit>
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] statement.kts FILE: [ResolvedTo(IMPORTS)] statement.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
@@ -24,9 +28,9 @@ Tower Data Context:
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
FirPropertySymbol public final val before_Val: R|kotlin/Int| FirPropertySymbol public final val before_Val: R|kotlin/Int|
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-topLevel.kts> SCRIPT: <script-topLevel.kts>
@@ -45,9 +49,9 @@ Tower Data Context:
public final? class After_OtherClass : R|kotlin/Any| public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] topLevel.kts FILE: [ResolvedTo(IMPORTS)] topLevel.kts
@@ -4,14 +4,18 @@ Tower Data Context:
Element 1 Element 1
Scope: FirExplicitStarImportingScope Scope: FirExplicitStarImportingScope
Element 2 Element 2
Scope: FirDefaultSimpleImportingScope Scope: FirExplicitStarImportingScope
Element 3 Element 3
Scope: FirDefaultSimpleImportingScope Scope: FirDefaultSimpleImportingScope
Element 4 Element 4
Scope: FirPackageMemberScope Scope: FirDefaultSimpleImportingScope
Element 5 Element 5
Scope: FirExplicitSimpleImportingScope Scope: FirExplicitSimpleImportingScope
Element 6 Element 6
Scope: FirPackageMemberScope
Element 7
Scope: FirExplicitSimpleImportingScope
Element 8
Scope: FirScriptDeclarationsScope Scope: FirScriptDeclarationsScope
Classifiers: Classifiers:
FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
@@ -24,9 +28,9 @@ Tower Data Context:
public? get(): <implicit> public? get(): <implicit>
FirPropertySymbol public? final? val before_Val: <implicit> FirPropertySymbol public? final? val before_Val: <implicit>
public? get(): <implicit> public? get(): <implicit>
Element 7 Element 9
Scope: FirLocalScope Scope: FirLocalScope
Element 8 Element 10
Context receivers: Context receivers:
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|) FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
SCRIPT: <script-topLevel.kts> SCRIPT: <script-topLevel.kts>
@@ -45,9 +49,9 @@ Tower Data Context:
public final? class After_OtherClass : R|kotlin/Any| public final? class After_OtherClass : R|kotlin/Any|
Type: kotlin.script.templates.standard.ScriptTemplateWithArgs Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
Label: <script> Label: <script>
Element 9 Element 11
Scope: FirLocalScope Scope: FirLocalScope
Element 10 Element 12
Scope: FirLocalScope Scope: FirLocalScope
FILE: [ResolvedTo(IMPORTS)] topLevel.kts FILE: [ResolvedTo(IMPORTS)] topLevel.kts
@@ -33,6 +33,7 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
FirSamConversionTransformerExtension::class, FirSamConversionTransformerExtension::class,
FirAssignExpressionAltererExtension::class, FirAssignExpressionAltererExtension::class,
FirScriptConfiguratorExtension::class, FirScriptConfiguratorExtension::class,
FirScriptResolutionConfigurationExtension::class,
Fir2IrScriptConfiguratorExtension::class, Fir2IrScriptConfiguratorExtension::class,
FirFunctionTypeKindExtension::class, FirFunctionTypeKindExtension::class,
@OptIn(FirExtensionApiInternals::class) @OptIn(FirExtensionApiInternals::class)
@@ -100,6 +101,11 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
registerExtension(FirScriptConfiguratorExtension::class, this) registerExtension(FirScriptConfiguratorExtension::class, this)
} }
@JvmName("plusFirScriptResolutionConfigurationExtension")
operator fun (FirScriptResolutionConfigurationExtension.Factory).unaryPlus() {
registerExtension(FirScriptResolutionConfigurationExtension::class, this)
}
@JvmName("plusFir2IrScriptConfiguratorExtension") @JvmName("plusFir2IrScriptConfiguratorExtension")
operator fun (Fir2IrScriptConfiguratorExtension.Factory).unaryPlus() { operator fun (Fir2IrScriptConfiguratorExtension.Factory).unaryPlus() {
registerExtension(Fir2IrScriptConfiguratorExtension::class, this) registerExtension(Fir2IrScriptConfiguratorExtension::class, this)
@@ -168,6 +174,11 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
FirScriptConfiguratorExtension.Factory { this.invoke(it) }.unaryPlus() FirScriptConfiguratorExtension.Factory { this.invoke(it) }.unaryPlus()
} }
@JvmName("plusFirScriptResolutionConfigurationExtension")
operator fun ((FirSession) -> FirScriptResolutionConfigurationExtension).unaryPlus() {
FirScriptResolutionConfigurationExtension.Factory { this.invoke(it) }.unaryPlus()
}
@JvmName("plusFir2IrScriptConfiguratorExtension") @JvmName("plusFir2IrScriptConfiguratorExtension")
operator fun ((FirSession) -> Fir2IrScriptConfiguratorExtension).unaryPlus() { operator fun ((FirSession) -> Fir2IrScriptConfiguratorExtension).unaryPlus() {
Fir2IrScriptConfiguratorExtension.Factory { this.invoke(it) }.unaryPlus() Fir2IrScriptConfiguratorExtension.Factory { this.invoke(it) }.unaryPlus()
@@ -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 package org.jetbrains.kotlin.fir.scopes
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase 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.importTracker
import org.jetbrains.kotlin.fir.packageFqName import org.jetbrains.kotlin.fir.packageFqName
import org.jetbrains.kotlin.fir.reportImportDirectives import org.jetbrains.kotlin.fir.reportImportDirectives
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.scopeSessionKey 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.scopes.impl.*
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.name.FqName 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 ALL_IMPORTS = scopeSessionKey<FirFile, ListStorageFirScope>()
private val DEFAULT_STAR_IMPORT = scopeSessionKey<DefaultStarImportKey, FirSingleLevelDefaultStarImportingScope>() private val DEFAULT_STAR_IMPORT = scopeSessionKey<DefaultStarImportKey, FirSingleLevelDefaultStarImportingScope>()
private val DEFAULT_SIMPLE_IMPORT = scopeSessionKey<DefaultSimpleImportKey, FirDefaultSimpleImportingScope>() 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>) 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 { return buildList {
if (includeDefaultImports) { if (includeDefaultImports) {
this += FirDefaultStarImportingScope( this += FirDefaultStarImportingScope(
@@ -70,6 +86,11 @@ internal fun computeImportingScopes(
FirSingleLevelDefaultStarImportingScope(session, scopeSession, DefaultImportPriority.LOW, excludedImportNames) 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) this += FirExplicitStarImportingScope(file.imports, session, scopeSession, excludedImportNames)
@@ -81,6 +102,11 @@ internal fun computeImportingScopes(
this += scopeSession.getOrBuild(DefaultSimpleImportKey(DefaultImportPriority.HIGH, excludedImportNames), DEFAULT_SIMPLE_IMPORT) { this += scopeSession.getOrBuild(DefaultSimpleImportKey(DefaultImportPriority.HIGH, excludedImportNames), DEFAULT_SIMPLE_IMPORT) {
FirDefaultSimpleImportingScope(session, scopeSession, priority = DefaultImportPriority.HIGH, excludedImportNames) 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) { if (includePackageImport) {
@@ -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.Fir2IrScriptConfiguratorExtensionImpl
import org.jetbrains.kotlin.scripting.compiler.plugin.services.FirScriptConfiguratorExtensionImpl 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.FirScriptDefinitionProviderService
import org.jetbrains.kotlin.scripting.compiler.plugin.services.FirScriptResolutionConfigurationExtensionImpl
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
import kotlin.script.experimental.host.ScriptingHostConfiguration import kotlin.script.experimental.host.ScriptingHostConfiguration
@@ -28,6 +29,7 @@ class FirScriptingCompilerExtensionRegistrar(
} }
+FirScriptConfiguratorExtensionImpl.getFactory(hostConfiguration) +FirScriptConfiguratorExtensionImpl.getFactory(hostConfiguration)
+FirScriptResolutionConfigurationExtensionImpl.getFactory(hostConfiguration)
+Fir2IrScriptConfiguratorExtensionImpl.getFactory(hostConfiguration) +Fir2IrScriptConfiguratorExtensionImpl.getFactory(hostConfiguration)
} }
} }
@@ -50,25 +50,7 @@ class FirScriptConfiguratorExtensionImpl(
@Suppress("UNUSED_PARAMETER") hostConfiguration: ScriptingHostConfiguration, @Suppress("UNUSED_PARAMETER") hostConfiguration: ScriptingHostConfiguration,
) : FirScriptConfiguratorExtension(session) { ) : FirScriptConfiguratorExtension(session) {
@OptIn(SymbolInternals::class)
override fun FirScriptBuilder.configureContainingFile(fileBuilder: FirFileBuilder) { 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) @OptIn(SymbolInternals::class)
@@ -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()
@@ -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()
@@ -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); 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 @Test
@TestMetadata("providedPropertiesShadowing.test.kts") @TestMetadata("providedPropertiesShadowing.test.kts")
public void testProvidedPropertiesShadowing_test() { public void testProvidedPropertiesShadowing_test() {