K2 Scripting: Skip base class params from resolution scope
The base class in scripting considered obsolete and therefore supported via some ad-hoc mechanisms. In particular parameters to the base class c-tor are passed via script provided properties. But in combination with the resolution logic, this leads to issues described in KT-60452 This commits filters out such parameters from script resolution scope and avoids this problem for now. Bot it should be noted that proper diagnostics for properties shadowing should still be implemented - see #KT-65809 #KT-60452 fixed
This commit is contained in:
committed by
Space Team
parent
49559d2a5a
commit
9037975758
@@ -1,2 +1,2 @@
|
||||
Resolved to:
|
||||
0: (in <local>: <script-ScriptArgument.kts>) val args: kotlin.Array<kotlin.String>
|
||||
0: (in kotlin.script.templates.standard.ScriptTemplateWithArgs) val args: kotlin.Array<kotlin.String>
|
||||
@@ -1,5 +1,3 @@
|
||||
// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE
|
||||
|
||||
fun foo() {
|
||||
ar<caret>gs
|
||||
}
|
||||
|
||||
+88
-7
@@ -1,11 +1,82 @@
|
||||
KtLocalVariableSymbol:
|
||||
KtKotlinPropertySymbol:
|
||||
annotationsList: []
|
||||
callableIdIfNonLocal: null
|
||||
backingFieldSymbol: KtBackingFieldSymbol:
|
||||
annotationsList: []
|
||||
callableIdIfNonLocal: null
|
||||
contextReceivers: []
|
||||
isExtension: false
|
||||
name: field
|
||||
origin: PROPERTY_BACKING_FIELD
|
||||
owningProperty: KtKotlinPropertySymbol(kotlin/script/templates/standard/ScriptTemplateWithArgs.args)
|
||||
receiverParameter: null
|
||||
returnType: KtUsualClassType:
|
||||
annotationsList: []
|
||||
ownTypeArguments: [
|
||||
KtUsualClassType:
|
||||
annotationsList: []
|
||||
ownTypeArguments: []
|
||||
type: kotlin/String
|
||||
]
|
||||
type: kotlin/Array<kotlin/String>
|
||||
symbolKind: LOCAL
|
||||
typeParameters: []
|
||||
getContainingFileSymbol: null
|
||||
getContainingJvmClassName: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
getContainingModule: KtLibraryModule "Library kotlin-script-runtime"
|
||||
deprecationStatus: null
|
||||
callableIdIfNonLocal: kotlin/script/templates/standard/ScriptTemplateWithArgs.args
|
||||
contextReceivers: []
|
||||
getter: KtPropertyGetterSymbol:
|
||||
annotationsList: []
|
||||
callableIdIfNonLocal: null
|
||||
contextReceivers: []
|
||||
hasBody: false
|
||||
hasStableParameterNames: true
|
||||
isDefault: true
|
||||
isExtension: false
|
||||
isInline: false
|
||||
isOverride: false
|
||||
modality: FINAL
|
||||
origin: LIBRARY
|
||||
receiverParameter: null
|
||||
returnType: KtUsualClassType:
|
||||
annotationsList: []
|
||||
ownTypeArguments: [
|
||||
KtUsualClassType:
|
||||
annotationsList: []
|
||||
ownTypeArguments: []
|
||||
type: kotlin/String
|
||||
]
|
||||
type: kotlin/Array<kotlin/String>
|
||||
symbolKind: ACCESSOR
|
||||
typeParameters: []
|
||||
valueParameters: []
|
||||
visibility: Public
|
||||
getDispatchReceiver(): KtUsualClassType:
|
||||
annotationsList: []
|
||||
ownTypeArguments: []
|
||||
type: kotlin/script/templates/standard/ScriptTemplateWithArgs
|
||||
getContainingFileSymbol: null
|
||||
getContainingJvmClassName: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
getContainingModule: KtLibraryModule "Library kotlin-script-runtime"
|
||||
deprecationStatus: null
|
||||
hasBackingField: true
|
||||
hasGetter: true
|
||||
hasSetter: false
|
||||
initializer: null
|
||||
isActual: false
|
||||
isConst: false
|
||||
isDelegatedProperty: false
|
||||
isExpect: false
|
||||
isExtension: false
|
||||
isFromPrimaryConstructor: false
|
||||
isLateInit: false
|
||||
isOverride: false
|
||||
isStatic: false
|
||||
isVal: true
|
||||
modality: FINAL
|
||||
name: args
|
||||
origin: PLUGIN
|
||||
origin: LIBRARY
|
||||
receiverParameter: null
|
||||
returnType: KtUsualClassType:
|
||||
annotationsList: []
|
||||
@@ -16,9 +87,19 @@ KtLocalVariableSymbol:
|
||||
type: kotlin/String
|
||||
]
|
||||
type: kotlin/Array<kotlin/String>
|
||||
symbolKind: LOCAL
|
||||
setter: null
|
||||
symbolKind: CLASS_MEMBER
|
||||
typeParameters: []
|
||||
getContainingFileSymbol: KtFileSymbol(scriptArgument.kts)
|
||||
getContainingJvmClassName: null
|
||||
getContainingModule: KtScriptModule "Script scriptArgument.kts"
|
||||
visibility: Public
|
||||
getDispatchReceiver(): KtUsualClassType:
|
||||
annotationsList: []
|
||||
ownTypeArguments: []
|
||||
type: kotlin/script/templates/standard/ScriptTemplateWithArgs
|
||||
getContainingFileSymbol: null
|
||||
getContainingJvmClassName: kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
getContainingModule: KtLibraryModule "Library kotlin-script-runtime"
|
||||
deprecationStatus: null
|
||||
getterDeprecationStatus: null
|
||||
javaGetterName: getArgs
|
||||
javaSetterName: null
|
||||
setterDeprecationStatus: null
|
||||
-2
@@ -19,8 +19,6 @@ Tower Data Context:
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
-2
@@ -19,8 +19,6 @@ Tower Data Context:
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class Foo : R|kotlin/Any|
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
-2
@@ -29,8 +29,6 @@ Tower Data Context:
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
-2
@@ -29,8 +29,6 @@ Tower Data Context:
|
||||
Scope: FirLocalScope
|
||||
Classifiers:
|
||||
FirRegularClassSymbol public final class MyClass : R|kotlin/Any|
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
Vendored
-2
@@ -29,8 +29,6 @@ Tower Data Context:
|
||||
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|)
|
||||
|
||||
-2
@@ -29,8 +29,6 @@ Tower Data Context:
|
||||
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|)
|
||||
|
||||
-2
@@ -24,8 +24,6 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
-2
@@ -24,8 +24,6 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
Vendored
-2
@@ -24,8 +24,6 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
-2
@@ -24,8 +24,6 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
-2
@@ -24,8 +24,6 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Unit|
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
@@ -24,8 +24,6 @@ Tower Data Context:
|
||||
public get(): <implicit>
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
|
||||
+1
-3
@@ -26,8 +26,6 @@ Tower Data Context:
|
||||
public get(): R|kotlin/Int|
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
@@ -70,7 +68,7 @@ FILE: [ResolvedTo(IMPORTS)] topLevel.kts
|
||||
}
|
||||
|
||||
[ResolvedTo(BODY_RESOLVE)] init {
|
||||
R|<local>/args|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|
|
||||
}
|
||||
|
||||
public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||
|
||||
@@ -26,8 +26,6 @@ Tower Data Context:
|
||||
public? get(): <implicit>
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lval args: R|kotlin/Array<kotlin/String>|
|
||||
Element 8
|
||||
Context receivers:
|
||||
FirScriptSymbol context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||
@@ -70,7 +68,7 @@ FILE: [ResolvedTo(IMPORTS)] topLevel.kts
|
||||
}
|
||||
|
||||
[ResolvedTo(BODY_RESOLVE)] init {
|
||||
R|<local>/args|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|
|
||||
}
|
||||
|
||||
public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ FIR element: FirPropertyAccessExpressionImpl
|
||||
FIR source kind: KtRealSourceElementKind
|
||||
|
||||
FIR element rendered:
|
||||
R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
|
||||
FIR FILE:
|
||||
FILE: [ResolvedTo(IMPORTS)] argsFromFunction.kts
|
||||
@@ -12,5 +12,5 @@ FILE: [ResolvedTo(IMPORTS)] argsFromFunction.kts
|
||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Int| {
|
||||
^foo R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
^foo this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ FIR source kind: KtRealSourceElementKind
|
||||
|
||||
FIR element rendered:
|
||||
{
|
||||
^ R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
^ this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
}
|
||||
|
||||
FIR FILE:
|
||||
@@ -20,7 +20,7 @@ FILE: [ResolvedTo(IMPORTS)] argsFromInit.kts
|
||||
|
||||
[ResolvedTo(BODY_RESOLVE)] init {
|
||||
<Unresolved name: foo>#(<L> = [ResolvedTo(BODY_RESOLVE)] foo@fun <anonymous>(): R|kotlin/Int| <inline=Unknown> {
|
||||
^ R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
^ this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ FIR element: FirPropertyAccessExpressionImpl
|
||||
FIR source kind: KtRealSourceElementKind
|
||||
|
||||
FIR element rendered:
|
||||
R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
|
||||
FIR FILE:
|
||||
FILE: [ResolvedTo(IMPORTS)] argsFromMemberFunction.kts
|
||||
@@ -17,7 +17,7 @@ FILE: [ResolvedTo(IMPORTS)] argsFromMemberFunction.kts
|
||||
}
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| {
|
||||
R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ FIR element: FirPropertyAccessExpressionImpl
|
||||
FIR source kind: KtRealSourceElementKind
|
||||
|
||||
FIR element rendered:
|
||||
R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
|
||||
FIR FILE:
|
||||
FILE: [ResolvedTo(IMPORTS)] argsFromMemberProperty.kts
|
||||
@@ -18,7 +18,7 @@ FILE: [ResolvedTo(IMPORTS)] argsFromMemberProperty.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] val i: R|kotlin/Int|
|
||||
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] get(): R|kotlin/Int| {
|
||||
^ R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
^ this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ FIR element: FirPropertyAccessExpressionImpl
|
||||
FIR source kind: KtRealSourceElementKind
|
||||
|
||||
FIR element rendered:
|
||||
R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
|
||||
FIR FILE:
|
||||
FILE: [ResolvedTo(IMPORTS)] argsFromProperty.kts
|
||||
@@ -11,5 +11,5 @@ FILE: [ResolvedTo(IMPORTS)] argsFromProperty.kts
|
||||
SCRIPT: [ResolvedTo(TYPES)] <script-argsFromProperty.kts>
|
||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] val bar: R|kotlin/Int| = R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
public final [ResolvedTo(BODY_RESOLVE)] val bar: R|kotlin/Int| = this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ FIR element: FirPropertyAccessExpressionImpl
|
||||
FIR source kind: KtRealSourceElementKind
|
||||
|
||||
FIR element rendered:
|
||||
R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
|
||||
FIR FILE:
|
||||
FILE: [ResolvedTo(IMPORTS)] argsFromStatement.kts
|
||||
@@ -12,7 +12,7 @@ FILE: [ResolvedTo(IMPORTS)] argsFromStatement.kts
|
||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] val $$result: <ERROR TYPE REF: Unresolved name: foo> = <Unresolved name: foo>#(<L> = [ResolvedTo(BODY_RESOLVE)] foo@fun <anonymous>(): R|kotlin/Int| <inline=Unknown> {
|
||||
^ R|<local>/args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
^ this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|.R|SubstitutionOverride<kotlin/Array.size: R|kotlin/Int|>|
|
||||
}
|
||||
)
|
||||
public [ResolvedTo(BODY_RESOLVE)] get(): <ERROR TYPE REF: Unresolved name: foo>
|
||||
+5
-1
@@ -534,7 +534,11 @@ class BodyResolveContext(
|
||||
val statics = base
|
||||
.addNonLocalScopeIfNotNull(towerElementsForScript.staticScope)
|
||||
|
||||
val parameterScope = owner.parameters.fold(FirLocalScope(holder.session)) { scope, parameter ->
|
||||
val parameterScope = owner.parameters.filter {
|
||||
// for compatibility with old script resolve, the parameters that implicitly copied from the base class c-tor are ignored here
|
||||
// this quirk should be removed after removing base class support (KT-60449)
|
||||
it.origin != FirDeclarationOrigin.ScriptCustomization.ParameterFromBaseClass
|
||||
}.fold(FirLocalScope(holder.session)) { scope, parameter ->
|
||||
scope.storeVariable(parameter, holder.session)
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -555,7 +555,9 @@ open class FirDeclarationsResolveTransformer(
|
||||
.transformOtherChildren(transformer, ResolutionMode.ContextIndependent)
|
||||
|
||||
context.storeVariable(variable, session)
|
||||
if (variable.origin != FirDeclarationOrigin.ScriptCustomization.Parameter) {
|
||||
if (variable.origin != FirDeclarationOrigin.ScriptCustomization.Parameter &&
|
||||
variable.origin != FirDeclarationOrigin.ScriptCustomization.ParameterFromBaseClass)
|
||||
{
|
||||
// script parameters should not be added to CFG to avoid graph building compilations
|
||||
dataFlowAnalyzer.exitLocalVariableDeclaration(variable, hadExplicitType)
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ sealed class FirDeclarationOrigin(
|
||||
object Default : ScriptCustomization(FirScriptCustomizationKind.DEFAULT)
|
||||
object ResultProperty : ScriptCustomization(FirScriptCustomizationKind.RESULT_PROPERTY)
|
||||
object Parameter : ScriptCustomization(FirScriptCustomizationKind.PARAMETER)
|
||||
object ParameterFromBaseClass : ScriptCustomization(FirScriptCustomizationKind.PARAMETER_FROM_BASE_CLASS)
|
||||
}
|
||||
class Plugin(val key: GeneratedDeclarationKey) : FirDeclarationOrigin(displayName = "Plugin[$key]", generated = true)
|
||||
|
||||
|
||||
@@ -11,5 +11,6 @@ const val SCRIPT_RECEIVER_NAME_PREFIX = "\$script_receiver"
|
||||
enum class FirScriptCustomizationKind {
|
||||
DEFAULT,
|
||||
RESULT_PROPERTY,
|
||||
PARAMETER
|
||||
PARAMETER,
|
||||
PARAMETER_FROM_BASE_CLASS, // TODO: remove after fixing KT-60449
|
||||
}
|
||||
+1
-1
@@ -93,7 +93,7 @@ class FirScriptConfiguratorExtensionImpl(
|
||||
buildProperty {
|
||||
moduleData = session.moduleData
|
||||
source = this@configure.source?.fakeElement(KtFakeSourceElementKind.ScriptParameter)
|
||||
origin = FirDeclarationOrigin.ScriptCustomization.Parameter
|
||||
origin = FirDeclarationOrigin.ScriptCustomization.ParameterFromBaseClass
|
||||
// TODO: copy type parameters?
|
||||
returnTypeRef = baseCtorParameter.returnTypeRef
|
||||
name = baseCtorParameter.name
|
||||
|
||||
+1
-2
@@ -119,8 +119,7 @@ class ScriptTemplateTest : TestCase() {
|
||||
assertEqualsTrimmed(NUM_4_LINE + FIB_SCRIPT_OUTPUT_TAIL, out)
|
||||
}
|
||||
|
||||
// Fails on K2, see KT-60452
|
||||
fun testScriptWithoutParams() = expectTestToFailOnK2 {
|
||||
fun testScriptWithoutParams() {
|
||||
val messageCollector = TestMessageCollector()
|
||||
val aClass = compileScript("without_params.kts", ScriptWithoutParams::class, null, messageCollector = messageCollector)
|
||||
Assert.assertNotNull("Compilation failed:\n$messageCollector", aClass)
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
// param: O K
|
||||
|
||||
val rv = args[0] + args[1]
|
||||
|
||||
// expected: rv: OK
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
// SCRIPT_PROVIDED_PROPERTIES: prop1: kotlin.String
|
||||
|
||||
val prop1 = 42 // TODO: Error should be reported on this shadowing, see KT-65809
|
||||
|
||||
val rv = 0 <!NONE_APPLICABLE!>+<!> prop1
|
||||
+6
@@ -25,6 +25,12 @@ public class ScriptWithCustomDefBlackBoxCodegenTestGenerated extends AbstractScr
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/scripting/scripting-tests/testData/codegen/testScripts"), Pattern.compile("^(.+)\\.kts$"), null, TargetBackend.JVM_IR, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("params.test.kts")
|
||||
public void testParams_test() {
|
||||
runTest("plugins/scripting/scripting-tests/testData/codegen/testScripts/params.test.kts");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("simple.test.kts")
|
||||
public void testSimple_test() {
|
||||
|
||||
+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("providedPropertiesShadowing.test.kts")
|
||||
public void testProvidedPropertiesShadowing_test() {
|
||||
runTest("plugins/scripting/scripting-tests/testData/diagnostics/testScripts/providedPropertiesShadowing.test.kts");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("providedProperties.test.kts")
|
||||
public void testProvidedProperties_test() {
|
||||
|
||||
Reference in New Issue
Block a user