diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.kt index bb17a2c6645..d228bc23e47 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ScriptCodegen.kt @@ -170,10 +170,10 @@ class ScriptCodegen private constructor( genFieldFromParam(typeMapper.mapClass(receiver), receiversParamIndex, name) } - scriptDescriptor.scriptEnvironmentProperties.forEachIndexed { envVarIndex, envVar -> + scriptDescriptor.scriptProvidedProperties.forEachIndexed { envVarIndex, envVar -> val fieldClassType = typeMapper.mapType(envVar) val envVarParamIndex = frameMap.enterTemp(fieldClassType) - val name = scriptContext.getEnvironmentVarName(envVarIndex) + val name = scriptContext.getProvidedPropertyName(envVarIndex) genFieldFromParam(fieldClassType, envVarParamIndex, name) } @@ -209,12 +209,12 @@ class ScriptCodegen private constructor( null ) } - for (envVarIndex in scriptDescriptor.scriptEnvironmentProperties.indices) { + for (envVarIndex in scriptDescriptor.scriptProvidedProperties.indices) { classBuilder.newField( NO_ORIGIN, ACC_PUBLIC or ACC_FINAL, - scriptContext.getEnvironmentVarName(envVarIndex), - scriptContext.getEnvironmentVarType(envVarIndex).descriptor, + scriptContext.getProvidedPropertyName(envVarIndex), + scriptContext.getProvidedPropertyType(envVarIndex).descriptor, null, null ) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ScriptContext.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ScriptContext.kt index b95514a5ff2..6fa1d2bad98 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ScriptContext.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ScriptContext.kt @@ -33,7 +33,7 @@ import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny import org.jetbrains.kotlin.resolve.jvm.AsmTypes -import org.jetbrains.kotlin.resolve.lazy.descriptors.script.ScriptEnvironmentDescriptor +import org.jetbrains.kotlin.resolve.lazy.descriptors.script.ScriptProvidedPropertiesDescriptor import org.jetbrains.org.objectweb.asm.Type import kotlin.reflect.KClass @@ -76,7 +76,7 @@ class ScriptContext( private val ctorImplicitReceiversParametersStart = ctorValueParametersStart + (scriptDescriptor.getSuperClassNotAny()?.unsubstitutedPrimaryConstructor?.valueParameters?.size ?: 0) - private val ctorEnvironmentVarsParametersStart = + private val ctorProvidedPropertiesParametersStart = ctorImplicitReceiversParametersStart + scriptDescriptor.implicitReceivers.size fun getImplicitReceiverName(index: Int): String = @@ -88,13 +88,13 @@ class ScriptContext( return kClass?.java?.classId?.let(AsmUtil::asmTypeByClassId) } - fun getEnvironmentVarName(index: Int): String = - scriptDescriptor.unsubstitutedPrimaryConstructor.valueParameters[ctorEnvironmentVarsParametersStart + index].name.identifier + fun getProvidedPropertyName(index: Int): String = + scriptDescriptor.unsubstitutedPrimaryConstructor.valueParameters[ctorProvidedPropertiesParametersStart + index].name.identifier - fun getEnvironmentVarType(index: Int): Type = typeMapper.mapType(scriptDescriptor.scriptEnvironmentProperties[index].type) + fun getProvidedPropertyType(index: Int): Type = typeMapper.mapType(scriptDescriptor.scriptProvidedProperties[index].type) fun getOuterReceiverExpression(prefix: StackValue?, thisOrOuterClass: ClassDescriptor): StackValue { - if (thisOrOuterClass is ScriptEnvironmentDescriptor) { + if (thisOrOuterClass is ScriptProvidedPropertiesDescriptor) { return prefix ?: StackValue.LOCAL_0 } receiverDescriptors.forEachIndexed { index, outerReceiver -> diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 1fd06a5416c..5de19ae0626 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -101,7 +101,7 @@ public interface Errors { DiagnosticFactory1 MISSING_SCRIPT_BASE_CLASS = DiagnosticFactory1.create(ERROR); DiagnosticFactory1 MISSING_SCRIPT_STANDARD_TEMPLATE = DiagnosticFactory1.create(ERROR); DiagnosticFactory1 MISSING_SCRIPT_RECEIVER_CLASS = DiagnosticFactory1.create(ERROR); - DiagnosticFactory1 MISSING_SCRIPT_ENVIRONMENT_PROPERTY_CLASS = DiagnosticFactory1.create(ERROR); + DiagnosticFactory1 MISSING_SCRIPT_PROVIDED_PROPERTY_CLASS = DiagnosticFactory1.create(ERROR); DiagnosticFactory1 PRE_RELEASE_CLASS = DiagnosticFactory1.create(ERROR); DiagnosticFactory2> INCOMPATIBLE_CLASS = DiagnosticFactory2.create(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index a5ca18d9714..e4653f6e464 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -365,7 +365,7 @@ public class DefaultErrorMessages { MAP.put(MISSING_SCRIPT_BASE_CLASS, "Cannot access script base class ''{0}''. Check your module classpath for missing or conflicting dependencies", TO_STRING); MAP.put(MISSING_SCRIPT_STANDARD_TEMPLATE, "No script runtime was found in the classpath: class ''{0}'' not found. Please add kotlin-script-runtime.jar to the module dependencies.", TO_STRING); MAP.put(MISSING_SCRIPT_RECEIVER_CLASS, "Cannot access implicit script receiver class ''{0}''. Check your module classpath for missing or conflicting dependencies", TO_STRING); - MAP.put(MISSING_SCRIPT_ENVIRONMENT_PROPERTY_CLASS, "Cannot access script environment property class ''{0}''. Check your module classpath for missing or conflicting dependencies", TO_STRING); + MAP.put(MISSING_SCRIPT_PROVIDED_PROPERTY_CLASS, "Cannot access script provided property class ''{0}''. Check your module classpath for missing or conflicting dependencies", TO_STRING); MAP.put(PRE_RELEASE_CLASS, "{0} is compiled by a pre-release version of Kotlin and cannot be loaded by this version of the compiler", TO_STRING); MAP.put(INCOMPATIBLE_CLASS, "{0} was compiled with an incompatible version of Kotlin. {1}", diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt index 56fa12baed2..eaabab3dc38 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptClassMemberScope.kt @@ -43,8 +43,8 @@ class LazyScriptClassMemberScope( scriptDescriptor.implicitReceivers.mapIndexed { idx, receiver -> "$IMPLICIT_RECEIVER_PARAM_NAME_PREFIX$idx" to receiver.defaultType } - val environmentVarsParamTypes = - scriptDescriptor.scriptEnvironmentProperties.map { + val providedPropertiesParamTypes = + scriptDescriptor.scriptProvidedProperties.map { it.name.identifier to it.type } val annotations = baseConstructorDescriptor.annotations @@ -53,7 +53,7 @@ class LazyScriptClassMemberScope( ) var paramsIndexBase = baseConstructorDescriptor.valueParameters.lastIndex + 1 val syntheticParameters = - (implicitReceiversParamTypes + environmentVarsParamTypes).map { param: Pair -> + (implicitReceiversParamTypes + providedPropertiesParamTypes).map { param: Pair -> ValueParameterDescriptorImpl( constructorDescriptor, null, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptDescriptor.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptDescriptor.kt index 4ee91dc1666..8a63574a197 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptDescriptor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyScriptDescriptor.kt @@ -37,7 +37,7 @@ import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.data.KtScriptInfo import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider import org.jetbrains.kotlin.resolve.lazy.descriptors.script.ReplResultPropertyDescriptor -import org.jetbrains.kotlin.resolve.lazy.descriptors.script.ScriptEnvironmentDescriptor +import org.jetbrains.kotlin.resolve.lazy.descriptors.script.ScriptProvidedPropertiesDescriptor import org.jetbrains.kotlin.resolve.lazy.descriptors.script.classId import org.jetbrains.kotlin.resolve.scopes.LexicalScope import org.jetbrains.kotlin.resolve.scopes.LexicalScopeImpl @@ -174,19 +174,19 @@ class LazyScriptDescriptor( override fun getImplicitReceivers(): List = scriptImplicitReceivers() - private val scriptEnvironment: () -> ScriptEnvironmentDescriptor = resolveSession.storageManager.createLazyValue { - ScriptEnvironmentDescriptor(this) + private val scriptProvidedProperties: () -> ScriptProvidedPropertiesDescriptor = resolveSession.storageManager.createLazyValue { + ScriptProvidedPropertiesDescriptor(this) } - override fun getScriptEnvironmentProperties(): List = scriptEnvironment().properties() + override fun getScriptProvidedProperties(): List = scriptProvidedProperties().properties() private val scriptOuterScope: () -> LexicalScope = resolveSession.storageManager.createLazyValue { var outerScope = super.getOuterScope() val outerScopeReceivers = implicitReceivers.let { - if (scriptDefinition().environmentVariables.isEmpty()) { + if (scriptDefinition().providedProperties.isEmpty()) { it } else { - it + ScriptEnvironmentDescriptor(this) + it + ScriptProvidedPropertiesDescriptor(this) } } for (receiverClassDescriptor in outerScopeReceivers.asReversed()) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptEnvironmentDescriptor.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptProvidedPropertiesDescriptor.kt similarity index 70% rename from compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptEnvironmentDescriptor.kt rename to compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptProvidedPropertiesDescriptor.kt index 252f7667e9b..eefbce9ae7c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptEnvironmentDescriptor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptProvidedPropertiesDescriptor.kt @@ -17,11 +17,11 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.utils.Printer -class ScriptEnvironmentDescriptor(script: LazyScriptDescriptor) : +class ScriptProvidedPropertiesDescriptor(script: LazyScriptDescriptor) : MutableClassDescriptor( script, ClassKind.CLASS, false, false, - Name.special(""), + Name.special(""), SourceElement.NO_SOURCE, LockBasedStorageManager.NO_LOCKS ) { @@ -33,8 +33,8 @@ class ScriptEnvironmentDescriptor(script: LazyScriptDescriptor) : createTypeConstructor() } - private val memberScope: () -> ScriptEnvironmentMemberScope = script.resolveSession.storageManager.createLazyValue { - ScriptEnvironmentMemberScope( + private val memberScope: () -> ScriptProvidedPropertiesMemberScope = script.resolveSession.storageManager.createLazyValue { + ScriptProvidedPropertiesMemberScope( script.name.identifier, properties() ) @@ -42,13 +42,13 @@ class ScriptEnvironmentDescriptor(script: LazyScriptDescriptor) : override fun getUnsubstitutedMemberScope(): MemberScope = memberScope() - val properties: () -> List = script.resolveSession.storageManager.createLazyValue { - script.scriptDefinition().environmentVariables.mapNotNull { (name, type) -> - script.findTypeDescriptor(type, Errors.MISSING_SCRIPT_ENVIRONMENT_PROPERTY_CLASS)?.let { + val properties: () -> List = script.resolveSession.storageManager.createLazyValue { + script.scriptDefinition().providedProperties.mapNotNull { (name, type) -> + script.findTypeDescriptor(type, Errors.MISSING_SCRIPT_PROVIDED_PROPERTY_CLASS)?.let { name to it } }.map { (name, classDescriptor) -> - ScriptEnvironmentPropertyDescriptor( + ScriptProvidedPropertyDescriptor( Name.identifier(name), classDescriptor, thisAsReceiverParameter, @@ -58,21 +58,21 @@ class ScriptEnvironmentDescriptor(script: LazyScriptDescriptor) : } } - private class ScriptEnvironmentMemberScope( + private class ScriptProvidedPropertiesMemberScope( private val scriptId: String, - private val environmentProperties: List + private val providedProperties: List ) : MemberScopeImpl() { override fun getContributedDescriptors( kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean ): Collection = - environmentProperties + providedProperties override fun getContributedVariables(name: Name, location: LookupLocation): Collection = - environmentProperties.filter { it.name == name } + providedProperties.filter { it.name == name } override fun printScopeStructure(p: Printer) { - p.println("Scope of script environment: $scriptId") + p.println("Scope of script provided properties: $scriptId") } } } \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptEnvironmentPropertyDescriptor.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptProvidedPropertyDescriptor.kt similarity index 98% rename from compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptEnvironmentPropertyDescriptor.kt rename to compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptProvidedPropertyDescriptor.kt index cef66e7238c..648f2650d33 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptEnvironmentPropertyDescriptor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/script/ScriptProvidedPropertyDescriptor.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor -class ScriptEnvironmentPropertyDescriptor( +class ScriptProvidedPropertyDescriptor( name: Name, typeDescriptor: ClassDescriptor, receiver: ReceiverParameterDescriptor?, diff --git a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinition.kt b/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinition.kt index 3072f8ea147..d9cacf50549 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinition.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinition.kt @@ -60,7 +60,7 @@ open class KotlinScriptDefinition(open val template: KClass) : UserData open val implicitReceivers: List get() = emptyList() - open val environmentVariables: List> get() = emptyList() + open val providedProperties: List> get() = emptyList() open val targetClassAnnotations: List get() = emptyList() diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScriptDescriptor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScriptDescriptor.java index 9da0192066c..570c2a262f5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScriptDescriptor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ScriptDescriptor.java @@ -31,5 +31,5 @@ public interface ScriptDescriptor extends ClassDescriptor { List getImplicitReceivers(); @NotNull - List getScriptEnvironmentProperties(); + List getScriptProvidedProperties(); } diff --git a/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/KotlinScriptDefinitionAdapterFromNewAPI.kt b/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/KotlinScriptDefinitionAdapterFromNewAPI.kt index 4afb5eaca4d..fc0e2094eb7 100644 --- a/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/KotlinScriptDefinitionAdapterFromNewAPI.kt +++ b/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/KotlinScriptDefinitionAdapterFromNewAPI.kt @@ -67,7 +67,7 @@ abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinit .map { getScriptingClass(it).starProjectedType } } - override val environmentVariables: List> by lazy(LazyThreadSafetyMode.PUBLICATION) { + override val providedProperties: List> by lazy(LazyThreadSafetyMode.PUBLICATION) { scriptCompilationConfiguration[ScriptCompilationConfiguration.providedProperties] ?.map { (k, v) -> k to getScriptingClass(v).starProjectedType }.orEmpty() }