[JS REPL] Extract JS script/repl parts into separate module
- don't load js evaluation plugin in CLI compiler
This commit is contained in:
@@ -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"))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"))
|
||||
|
||||
+3
@@ -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
|
||||
|
||||
+3
-1
@@ -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
|
||||
|
||||
+4
@@ -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
|
||||
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
@@ -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()
|
||||
+2
-2
@@ -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
|
||||
+1
-1
@@ -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
|
||||
+2
-2
@@ -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.*
|
||||
+1
-1
@@ -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
|
||||
+2
-2
@@ -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
|
||||
+1
-1
@@ -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
|
||||
+4
-3
@@ -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
|
||||
+4
-6
@@ -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"))
|
||||
|
||||
|
||||
+1
-1
@@ -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())
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user