Skip to content

Commit fa310d4

Browse files
committed
🐛 Fix bug when variable assigment doesn't available in caller scope
1 parent 7bf96ec commit fa310d4

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88

99

1010
group = "com.uriyyo.evaluate_async_code"
11-
version = "1.1"
11+
version = "1.2"
1212

1313
repositories {
1414
mavenCentral()

src/main/java/com/uriyyo/evaluate_async_code/Utils.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -184,22 +184,22 @@ val String.isAsyncCode: Boolean
184184

185185
fun String.toAsyncCode(): Pair<String, String> {
186186
val lines = this.prependIndent(" ").lines().toMutableList()
187-
val expression = if (lines.size == 1) " return ${lines[0].trimStart()}" else lines.joinToString("\n")
188-
189187
val resultVar = "__async_result_var_${Random.nextInt().absoluteValue}__"
190188

189+
lines[lines.lastIndex] = " $resultVar = ${lines[lines.lastIndex]}"
190+
val expression = lines.joinToString("\n")
191+
191192
return """
192193
$NEST_ASYNCIO_SOUCE_CODE
193194
194195
async def __async_evaluate_expression__():
195196
$expression
197+
return locals()
196198
197199
from asyncio import run as __async_run_coro__
198-
$resultVar = __async_run_coro__(__async_evaluate_expression__())
200+
locals().update(__async_run_coro__(__async_evaluate_expression__()))
199201
200-
del __async_run_coro__
201-
del __async_evaluate_expression__
202-
del __patch_asyncio__
202+
del __async_run_coro__, __async_evaluate_expression__, __patch_asyncio__
203203
""" to resultVar
204204
}
205205

src/main/resources/META-INF/plugin.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<idea-plugin>
22
<id>com.uriyyo.evaluate_async_code</id>
33
<name>Evaluate async code</name>
4-
<version>1.1</version>
4+
<version>1.2</version>
55
<vendor email="[email protected]">Yurii Karabas</vendor>
66

77
<description>
88
Finally, you can use await in evaluate expression
99
</description>
1010

11-
<change-notes>Fix bug when evaluate expression failed because of AttributeError</change-notes>
11+
<change-notes>Fix bug when variable assigment doesn't available in caller scope</change-notes>
1212

1313
<idea-version since-build="192"/>
1414
<depends>com.intellij.modules.lang</depends>

0 commit comments

Comments
 (0)