diff --git a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsJsr223Test.kt b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsJsr223Test.kt index 39b4a7f3ba9..b5bf9eddca7 100644 --- a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsJsr223Test.kt +++ b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsJsr223Test.kt @@ -22,5 +22,15 @@ class MainKtsJsr223Test { val res2 = engine.eval("x + 2") Assert.assertEquals(5, res2) } + + @Test + fun testWithDirectBindings() { + val engine = ScriptEngineManager().getEngineByExtension("main.kts")!! + engine.put("z", 6) + val res1 = engine.eval("val x = 7") + Assert.assertNull(res1) + val res2 = engine.eval("z * x") + Assert.assertEquals(42, res2) + } } diff --git a/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/scriptDef.kt b/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/scriptDef.kt index 77267e3f343..d6ae7a7f41e 100644 --- a/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/scriptDef.kt +++ b/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/scriptDef.kt @@ -41,6 +41,11 @@ object MainKtsScriptDefinition : ScriptCompilationConfiguration( } refineConfiguration { onAnnotations(DependsOn::class, Repository::class, Import::class, handler = MainKtsConfigurator()) + beforeCompiling { context -> + configureProvidedPropertiesFromJsr223Context( + ScriptConfigurationRefinementContext(context.script, context.compilationConfiguration, context.collectedData) + ) + } } ide { acceptedLocations(ScriptAcceptedLocation.Everywhere) @@ -61,11 +66,7 @@ class MainKtsConfigurator : RefineScriptCompilationConfigurationHandler { private val resolver = FilesAndIvyResolver() override operator fun invoke(context: ScriptConfigurationRefinementContext): ResultWithDiagnostics = - processAnnotations(context).onSuccess { updatedConfiguration -> - configureProvidedPropertiesFromJsr223Context( - ScriptConfigurationRefinementContext(context.script, updatedConfiguration, context.collectedData) - ) - } + processAnnotations(context) fun processAnnotations(context: ScriptConfigurationRefinementContext): ResultWithDiagnostics { val diagnostics = arrayListOf()