Refactor script definitions and resolving/refining infrastructure:
- implement wrappers to wrap old and new API providers and resolvers - make old API deprecated (with error where possible) - drop old internal classes related to the old API - refactor usages accordingly - fix and add missing features to the scripting API where necessary
This commit is contained in:
+1
-1
@@ -33,7 +33,7 @@ class KJvmCompilerImpl(val hostConfiguration: ScriptingHostConfiguration) : KJvm
|
||||
|
||||
val mainKtFile =
|
||||
getScriptKtFile(script, context.baseScriptCompilationConfiguration, context.environment.project, messageCollector)
|
||||
.resultOr { return it }
|
||||
.valueOr { return it }
|
||||
|
||||
context.scriptCompilationState.configureFor(script, context.baseScriptCompilationConfiguration)
|
||||
|
||||
|
||||
+3
-3
@@ -31,7 +31,7 @@ class KJvmReplCompilerImpl(val hostConfiguration: ScriptingHostConfiguration) :
|
||||
override fun createReplCompilationState(scriptCompilationConfiguration: ScriptCompilationConfiguration): JvmReplCompilerState.Compilation {
|
||||
val context = withMessageCollectorAndDisposable(disposeOnSuccess = false) { messageCollector, disposable ->
|
||||
createSharedCompilationContext(scriptCompilationConfiguration, hostConfiguration, messageCollector, disposable).asSuccess()
|
||||
}.resultOr { throw IllegalStateException("Unable to initialize repl compiler:\n ${it.reports.joinToString("\n ")}") }
|
||||
}.valueOr { throw IllegalStateException("Unable to initialize repl compiler:\n ${it.reports.joinToString("\n ")}") }
|
||||
return ReplCompilationState(context)
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class KJvmReplCompilerImpl(val hostConfiguration: ScriptingHostConfiguration) :
|
||||
): ResultWithDiagnostics<Boolean> =
|
||||
withMessageCollector(script) { messageCollector ->
|
||||
val ktFile = getScriptKtFile(script, scriptCompilationConfiguration, project, messageCollector)
|
||||
.resultOr { return it }
|
||||
.valueOr { return it }
|
||||
val errorHolder = object : MessageCollectorBasedReporter {
|
||||
override val messageCollector = messageCollector
|
||||
}
|
||||
@@ -80,7 +80,7 @@ class KJvmReplCompilerImpl(val hostConfiguration: ScriptingHostConfiguration) :
|
||||
|
||||
val snippetKtFile =
|
||||
getScriptKtFile(snippet, context.baseScriptCompilationConfiguration, context.environment.project, messageCollector)
|
||||
.resultOr { return it }
|
||||
.valueOr { return it }
|
||||
|
||||
val (sourceFiles, sourceDependencies) = collectRefinedSourcesAndUpdateEnvironment(context, snippetKtFile, messageCollector)
|
||||
|
||||
|
||||
+7
-3
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar
|
||||
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.dependencies.ScriptsCompilationDependencies
|
||||
import org.jetbrains.kotlin.scripting.dependencies.collectScriptsCompilationDependencies
|
||||
import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
||||
@@ -88,10 +89,13 @@ internal fun createInitialConfigurations(
|
||||
|
||||
kotlinCompilerConfiguration.add(
|
||||
ScriptingConfigurationKeys.SCRIPT_DEFINITIONS,
|
||||
BridgeScriptDefinition(
|
||||
scriptCompilationConfiguration,
|
||||
ScriptDefinition.FromLegacy(
|
||||
hostConfiguration,
|
||||
scriptCompilationState
|
||||
BridgeScriptDefinition(
|
||||
scriptCompilationConfiguration,
|
||||
hostConfiguration,
|
||||
scriptCompilationState
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+3
-15
@@ -8,11 +8,8 @@ package kotlin.script.experimental.jvmhost.impl
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.CharsetToolkit
|
||||
import com.intellij.psi.PsiFileFactory
|
||||
import com.intellij.psi.impl.PsiFileFactoryImpl
|
||||
import com.intellij.testFramework.LightVirtualFile
|
||||
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
@@ -20,24 +17,15 @@ import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtScript
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.scripting.dependencies.ScriptsCompilationDependencies
|
||||
import org.jetbrains.kotlin.scripting.resolve.ScriptLightVirtualFile
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
import java.util.*
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.host.FileBasedScriptSource
|
||||
import kotlin.script.experimental.host.FileScriptSource
|
||||
import kotlin.script.experimental.host.getMergedScriptText
|
||||
import kotlin.script.experimental.jvm.impl.KJvmCompiledScript
|
||||
|
||||
internal class ScriptLightVirtualFile(name: String, private val _path: String?, text: String) :
|
||||
LightVirtualFile(name, KotlinLanguage.INSTANCE, StringUtil.convertLineSeparators(text)) {
|
||||
|
||||
init {
|
||||
charset = CharsetToolkit.UTF8_CHARSET
|
||||
}
|
||||
|
||||
override fun getPath(): String = _path ?: super.getPath()
|
||||
override fun getCanonicalPath(): String? = path
|
||||
}
|
||||
|
||||
internal fun makeCompiledModule(generationState: GenerationState) =
|
||||
KJvmCompiledModuleInMemory(
|
||||
generationState.factory.asList()
|
||||
@@ -98,7 +86,7 @@ internal fun getScriptKtFile(
|
||||
val scriptText = getMergedScriptText(script, scriptCompilationConfiguration)
|
||||
val virtualFile = ScriptLightVirtualFile(
|
||||
script.scriptFileName(script, scriptCompilationConfiguration),
|
||||
(script as? FileScriptSource)?.file?.path,
|
||||
(script as? FileBasedScriptSource)?.file?.path,
|
||||
scriptText
|
||||
)
|
||||
val ktFile = psiFileFactory.trySetupPsiForFile(virtualFile, KotlinLanguage.INSTANCE, true, false) as KtFile?
|
||||
|
||||
Reference in New Issue
Block a user