From 529297a3e64e41d9aac02f7bbf024e1a09b50453 Mon Sep 17 00:00:00 2001 From: CATISNOTSODIUM Date: Fri, 5 Sep 2025 15:32:41 +0800 Subject: [PATCH 1/5] fix: wrong explanation for logical AND --- .../__snapshots__/tracer_full.ts.snap | 220 +++++++++--------- src/tracer/__tests__/tracer_debug.ts | 3 +- src/tracer/generator.ts | 2 +- 3 files changed, 113 insertions(+), 112 deletions(-) diff --git a/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap b/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap index c9f65cdce..a17020a15 100644 --- a/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap +++ b/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap @@ -4937,10 +4937,10 @@ exports[`Expressions: Binary operators And-shortcut-false test case 1`] = ` [noMarker] Start of evaluation if (false && 1 + 2 === 1 + 2) { 1;} else { 2;} -[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator +[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation if (false) { 1;} else { 2;} -[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator +[afterMarker] AND operation evaluated, left of operator is false, stop evaluation if (false) { 1;} else { 2;} [beforeMarker] If statement evaluated, condition false, proceed to else block @@ -4970,10 +4970,10 @@ exports[`Expressions: Binary operators And-shortcut-true test case 1`] = ` [noMarker] Start of evaluation if (true && 1 + 2 === 2 + 3) { 1;} else { 2;} -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator if (1 + 2 === 2 + 3) { 1;} else { 2;} -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator if (1 + 2 === 2 + 3) { 1;} else { 2;} [beforeMarker] Binary expression 1 + 2 evaluated @@ -6482,10 +6482,10 @@ true && equal(head([1, [3, null]]), head([1, [3, null]])) && equal(tail([1, [3, [afterMarker] is_pair runs true && equal(head([1, [3, null]]), head([1, [3, null]])) && equal(tail([1, [3, null]]), tail([1, [3, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([1, [3, null]]), head([1, [3, null]])) && equal(tail([1, [3, null]]), tail([1, [3, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([1, [3, null]]), head([1, [3, null]])) && equal(tail([1, [3, null]]), tail([1, [3, null]])); [beforeMarker] head runs @@ -6554,10 +6554,10 @@ true && 1 === 1 && equal(tail([1, [3, null]]), tail([1, [3, null]])); [afterMarker] is_number runs true && 1 === 1 && equal(tail([1, [3, null]]), tail([1, [3, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 1 === 1 && equal(tail([1, [3, null]]), tail([1, [3, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 1 === 1 && equal(tail([1, [3, null]]), tail([1, [3, null]])); [beforeMarker] Binary expression 1 === 1 evaluated @@ -6566,10 +6566,10 @@ true && equal(tail([1, [3, null]]), tail([1, [3, null]])); [afterMarker] Binary expression 1 === 1 evaluated true && equal(tail([1, [3, null]]), tail([1, [3, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([1, [3, null]]), tail([1, [3, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([1, [3, null]]), tail([1, [3, null]])); [beforeMarker] tail runs @@ -6614,10 +6614,10 @@ true && equal(head([3, null]), head([3, null])) && equal(tail([3, null]), tail([ [afterMarker] is_pair runs true && equal(head([3, null]), head([3, null])) && equal(tail([3, null]), tail([3, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([3, null]), head([3, null])) && equal(tail([3, null]), tail([3, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([3, null]), head([3, null])) && equal(tail([3, null]), tail([3, null])); [beforeMarker] head runs @@ -6686,10 +6686,10 @@ true && 3 === 3 && equal(tail([3, null]), tail([3, null])); [afterMarker] is_number runs true && 3 === 3 && equal(tail([3, null]), tail([3, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 3 === 3 && equal(tail([3, null]), tail([3, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 3 === 3 && equal(tail([3, null]), tail([3, null])); [beforeMarker] Binary expression 3 === 3 evaluated @@ -6698,10 +6698,10 @@ true && equal(tail([3, null]), tail([3, null])); [afterMarker] Binary expression 3 === 3 evaluated true && equal(tail([3, null]), tail([3, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([3, null]), tail([3, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([3, null]), tail([3, null])); [beforeMarker] tail runs @@ -7451,10 +7451,10 @@ true && equal(head([2, [3, [3, [4, [4, [5, null]]]]]]), head([2, [3, [3, [4, [4, [afterMarker] is_pair runs true && equal(head([2, [3, [3, [4, [4, [5, null]]]]]]), head([2, [3, [3, [4, [4, [5, null]]]]]])) && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, [3, [3, [4, [4, [5, null]]]]]]), head([2, [3, [3, [4, [4, [5, null]]]]]])) && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, [3, [3, [4, [4, [5, null]]]]]]), head([2, [3, [3, [4, [4, [5, null]]]]]])) && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); [beforeMarker] head runs @@ -7523,10 +7523,10 @@ true && 2 === 2 && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [afterMarker] is_number runs true && 2 === 2 && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); [beforeMarker] Binary expression 2 === 2 evaluated @@ -7535,10 +7535,10 @@ true && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [afterMarker] Binary expression 2 === 2 evaluated true && equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, [3, [3, [4, [4, [5, null]]]]]]), tail([2, [3, [3, [4, [4, [5, null]]]]]])); [beforeMarker] tail runs @@ -7583,10 +7583,10 @@ true && equal(head([3, [3, [4, [4, [5, null]]]]]), head([3, [3, [4, [4, [5, null [afterMarker] is_pair runs true && equal(head([3, [3, [4, [4, [5, null]]]]]), head([3, [3, [4, [4, [5, null]]]]])) && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([3, [3, [4, [4, [5, null]]]]]), head([3, [3, [4, [4, [5, null]]]]])) && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([3, [3, [4, [4, [5, null]]]]]), head([3, [3, [4, [4, [5, null]]]]])) && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); [beforeMarker] head runs @@ -7655,10 +7655,10 @@ true && 3 === 3 && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [ [afterMarker] is_number runs true && 3 === 3 && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 3 === 3 && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 3 === 3 && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); [beforeMarker] Binary expression 3 === 3 evaluated @@ -7667,10 +7667,10 @@ true && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null [afterMarker] Binary expression 3 === 3 evaluated true && equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([3, [3, [4, [4, [5, null]]]]]), tail([3, [3, [4, [4, [5, null]]]]])); [beforeMarker] tail runs @@ -7715,10 +7715,10 @@ true && equal(head([3, [4, [4, [5, null]]]]), head([3, [4, [4, [5, null]]]])) && [afterMarker] is_pair runs true && equal(head([3, [4, [4, [5, null]]]]), head([3, [4, [4, [5, null]]]])) && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([3, [4, [4, [5, null]]]]), head([3, [4, [4, [5, null]]]])) && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([3, [4, [4, [5, null]]]]), head([3, [4, [4, [5, null]]]])) && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); [beforeMarker] head runs @@ -7787,10 +7787,10 @@ true && 3 === 3 && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, nu [afterMarker] is_number runs true && 3 === 3 && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 3 === 3 && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 3 === 3 && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); [beforeMarker] Binary expression 3 === 3 evaluated @@ -7799,10 +7799,10 @@ true && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); [afterMarker] Binary expression 3 === 3 evaluated true && equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([3, [4, [4, [5, null]]]]), tail([3, [4, [4, [5, null]]]])); [beforeMarker] tail runs @@ -7847,10 +7847,10 @@ true && equal(head([4, [4, [5, null]]]), head([4, [4, [5, null]]])) && equal(tai [afterMarker] is_pair runs true && equal(head([4, [4, [5, null]]]), head([4, [4, [5, null]]])) && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([4, [4, [5, null]]]), head([4, [4, [5, null]]])) && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([4, [4, [5, null]]]), head([4, [4, [5, null]]])) && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); [beforeMarker] head runs @@ -7919,10 +7919,10 @@ true && 4 === 4 && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); [afterMarker] is_number runs true && 4 === 4 && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 4 === 4 && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 4 === 4 && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); [beforeMarker] Binary expression 4 === 4 evaluated @@ -7931,10 +7931,10 @@ true && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); [afterMarker] Binary expression 4 === 4 evaluated true && equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([4, [4, [5, null]]]), tail([4, [4, [5, null]]])); [beforeMarker] tail runs @@ -7979,10 +7979,10 @@ true && equal(head([4, [5, null]]), head([4, [5, null]])) && equal(tail([4, [5, [afterMarker] is_pair runs true && equal(head([4, [5, null]]), head([4, [5, null]])) && equal(tail([4, [5, null]]), tail([4, [5, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([4, [5, null]]), head([4, [5, null]])) && equal(tail([4, [5, null]]), tail([4, [5, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([4, [5, null]]), head([4, [5, null]])) && equal(tail([4, [5, null]]), tail([4, [5, null]])); [beforeMarker] head runs @@ -8051,10 +8051,10 @@ true && 4 === 4 && equal(tail([4, [5, null]]), tail([4, [5, null]])); [afterMarker] is_number runs true && 4 === 4 && equal(tail([4, [5, null]]), tail([4, [5, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 4 === 4 && equal(tail([4, [5, null]]), tail([4, [5, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 4 === 4 && equal(tail([4, [5, null]]), tail([4, [5, null]])); [beforeMarker] Binary expression 4 === 4 evaluated @@ -8063,10 +8063,10 @@ true && equal(tail([4, [5, null]]), tail([4, [5, null]])); [afterMarker] Binary expression 4 === 4 evaluated true && equal(tail([4, [5, null]]), tail([4, [5, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([4, [5, null]]), tail([4, [5, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([4, [5, null]]), tail([4, [5, null]])); [beforeMarker] tail runs @@ -8111,10 +8111,10 @@ true && equal(head([5, null]), head([5, null])) && equal(tail([5, null]), tail([ [afterMarker] is_pair runs true && equal(head([5, null]), head([5, null])) && equal(tail([5, null]), tail([5, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([5, null]), head([5, null])) && equal(tail([5, null]), tail([5, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([5, null]), head([5, null])) && equal(tail([5, null]), tail([5, null])); [beforeMarker] head runs @@ -8183,10 +8183,10 @@ true && 5 === 5 && equal(tail([5, null]), tail([5, null])); [afterMarker] is_number runs true && 5 === 5 && equal(tail([5, null]), tail([5, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 5 === 5 && equal(tail([5, null]), tail([5, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 5 === 5 && equal(tail([5, null]), tail([5, null])); [beforeMarker] Binary expression 5 === 5 evaluated @@ -8195,10 +8195,10 @@ true && equal(tail([5, null]), tail([5, null])); [afterMarker] Binary expression 5 === 5 evaluated true && equal(tail([5, null]), tail([5, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([5, null]), tail([5, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([5, null]), tail([5, null])); [beforeMarker] tail runs @@ -8681,10 +8681,10 @@ true && equal(head([2, [4, [6, null]]]), head([2, [4, [6, null]]])) && equal(tai [afterMarker] is_pair runs true && equal(head([2, [4, [6, null]]]), head([2, [4, [6, null]]])) && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, [4, [6, null]]]), head([2, [4, [6, null]]])) && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, [4, [6, null]]]), head([2, [4, [6, null]]])) && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); [beforeMarker] head runs @@ -8753,10 +8753,10 @@ true && 2 === 2 && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); [afterMarker] is_number runs true && 2 === 2 && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); [beforeMarker] Binary expression 2 === 2 evaluated @@ -8765,10 +8765,10 @@ true && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); [afterMarker] Binary expression 2 === 2 evaluated true && equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, [4, [6, null]]]), tail([2, [4, [6, null]]])); [beforeMarker] tail runs @@ -8813,10 +8813,10 @@ true && equal(head([4, [6, null]]), head([4, [6, null]])) && equal(tail([4, [6, [afterMarker] is_pair runs true && equal(head([4, [6, null]]), head([4, [6, null]])) && equal(tail([4, [6, null]]), tail([4, [6, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([4, [6, null]]), head([4, [6, null]])) && equal(tail([4, [6, null]]), tail([4, [6, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([4, [6, null]]), head([4, [6, null]])) && equal(tail([4, [6, null]]), tail([4, [6, null]])); [beforeMarker] head runs @@ -8885,10 +8885,10 @@ true && 4 === 4 && equal(tail([4, [6, null]]), tail([4, [6, null]])); [afterMarker] is_number runs true && 4 === 4 && equal(tail([4, [6, null]]), tail([4, [6, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 4 === 4 && equal(tail([4, [6, null]]), tail([4, [6, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 4 === 4 && equal(tail([4, [6, null]]), tail([4, [6, null]])); [beforeMarker] Binary expression 4 === 4 evaluated @@ -8897,10 +8897,10 @@ true && equal(tail([4, [6, null]]), tail([4, [6, null]])); [afterMarker] Binary expression 4 === 4 evaluated true && equal(tail([4, [6, null]]), tail([4, [6, null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([4, [6, null]]), tail([4, [6, null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([4, [6, null]]), tail([4, [6, null]])); [beforeMarker] tail runs @@ -8945,10 +8945,10 @@ true && equal(head([6, null]), head([6, null])) && equal(tail([6, null]), tail([ [afterMarker] is_pair runs true && equal(head([6, null]), head([6, null])) && equal(tail([6, null]), tail([6, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([6, null]), head([6, null])) && equal(tail([6, null]), tail([6, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([6, null]), head([6, null])) && equal(tail([6, null]), tail([6, null])); [beforeMarker] head runs @@ -9017,10 +9017,10 @@ true && 6 === 6 && equal(tail([6, null]), tail([6, null])); [afterMarker] is_number runs true && 6 === 6 && equal(tail([6, null]), tail([6, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 6 === 6 && equal(tail([6, null]), tail([6, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 6 === 6 && equal(tail([6, null]), tail([6, null])); [beforeMarker] Binary expression 6 === 6 evaluated @@ -9029,10 +9029,10 @@ true && equal(tail([6, null]), tail([6, null])); [afterMarker] Binary expression 6 === 6 evaluated true && equal(tail([6, null]), tail([6, null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([6, null]), tail([6, null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([6, null]), tail([6, null])); [beforeMarker] tail runs @@ -9944,10 +9944,10 @@ true && equal(head([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), he [afterMarker] is_pair runs true && equal(head([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), head([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])) && equal(tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), head([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])) && equal(tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), head([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])) && equal(tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])); [beforeMarker] head runs @@ -10004,10 +10004,10 @@ true && equal(tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), ta [afterMarker] is_null runs true && equal(tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]]), tail([null, [[2, null], [[1, null], [[1, [2, null]], null]]]])); [beforeMarker] tail runs @@ -10052,10 +10052,10 @@ true && equal(head([[2, null], [[1, null], [[1, [2, null]], null]]]), head([[2, [afterMarker] is_pair runs true && equal(head([[2, null], [[1, null], [[1, [2, null]], null]]]), head([[2, null], [[1, null], [[1, [2, null]], null]]])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([[2, null], [[1, null], [[1, [2, null]], null]]]), head([[2, null], [[1, null], [[1, [2, null]], null]]])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([[2, null], [[1, null], [[1, [2, null]], null]]]), head([[2, null], [[1, null], [[1, [2, null]], null]]])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); [beforeMarker] head runs @@ -10100,10 +10100,10 @@ true && equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([ [afterMarker] is_pair runs true && equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); [beforeMarker] head runs @@ -10172,10 +10172,10 @@ true && 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, nu [afterMarker] is_number runs true && 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); [beforeMarker] Binary expression 2 === 2 evaluated @@ -10184,10 +10184,10 @@ true && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, n [afterMarker] Binary expression 2 === 2 evaluated true && equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, null]), tail([2, null])) && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); [beforeMarker] tail runs @@ -10244,10 +10244,10 @@ true && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, [afterMarker] is_null runs true && equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([[2, null], [[1, null], [[1, [2, null]], null]]]), tail([[2, null], [[1, null], [[1, [2, null]], null]]])); [beforeMarker] tail runs @@ -10292,10 +10292,10 @@ true && equal(head([[1, null], [[1, [2, null]], null]]), head([[1, null], [[1, [ [afterMarker] is_pair runs true && equal(head([[1, null], [[1, [2, null]], null]]), head([[1, null], [[1, [2, null]], null]])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([[1, null], [[1, [2, null]], null]]), head([[1, null], [[1, [2, null]], null]])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([[1, null], [[1, [2, null]], null]]), head([[1, null], [[1, [2, null]], null]])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); [beforeMarker] head runs @@ -10340,10 +10340,10 @@ true && equal(head([1, null]), head([1, null])) && equal(tail([1, null]), tail([ [afterMarker] is_pair runs true && equal(head([1, null]), head([1, null])) && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([1, null]), head([1, null])) && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([1, null]), head([1, null])) && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); [beforeMarker] head runs @@ -10412,10 +10412,10 @@ true && 1 === 1 && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, nu [afterMarker] is_number runs true && 1 === 1 && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 1 === 1 && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 1 === 1 && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); [beforeMarker] Binary expression 1 === 1 evaluated @@ -10424,10 +10424,10 @@ true && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [ [afterMarker] Binary expression 1 === 1 evaluated true && equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([1, null]), tail([1, null])) && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); [beforeMarker] tail runs @@ -10484,10 +10484,10 @@ true && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [ [afterMarker] is_null runs true && equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([[1, null], [[1, [2, null]], null]]), tail([[1, null], [[1, [2, null]], null]])); [beforeMarker] tail runs @@ -10532,10 +10532,10 @@ true && equal(head([[1, [2, null]], null]), head([[1, [2, null]], null])) && equ [afterMarker] is_pair runs true && equal(head([[1, [2, null]], null]), head([[1, [2, null]], null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([[1, [2, null]], null]), head([[1, [2, null]], null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([[1, [2, null]], null]), head([[1, [2, null]], null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] head runs @@ -10580,10 +10580,10 @@ true && equal(head([1, [2, null]]), head([1, [2, null]])) && equal(tail([1, [2, [afterMarker] is_pair runs true && equal(head([1, [2, null]]), head([1, [2, null]])) && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([1, [2, null]]), head([1, [2, null]])) && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([1, [2, null]]), head([1, [2, null]])) && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] head runs @@ -10652,10 +10652,10 @@ true && 1 === 1 && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(ta [afterMarker] is_number runs true && 1 === 1 && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 1 === 1 && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 1 === 1 && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] Binary expression 1 === 1 evaluated @@ -10664,10 +10664,10 @@ true && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, [afterMarker] Binary expression 1 === 1 evaluated true && equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([1, [2, null]]), tail([1, [2, null]])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] tail runs @@ -10712,10 +10712,10 @@ true && equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([ [afterMarker] is_pair runs true && equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(head([2, null]), head([2, null])) && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] head runs @@ -10784,10 +10784,10 @@ true && 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2 [afterMarker] is_number runs true && 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator 2 === 2 && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] Binary expression 2 === 2 evaluated @@ -10796,10 +10796,10 @@ true && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], n [afterMarker] Binary expression 2 === 2 evaluated true && equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([2, null]), tail([2, null])) && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] tail runs @@ -10856,10 +10856,10 @@ true && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [afterMarker] is_null runs true && equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[beforeMarker] AND operation evaluated, left of operator is false, stop evaluation +[beforeMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); -[afterMarker] AND operation evaluated, left of operator is false, stop evaluation +[afterMarker] AND operation evaluated, left of operator is true, continue evaluating right of operator equal(tail([[1, [2, null]], null]), tail([[1, [2, null]], null])); [beforeMarker] tail runs diff --git a/src/tracer/__tests__/tracer_debug.ts b/src/tracer/__tests__/tracer_debug.ts index 1d1e7227f..5a46eda75 100644 --- a/src/tracer/__tests__/tracer_debug.ts +++ b/src/tracer/__tests__/tracer_debug.ts @@ -95,7 +95,8 @@ test('function calling', () => { test('general', () => { const code = ` - math_sqrt("TEST"); + false && true; + true || false; ` const program = parse(code, { ecmaVersion: 10, locations: true })! const steps = getSteps(convert(program), createContext(2), { stepLimit: 200 }) diff --git a/src/tracer/generator.ts b/src/tracer/generator.ts index fa40f41ff..b196708da 100644 --- a/src/tracer/generator.ts +++ b/src/tracer/generator.ts @@ -94,7 +94,7 @@ export function explain(redex: StepperBaseNode): string { }, LogicalExpression: (node: StepperLogicalExpression) => { if (node.operator == '&&') { - return (node.left as StepperLiteral).value === false + return (node.left as StepperLiteral).value === true ? 'AND operation evaluated, left of operator is true, continue evaluating right of operator' : 'AND operation evaluated, left of operator is false, stop evaluation' } else if (node.operator == '||') { From 54b7fe9166785f2253959a9fcbe5de31c6280e13 Mon Sep 17 00:00:00 2001 From: CATISNOTSODIUM Date: Fri, 5 Sep 2025 15:39:48 +0800 Subject: [PATCH 2/5] fix: message for exceeding limit --- src/tracer/__tests__/__snapshots__/tracer_full.ts.snap | 3 --- src/tracer/__tests__/tracer_debug.ts | 4 ++-- src/tracer/steppers.ts | 1 + 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap b/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap index a17020a15..b4bdbc507 100644 --- a/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap +++ b/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap @@ -17103,9 +17103,6 @@ function f() { return f();}f(); (() => { return f();})(); [noMarker] Maximum number of steps exceeded - -(() => { return f();})(); -[noMarker] Evaluation complete " `; diff --git a/src/tracer/__tests__/tracer_debug.ts b/src/tracer/__tests__/tracer_debug.ts index 5a46eda75..c3218edac 100644 --- a/src/tracer/__tests__/tracer_debug.ts +++ b/src/tracer/__tests__/tracer_debug.ts @@ -95,8 +95,8 @@ test('function calling', () => { test('general', () => { const code = ` - false && true; - true || false; + const f = (n) => (n <= 0 ? 0 : f(n - 1)); + f(10000); ` const program = parse(code, { ecmaVersion: 10, locations: true })! const steps = getSteps(convert(program), createContext(2), { stepLimit: 200 }) diff --git a/src/tracer/steppers.ts b/src/tracer/steppers.ts index 42a7e449c..72e5ac55d 100644 --- a/src/tracer/steppers.ts +++ b/src/tracer/steppers.ts @@ -125,6 +125,7 @@ export function getSteps( } ] }) + return steps; } // If the program does not return anything, return undefined if (result.type === 'Program' && (result as StepperProgram).body.length === 0) { From d3a78ce43f980d1c6c41306320fd4d4d411dd2b3 Mon Sep 17 00:00:00 2001 From: CATISNOTSODIUM Date: Fri, 5 Sep 2025 15:53:34 +0800 Subject: [PATCH 3/5] fix: double count the number of steps --- .../__snapshots__/tracer_full.ts.snap | 3000 ----------------- src/tracer/steppers.ts | 17 +- 2 files changed, 10 insertions(+), 3007 deletions(-) diff --git a/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap b/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap index b4bdbc507..0c4ff8392 100644 --- a/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap +++ b/src/tracer/__tests__/__snapshots__/tracer_full.ts.snap @@ -14101,3006 +14101,6 @@ function f() { return f();}f(); (() => { return f();})(); [afterMarker] () => {...} runs -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - -(() => { return f();})(); -[beforeMarker] () => {...} runs - -(() => { return f();})(); -[afterMarker] () => {...} runs - (() => { return f();})(); [noMarker] Maximum number of steps exceeded " diff --git a/src/tracer/steppers.ts b/src/tracer/steppers.ts index 72e5ac55d..f5e040ebc 100644 --- a/src/tracer/steppers.ts +++ b/src/tracer/steppers.ts @@ -20,13 +20,8 @@ export function getSteps( const limit = stepLimit === undefined ? 1000 : stepLimit % 2 === 0 ? stepLimit : stepLimit + 1 let hasError = false - let numSteps = 0 + let numSteps = 1 function evaluate(node: StepperBaseNode): StepperBaseNode { - numSteps += 1 - if (numSteps >= limit) { - return node - } - try { const isOneStepPossible = node.isOneStepPossible() if (isOneStepPossible) { @@ -41,6 +36,10 @@ export function getSteps( redexType: 'beforeMarker', explanation: explanations[index] })) + numSteps += 1 + if (numSteps >= limit) { + return node + } steps.push({ ast: oldNode, markers: beforeMarkers @@ -58,6 +57,10 @@ export function getSteps( explanation: explanations[0] // use explanation based on preRedex } ] + numSteps += 1 + if (numSteps >= limit) { + return node + } steps.push({ ast: newNode, markers: afterMarkers @@ -125,7 +128,7 @@ export function getSteps( } ] }) - return steps; + return steps; } // If the program does not return anything, return undefined if (result.type === 'Program' && (result as StepperProgram).body.length === 0) { From 046199276c43dc75197f25b75a58e5f7a75b353f Mon Sep 17 00:00:00 2001 From: CATISNOTSODIUM Date: Sat, 6 Sep 2025 10:53:33 +0800 Subject: [PATCH 4/5] chore: run linter --- src/runner/fullJSRunner.ts | 2 +- src/tracer/steppers.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/runner/fullJSRunner.ts b/src/runner/fullJSRunner.ts index 8bc2ab034..31f9e55d4 100644 --- a/src/runner/fullJSRunner.ts +++ b/src/runner/fullJSRunner.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ + import { generate } from 'astring' import type es from 'estree' import { RawSourceMap } from 'source-map' diff --git a/src/tracer/steppers.ts b/src/tracer/steppers.ts index f5e040ebc..98c5106db 100644 --- a/src/tracer/steppers.ts +++ b/src/tracer/steppers.ts @@ -128,7 +128,7 @@ export function getSteps( } ] }) - return steps; + return steps } // If the program does not return anything, return undefined if (result.type === 'Program' && (result as StepperProgram).body.length === 0) { From eab9973503e13b7c80daf91d732c80b470ca0a8a Mon Sep 17 00:00:00 2001 From: CATISNOTSODIUM Date: Sat, 6 Sep 2025 10:59:50 +0800 Subject: [PATCH 5/5] chore: run linter --- src/runner/fullJSRunner.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/runner/fullJSRunner.ts b/src/runner/fullJSRunner.ts index 31f9e55d4..333076480 100644 --- a/src/runner/fullJSRunner.ts +++ b/src/runner/fullJSRunner.ts @@ -1,4 +1,3 @@ - import { generate } from 'astring' import type es from 'estree' import { RawSourceMap } from 'source-map'