JS: don't mark access to captured var as pure
See KT-19108
This commit is contained in:
@@ -4310,6 +4310,12 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("capturedVarAsArgument.kt")
|
||||||
|
public void testCapturedVarAsArgument() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/inlineEvaluationOrder/capturedVarAsArgument.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("conditional.kt")
|
@TestMetadata("conditional.kt")
|
||||||
public void testConditional() throws Exception {
|
public void testConditional() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/inlineEvaluationOrder/conditional.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/inlineEvaluationOrder/conditional.kt");
|
||||||
|
|||||||
@@ -176,7 +176,9 @@ public final class Namer {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static JsNameRef getCapturedVarAccessor(@NotNull JsExpression ref) {
|
public static JsNameRef getCapturedVarAccessor(@NotNull JsExpression ref) {
|
||||||
return pureFqn(CAPTURED_VAR_FIELD, ref);
|
JsNameRef result = new JsNameRef(CAPTURED_VAR_FIELD, ref);
|
||||||
|
MetadataProperties.setSideEffects(result, SideEffectKind.DEPENDS_ON_STATE);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// EXPECTED_REACHABLE_NODES: 996
|
||||||
|
var log = ""
|
||||||
|
|
||||||
|
inline fun foo(x: Int, action: (Int) -> Unit) = action(x)
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
var x = 23
|
||||||
|
foo(x) {
|
||||||
|
log += "$it;"
|
||||||
|
x++
|
||||||
|
log += "$it;"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (log != "23;23;") return "fail1: $log"
|
||||||
|
if (x != 24) return "fail2: $x"
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user