[JS REPL] Extract JS script/repl parts into separate module

- don't load js evaluation plugin in CLI compiler
This commit is contained in:
Roman Artemev
2021-12-20 19:13:44 +03:00
committed by teamcity
parent c12d1930b4
commit e17f121b23
19 changed files with 81 additions and 28 deletions
@@ -0,0 +1,47 @@
description = "Kotlin Scripting Compiler JS Plugin"
plugins {
kotlin("jvm")
id("jps-compatible")
}
dependencies {
compileOnly(project(":compiler:frontend"))
compileOnly(project(":compiler:psi"))
compileOnly(project(":compiler:plugin-api"))
compileOnly(project(":compiler:cli"))
compileOnly(project(":compiler:backend.js"))
compileOnly(project(":core:descriptors.runtime"))
compileOnly(project(":compiler:ir.tree.impl"))
compileOnly(project(":kotlin-reflect-api"))
api(project(":kotlin-scripting-common"))
api(project(":kotlin-scripting-js"))
api(project(":kotlin-util-klib"))
api(project(":kotlin-scripting-compiler"))
api(kotlinStdlib())
compileOnly(intellijCore())
testApi(project(":compiler:frontend"))
testApi(project(":compiler:plugin-api"))
testApi(project(":compiler:util"))
testApi(project(":compiler:cli"))
testApi(project(":compiler:cli-common"))
testApi(project(":compiler:backend.js"))
testApi(projectTests(":compiler:tests-common"))
testApi(commonDependency("junit:junit"))
testImplementation(intellijCore())
}
sourceSets {
"main" { projectDefault() }
"test" { projectDefault() }
}
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>> {
kotlinOptions {
freeCompilerArgs = freeCompilerArgs - "-progressive" + "-Xskip-metadata-version-check"
}
}
publish()
@@ -1,9 +1,9 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2021 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.repl.js
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
@@ -3,7 +3,7 @@
* 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.repl.js
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.cli.common.repl.ReplCodeLine
@@ -1,9 +1,9 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2021 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.repl.js
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.cli.common.repl.*
@@ -3,7 +3,7 @@
* 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.repl.js
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.cli.common.repl.BasicReplStageHistory
import org.jetbrains.kotlin.cli.common.repl.IReplStageState
@@ -1,9 +1,9 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2021 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.repl.js
package org.jetbrains.kotlin.scripting.js
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFileFactory
@@ -3,7 +3,7 @@
* 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.repl.js
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.CompilerConfiguration
@@ -1,16 +1,17 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2021 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
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.scripting.compiler.plugin.impl.JsScriptCompilerWithDependenciesProxy
import org.jetbrains.kotlin.scripting.compiler.plugin.AbstractScriptEvaluationExtension
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptCompilerProxy
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.scripting.definitions.platform
@@ -1,9 +1,9 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2021 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.impl
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
@@ -15,10 +15,8 @@ import org.jetbrains.kotlin.ir.backend.js.utils.NameTables
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.util.SymbolTable
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptCompilerProxy
import org.jetbrains.kotlin.scripting.compiler.plugin.impl.withMessageCollector
import org.jetbrains.kotlin.scripting.repl.js.JsCompiledScript
import org.jetbrains.kotlin.scripting.repl.js.JsCoreScriptingCompiler
import org.jetbrains.kotlin.scripting.repl.js.JsScriptDependencyCompiler
import org.jetbrains.kotlin.scripting.repl.js.readLibrariesFromConfiguration
import kotlin.script.experimental.api.*
class JsScriptCompilerWithDependenciesProxy(private val environment: KotlinCoreEnvironment) : ScriptCompilerProxy {
@@ -38,7 +36,7 @@ class JsScriptCompilerWithDependenciesProxy(private val environment: KotlinCoreE
environment.configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
try {
val dependenciesCode = scriptDependencyCompiler?.let { scriptDependencyCompiler = null; it.compile(dependencies) } ?: ""
when (val compileResult = compiler.compile(org.jetbrains.kotlin.scripting.repl.js.makeReplCodeLine(0, script.text))) {
when (val compileResult = compiler.compile(makeReplCodeLine(0, script.text))) {
is ReplCompileResult.CompiledClasses -> {
val compileJsCode = compileResult.data as String
ResultWithDiagnostics.Success(
@@ -11,14 +11,11 @@ dependencies {
compileOnly(project(":compiler:psi"))
compileOnly(project(":compiler:plugin-api"))
compileOnly(project(":compiler:cli"))
compileOnly(project(":compiler:backend.js"))
compileOnly(project(":core:descriptors.runtime"))
compileOnly(project(":compiler:ir.tree.impl"))
compileOnly(project(":compiler:backend.jvm.entrypoint"))
compileOnly(project(":kotlin-reflect-api"))
api(project(":kotlin-scripting-common"))
api(project(":kotlin-scripting-js"))
api(project(":kotlin-util-klib"))
api(project(":kotlin-scripting-jvm"))
api(project(":kotlin-scripting-compiler-impl"))
api(kotlinStdlib())
@@ -30,7 +27,6 @@ dependencies {
testApi(project(":compiler:cli"))
testApi(project(":compiler:cli-common"))
testApi(project(":compiler:frontend.java"))
testApi(project(":compiler:backend.js"))
testApi(projectTests(":compiler:tests-common"))
testApi(commonDependency("junit:junit"))
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
import org.jetbrains.kotlin.scripting.extensions.ScriptExtraImportsProviderExtension
import org.jetbrains.kotlin.scripting.extensions.ScriptingResolveExtension
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.net.URLClassLoader
import kotlin.script.experimental.host.ScriptingHostConfiguration
import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration
@@ -51,7 +52,6 @@ class ScriptingCompilerConfigurationComponentRegistrar : ComponentRegistrar {
CompilerConfigurationExtension.registerExtension(project, ScriptingCompilerConfigurationExtension(project, hostConfiguration))
CollectAdditionalSourcesExtension.registerExtension(project, ScriptingCollectAdditionalSourcesExtension(project))
ScriptEvaluationExtension.registerExtensionIfRequired(project, JvmCliScriptEvaluationExtension())
ScriptEvaluationExtension.registerExtensionIfRequired(project, JsScriptEvaluationExtension())
ShellExtension.registerExtensionIfRequired(project, JvmCliReplShellExtension())
ReplFactoryExtension.registerExtensionIfRequired(project, JvmStandardReplFactoryExtension())