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);
|
||||
}
|
||||
|
||||
@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")
|
||||
public void testConditional() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/inlineEvaluationOrder/conditional.kt");
|
||||
|
||||
@@ -176,7 +176,9 @@ public final class Namer {
|
||||
|
||||
@NotNull
|
||||
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
|
||||
|
||||
@@ -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