From e17f121b232ebfe9fc901cb89d16f13658b33a2a Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Mon, 20 Dec 2021 19:13:44 +0300 Subject: [PATCH] [JS REPL] Extract JS script/repl parts into separate module - don't load js evaluation plugin in CLI compiler --- compiler/tests-common/build.gradle.kts | 1 + .../kotlin/ir/AbstractIrTextTestCase.kt | 3 +- libraries/scripting/js-test/build.gradle.kts | 2 +- .../repl/js/test/AbstractJsReplTest.kt | 3 ++ .../repl/js/test/JsReplTestAgainstBinaries.kt | 4 +- .../repl/js/test/JsReplTestAgainstKlib.kt | 4 ++ .../kotlin/scripting/repl/js/test/ReplTest.kt | 2 +- .../scripting-compiler-js/build.gradle.kts | 47 +++++++++++++++++++ .../scripting}/js/JsCoreScriptingCompiler.kt | 4 +- .../scripting}/js/JsReplCodeAnalyzer.kt | 2 +- .../kotlin/scripting}/js/JsReplCompiler.kt | 4 +- .../kotlin/scripting}/js/JsReplState.kt | 2 +- .../kotlin/scripting}/js/JsReplUtils.kt | 4 +- .../js/JsScriptDependencyCompiler.kt | 2 +- .../js}/JsScriptEvaluationExtension.kt | 7 +-- .../scripting/js}/ScriptJsCompilerImpls.kt | 10 ++-- .../scripting-compiler/build.gradle.kts | 4 -- .../compiler/plugin/pluginRegisrar.kt | 2 +- settings.gradle | 2 + 19 files changed, 81 insertions(+), 28 deletions(-) create mode 100644 plugins/scripting/scripting-compiler-js/build.gradle.kts rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/repl => scripting-compiler-js/src/org/jetbrains/kotlin/scripting}/js/JsCoreScriptingCompiler.kt (97%) rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/repl => scripting-compiler-js/src/org/jetbrains/kotlin/scripting}/js/JsReplCodeAnalyzer.kt (97%) rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/repl => scripting-compiler-js/src/org/jetbrains/kotlin/scripting}/js/JsReplCompiler.kt (94%) rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/repl => scripting-compiler-js/src/org/jetbrains/kotlin/scripting}/js/JsReplState.kt (97%) rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/repl => scripting-compiler-js/src/org/jetbrains/kotlin/scripting}/js/JsReplUtils.kt (98%) rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/repl => scripting-compiler-js/src/org/jetbrains/kotlin/scripting}/js/JsScriptDependencyCompiler.kt (98%) rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin => scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js}/JsScriptEvaluationExtension.kt (91%) rename plugins/scripting/{scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl => scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js}/ScriptJsCompilerImpls.kt (87%) diff --git a/compiler/tests-common/build.gradle.kts b/compiler/tests-common/build.gradle.kts index e44cdc65a91..224e80f5df8 100644 --- a/compiler/tests-common/build.gradle.kts +++ b/compiler/tests-common/build.gradle.kts @@ -7,6 +7,7 @@ plugins { dependencies { testApi(kotlinStdlib("jdk8")) testApi(project(":kotlin-scripting-compiler")) + testApi(project(":kotlin-scripting-compiler-js")) testApi(project(":core:descriptors")) testApi(project(":core:descriptors.jvm")) testApi(project(":core:deserialization")) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt index 2c2279da400..906dd9b0d14 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt @@ -10,7 +10,6 @@ import junit.framework.TestCase import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.cli.js.loadPluginsForTests import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc @@ -22,7 +21,7 @@ import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorImpl -import org.jetbrains.kotlin.scripting.compiler.plugin.loadScriptConfiguration +import org.jetbrains.kotlin.scripting.js.loadScriptConfiguration import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.jetbrains.kotlin.test.util.JUnit4Assertions diff --git a/libraries/scripting/js-test/build.gradle.kts b/libraries/scripting/js-test/build.gradle.kts index 7fb29565f07..c39ee06071f 100644 --- a/libraries/scripting/js-test/build.gradle.kts +++ b/libraries/scripting/js-test/build.gradle.kts @@ -9,7 +9,7 @@ dependencies { testApi(project(":kotlin-scripting-js")) testApi(project(":compiler:plugin-api")) - testApi(project(":kotlin-scripting-compiler")) + testApi(project(":kotlin-scripting-compiler-js")) testApi(project(":compiler:cli")) testApi(project(":compiler:backend.js")) testApi(project(":compiler:ir.tree.impl")) diff --git a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt index f605cb2b570..9e3fce5aadf 100644 --- a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt +++ b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/AbstractJsReplTest.kt @@ -20,6 +20,9 @@ import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigura import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.definitions.platform +import org.jetbrains.kotlin.scripting.js.JsReplCompiler +import org.jetbrains.kotlin.scripting.js.JsReplCompilerState +import org.jetbrains.kotlin.scripting.js.ReplMessageCollector import org.jetbrains.kotlin.scripting.repl.js.* import java.io.Closeable import kotlin.script.experimental.api.ScriptCompilationConfiguration diff --git a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt index 6bc0a375f3f..97765e5937f 100644 --- a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt +++ b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstBinaries.kt @@ -12,7 +12,9 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.js.engine.ScriptEngineNashorn import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase -import org.jetbrains.kotlin.scripting.repl.js.* +import org.jetbrains.kotlin.scripting.js.* +import org.jetbrains.kotlin.scripting.repl.js.JsEvaluationState +import org.jetbrains.kotlin.scripting.repl.js.JsReplEvaluator import java.util.concurrent.locks.ReentrantReadWriteLock // 1. Compile dependencies diff --git a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt index 2cf11a41770..513147b3789 100644 --- a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt +++ b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/JsReplTestAgainstKlib.kt @@ -13,6 +13,10 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.js.engine.ScriptEngineNashorn import org.jetbrains.kotlin.scripting.compiler.plugin.repl.ReplCodeAnalyzerBase +import org.jetbrains.kotlin.scripting.js.JsReplCompilerState +import org.jetbrains.kotlin.scripting.js.JsScriptDependencyCompiler +import org.jetbrains.kotlin.scripting.js.createCompileResult +import org.jetbrains.kotlin.scripting.js.readLibrariesFromConfiguration import org.jetbrains.kotlin.scripting.repl.js.* import java.util.concurrent.locks.ReentrantReadWriteLock diff --git a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/ReplTest.kt b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/ReplTest.kt index 6dcca37eef7..5afad240a84 100644 --- a/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/ReplTest.kt +++ b/libraries/scripting/js-test/test/org/jetbrains/kotlin/scripting/repl/js/test/ReplTest.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.cli.common.repl.ReplCompileResult import org.junit.Assert import org.junit.Test import org.jetbrains.kotlin.cli.common.repl.ReplEvalResult -import org.jetbrains.kotlin.scripting.repl.js.makeReplCodeLine +import org.jetbrains.kotlin.scripting.js.makeReplCodeLine abstract class AbstractReplTestRunner : TestCase() { abstract fun getTester(): AbstractJsReplTest diff --git a/plugins/scripting/scripting-compiler-js/build.gradle.kts b/plugins/scripting/scripting-compiler-js/build.gradle.kts new file mode 100644 index 00000000000..89e7891847f --- /dev/null +++ b/plugins/scripting/scripting-compiler-js/build.gradle.kts @@ -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> { + kotlinOptions { + freeCompilerArgs = freeCompilerArgs - "-progressive" + "-Xskip-metadata-version-check" + } +} + +publish() \ No newline at end of file diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsCoreScriptingCompiler.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsCoreScriptingCompiler.kt similarity index 97% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsCoreScriptingCompiler.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsCoreScriptingCompiler.kt index 104968412a8..06697f82bfa 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsCoreScriptingCompiler.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsCoreScriptingCompiler.kt @@ -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 diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCodeAnalyzer.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplCodeAnalyzer.kt similarity index 97% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCodeAnalyzer.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplCodeAnalyzer.kt index 5b7b01ee554..d565c9919c1 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCodeAnalyzer.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplCodeAnalyzer.kt @@ -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 diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCompiler.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplCompiler.kt similarity index 94% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCompiler.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplCompiler.kt index 851169ce85f..96795e8c769 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplCompiler.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplCompiler.kt @@ -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.* diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplState.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplState.kt similarity index 97% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplState.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplState.kt index a8693c39a24..27a34be6524 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplState.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplState.kt @@ -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 diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplUtils.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplUtils.kt similarity index 98% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplUtils.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplUtils.kt index 033fb10361a..2435cdd4eb6 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsReplUtils.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsReplUtils.kt @@ -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 diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsScriptDependencyCompiler.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsScriptDependencyCompiler.kt similarity index 98% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsScriptDependencyCompiler.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsScriptDependencyCompiler.kt index 189b798483d..69a9ac7a643 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/repl/js/JsScriptDependencyCompiler.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsScriptDependencyCompiler.kt @@ -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 diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JsScriptEvaluationExtension.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsScriptEvaluationExtension.kt similarity index 91% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JsScriptEvaluationExtension.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsScriptEvaluationExtension.kt index 1ce20b2be6e..010ff70666b 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JsScriptEvaluationExtension.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/JsScriptEvaluationExtension.kt @@ -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 diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/ScriptJsCompilerImpls.kt b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/ScriptJsCompilerImpls.kt similarity index 87% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/ScriptJsCompilerImpls.kt rename to plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/ScriptJsCompilerImpls.kt index b0fe99601aa..266584f9e9f 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/ScriptJsCompilerImpls.kt +++ b/plugins/scripting/scripting-compiler-js/src/org/jetbrains/kotlin/scripting/js/ScriptJsCompilerImpls.kt @@ -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( diff --git a/plugins/scripting/scripting-compiler/build.gradle.kts b/plugins/scripting/scripting-compiler/build.gradle.kts index d9ad5d5596a..61a5f4a3cd5 100644 --- a/plugins/scripting/scripting-compiler/build.gradle.kts +++ b/plugins/scripting/scripting-compiler/build.gradle.kts @@ -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")) diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt index 605e9257dc2..c26cceac94e 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt @@ -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()) diff --git a/settings.gradle b/settings.gradle index 2db91e86c0a..ad310e2ec8c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -263,6 +263,7 @@ include ":benchmarks", ":kotlin-scripting-jvm-host", ":kotlin-scripting-intellij", ":kotlin-scripting-compiler", + ":kotlin-scripting-compiler-js", ":kotlin-scripting-compiler-embeddable", ":kotlin-scripting-compiler-impl", ":kotlin-scripting-compiler-impl-embeddable", @@ -656,6 +657,7 @@ project(':kotlin-scripting-jsr223-test').projectDir = "$rootDir/libraries/script project(':kotlin-scripting-jsr223').projectDir = "$rootDir/libraries/scripting/jsr223-embeddable" as File project(':kotlin-scripting-intellij').projectDir = "$rootDir/libraries/scripting/intellij" as File project(':kotlin-scripting-compiler').projectDir = "$rootDir/plugins/scripting/scripting-compiler" as File +project(':kotlin-scripting-compiler-js').projectDir = "$rootDir/plugins/scripting/scripting-compiler-js" as File project(':kotlin-scripting-compiler-embeddable').projectDir = "$rootDir/plugins/scripting/scripting-compiler-embeddable" as File project(':kotlin-scripting-compiler-impl').projectDir = "$rootDir/plugins/scripting/scripting-compiler-impl" as File project(':kotlin-scripting-compiler-impl-embeddable').projectDir = "$rootDir/plugins/scripting/scripting-compiler-impl-embeddable" as File