| Checking pause locations when stepping in, out, and over if/else control flow. |
| |
| |
| == Running test suite: Debugger.stepping.control-flow |
| -- Running test case: Debugger.stepping.IfSingleStatement |
| EXPRESSION: setTimeout(entryIfSingleStatement) |
| STEPS: over, over, over, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfSingleStatement:16:5 |
| 12 |
| 13 |
| 14 function entryIfSingleStatement() { |
| -> 15 |debugger; |
| 16 if (truthy) |
| 17 a(); |
| 18 if (falsey) |
| |
| ACTION: step-over |
| PAUSE AT entryIfSingleStatement:17:9 |
| 13 |
| 14 function entryIfSingleStatement() { |
| 15 debugger; |
| -> 16 if (|truthy) |
| 17 a(); |
| 18 if (falsey) |
| 19 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfSingleStatement:18:9 |
| 14 function entryIfSingleStatement() { |
| 15 debugger; |
| 16 if (truthy) |
| -> 17 |a(); |
| 18 if (falsey) |
| 19 a(); |
| 20 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfSingleStatement:19:9 |
| 15 debugger; |
| 16 if (truthy) |
| 17 a(); |
| -> 18 if (|falsey) |
| 19 a(); |
| 20 } |
| 21 |
| |
| ACTION: step-over |
| PAUSE AT entryIfSingleStatement:21:2 |
| 17 a(); |
| 18 if (falsey) |
| 19 a(); |
| -> 20 }| |
| 21 |
| 22 function entryIfMultiStatement() { |
| 23 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfMultiStatement |
| EXPRESSION: setTimeout(entryIfMultiStatement) |
| STEPS: over, over, over, over, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfMultiStatement:24:5 |
| 20 } |
| 21 |
| 22 function entryIfMultiStatement() { |
| -> 23 |debugger; |
| 24 if (truthy) { |
| 25 a(); |
| 26 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfMultiStatement:25:9 |
| 21 |
| 22 function entryIfMultiStatement() { |
| 23 debugger; |
| -> 24 if (|truthy) { |
| 25 a(); |
| 26 a(); |
| 27 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfMultiStatement:26:9 |
| 22 function entryIfMultiStatement() { |
| 23 debugger; |
| 24 if (truthy) { |
| -> 25 |a(); |
| 26 a(); |
| 27 } |
| 28 if (falsey) { |
| |
| ACTION: step-over |
| PAUSE AT entryIfMultiStatement:27:9 |
| 23 debugger; |
| 24 if (truthy) { |
| 25 a(); |
| -> 26 |a(); |
| 27 } |
| 28 if (falsey) { |
| 29 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfMultiStatement:29:9 |
| 25 a(); |
| 26 a(); |
| 27 } |
| -> 28 if (|falsey) { |
| 29 a(); |
| 30 a(); |
| 31 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfMultiStatement:33:2 |
| 29 a(); |
| 30 a(); |
| 31 } |
| -> 32 }| |
| 33 |
| 34 function entryIfElse() { |
| 35 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfElse1 |
| EXPRESSION: setTimeout(entryIfElse) |
| STEPS: over, over, over, over, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfElse:36:5 |
| 32 } |
| 33 |
| 34 function entryIfElse() { |
| -> 35 |debugger; |
| 36 if (truthy) |
| 37 a(); |
| 38 else |
| |
| ACTION: step-over |
| PAUSE AT entryIfElse:37:9 |
| 33 |
| 34 function entryIfElse() { |
| 35 debugger; |
| -> 36 if (|truthy) |
| 37 a(); |
| 38 else |
| 39 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfElse:38:9 |
| 34 function entryIfElse() { |
| 35 debugger; |
| 36 if (truthy) |
| -> 37 |a(); |
| 38 else |
| 39 a(); |
| 40 if (falsey) |
| |
| ACTION: step-over |
| PAUSE AT entryIfElse:41:9 |
| 37 a(); |
| 38 else |
| 39 a(); |
| -> 40 if (|falsey) |
| 41 a(); |
| 42 else |
| 43 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfElse:44:9 |
| 40 if (falsey) |
| 41 a(); |
| 42 else |
| -> 43 |a(); |
| 44 } |
| 45 |
| 46 function entryIfElseChain() { |
| |
| ACTION: step-over |
| PAUSE AT entryIfElse:45:2 |
| 41 a(); |
| 42 else |
| 43 a(); |
| -> 44 }| |
| 45 |
| 46 function entryIfElseChain() { |
| 47 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfElse2 |
| EXPRESSION: setTimeout(entryIfElseChain) |
| STEPS: over, over, over, over, over, over, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfElseChain:48:5 |
| 44 } |
| 45 |
| 46 function entryIfElseChain() { |
| -> 47 |debugger; |
| 48 if (falsey) |
| 49 a(); |
| 50 else if (truthy) |
| |
| ACTION: step-over |
| PAUSE AT entryIfElseChain:49:9 |
| 45 |
| 46 function entryIfElseChain() { |
| 47 debugger; |
| -> 48 if (|falsey) |
| 49 a(); |
| 50 else if (truthy) |
| 51 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfElseChain:51:14 |
| 47 debugger; |
| 48 if (falsey) |
| 49 a(); |
| -> 50 else if (|truthy) |
| 51 a(); |
| 52 else |
| 53 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfElseChain:52:9 |
| 48 if (falsey) |
| 49 a(); |
| 50 else if (truthy) |
| -> 51 |a(); |
| 52 else |
| 53 a(); |
| 54 |
| |
| ACTION: step-over |
| PAUSE AT entryIfElseChain:56:9 |
| 52 else |
| 53 a(); |
| 54 |
| -> 55 if (|falsey) |
| 56 a(); |
| 57 else if (falsey) |
| 58 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfElseChain:58:14 |
| 54 |
| 55 if (falsey) |
| 56 a(); |
| -> 57 else if (|falsey) |
| 58 a(); |
| 59 else |
| 60 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfElseChain:61:9 |
| 57 else if (falsey) |
| 58 a(); |
| 59 else |
| -> 60 |a(); |
| 61 } |
| 62 |
| 63 function entryIfWithCall() { |
| |
| ACTION: step-over |
| PAUSE AT entryIfElseChain:62:2 |
| 58 a(); |
| 59 else |
| 60 a(); |
| -> 61 }| |
| 62 |
| 63 function entryIfWithCall() { |
| 64 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfWithCall1 |
| EXPRESSION: setTimeout(entryIfWithCall) |
| STEPS: over, over, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfWithCall:65:5 |
| 61 } |
| 62 |
| 63 function entryIfWithCall() { |
| -> 64 |debugger; |
| 65 if (a() && a()) |
| 66 a(); |
| 67 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithCall:66:9 |
| 62 |
| 63 function entryIfWithCall() { |
| 64 debugger; |
| -> 65 if (|a() && a()) |
| 66 a(); |
| 67 } |
| 68 |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithCall:67:9 |
| 63 function entryIfWithCall() { |
| 64 debugger; |
| 65 if (a() && a()) |
| -> 66 |a(); |
| 67 } |
| 68 |
| 69 function entryTernary() { |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithCall:68:2 |
| 64 debugger; |
| 65 if (a() && a()) |
| 66 a(); |
| -> 67 }| |
| 68 |
| 69 function entryTernary() { |
| 70 let t = () => truthy; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfWithCall2 |
| EXPRESSION: setTimeout(entryIfWithCall) |
| STEPS: over, in, out, in, out, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfWithCall:65:5 |
| 61 } |
| 62 |
| 63 function entryIfWithCall() { |
| -> 64 |debugger; |
| 65 if (a() && a()) |
| 66 a(); |
| 67 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithCall:66:9 |
| 62 |
| 63 function entryIfWithCall() { |
| 64 debugger; |
| -> 65 if (|a() && a()) |
| 66 a(); |
| 67 } |
| 68 |
| |
| ACTION: step-in |
| PAUSE AT a:11:16 |
| 7 var value = 1; |
| 8 var truthy = true; |
| 9 var falsey = false; |
| -> 10 function a() { |return value; } |
| 11 function b() { return value; } |
| 12 |
| 13 |
| |
| ACTION: step-out |
| PAUSE AT entryIfWithCall:66:16 |
| 62 |
| 63 function entryIfWithCall() { |
| 64 debugger; |
| -> 65 if (a() && |a()) |
| 66 a(); |
| 67 } |
| 68 |
| |
| ACTION: step-in |
| PAUSE AT a:11:16 |
| 7 var value = 1; |
| 8 var truthy = true; |
| 9 var falsey = false; |
| -> 10 function a() { |return value; } |
| 11 function b() { return value; } |
| 12 |
| 13 |
| |
| ACTION: step-out |
| PAUSE AT entryIfWithCall:67:9 |
| 63 function entryIfWithCall() { |
| 64 debugger; |
| 65 if (a() && a()) |
| -> 66 |a(); |
| 67 } |
| 68 |
| 69 function entryTernary() { |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithCall:68:2 |
| 64 debugger; |
| 65 if (a() && a()) |
| 66 a(); |
| -> 67 }| |
| 68 |
| 69 function entryTernary() { |
| 70 let t = () => truthy; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.TernaryStepOver |
| EXPRESSION: setTimeout(entryTernary) |
| STEPS: over, over, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryTernary:73:5 |
| 69 function entryTernary() { |
| 70 let t = () => truthy; |
| 71 let f = () => falsey; |
| -> 72 |debugger; |
| 73 let x = t() ? a() : b(); |
| 74 let y = f() ? a() : b(); |
| 75 } |
| |
| ACTION: step-over |
| PAUSE AT entryTernary:74:5 |
| 70 let t = () => truthy; |
| 71 let f = () => falsey; |
| 72 debugger; |
| -> 73 |let x = t() ? a() : b(); |
| 74 let y = f() ? a() : b(); |
| 75 } |
| 76 |
| |
| ACTION: step-over |
| PAUSE AT entryTernary:75:5 |
| 71 let f = () => falsey; |
| 72 debugger; |
| 73 let x = t() ? a() : b(); |
| -> 74 |let y = f() ? a() : b(); |
| 75 } |
| 76 |
| 77 function entryIfConstantBranch() { |
| |
| ACTION: step-over |
| PAUSE AT entryTernary:76:2 |
| 72 debugger; |
| 73 let x = t() ? a() : b(); |
| 74 let y = f() ? a() : b(); |
| -> 75 }| |
| 76 |
| 77 function entryIfConstantBranch() { |
| 78 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.TernaryStepIn |
| EXPRESSION: setTimeout(entryTernary) |
| STEPS: over, in, out, in, out, in, out, in, out, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryTernary:73:5 |
| 69 function entryTernary() { |
| 70 let t = () => truthy; |
| 71 let f = () => falsey; |
| -> 72 |debugger; |
| 73 let x = t() ? a() : b(); |
| 74 let y = f() ? a() : b(); |
| 75 } |
| |
| ACTION: step-over |
| PAUSE AT entryTernary:74:5 |
| 70 let t = () => truthy; |
| 71 let f = () => falsey; |
| 72 debugger; |
| -> 73 |let x = t() ? a() : b(); |
| 74 let y = f() ? a() : b(); |
| 75 } |
| 76 |
| |
| ACTION: step-in |
| PAUSE AT t:71:19 |
| 67 } |
| 68 |
| 69 function entryTernary() { |
| -> 70 let t = () => |truthy; |
| 71 let f = () => falsey; |
| 72 debugger; |
| 73 let x = t() ? a() : b(); |
| |
| ACTION: step-out |
| PAUSE AT entryTernary:74:19 |
| 70 let t = () => truthy; |
| 71 let f = () => falsey; |
| 72 debugger; |
| -> 73 let x = t() ? |a() : b(); |
| 74 let y = f() ? a() : b(); |
| 75 } |
| 76 |
| |
| ACTION: step-in |
| PAUSE AT a:11:16 |
| 7 var value = 1; |
| 8 var truthy = true; |
| 9 var falsey = false; |
| -> 10 function a() { |return value; } |
| 11 function b() { return value; } |
| 12 |
| 13 |
| |
| ACTION: step-out |
| PAUSE AT entryTernary:75:5 |
| 71 let f = () => falsey; |
| 72 debugger; |
| 73 let x = t() ? a() : b(); |
| -> 74 |let y = f() ? a() : b(); |
| 75 } |
| 76 |
| 77 function entryIfConstantBranch() { |
| |
| ACTION: step-in |
| PAUSE AT f:72:19 |
| 68 |
| 69 function entryTernary() { |
| 70 let t = () => truthy; |
| -> 71 let f = () => |falsey; |
| 72 debugger; |
| 73 let x = t() ? a() : b(); |
| 74 let y = f() ? a() : b(); |
| |
| ACTION: step-out |
| PAUSE AT entryTernary:75:25 |
| 71 let f = () => falsey; |
| 72 debugger; |
| 73 let x = t() ? a() : b(); |
| -> 74 let y = f() ? a() : |b(); |
| 75 } |
| 76 |
| 77 function entryIfConstantBranch() { |
| |
| ACTION: step-in |
| PAUSE AT b:12:16 |
| 8 var truthy = true; |
| 9 var falsey = false; |
| 10 function a() { return value; } |
| -> 11 function b() { |return value; } |
| 12 |
| 13 |
| 14 function entryIfSingleStatement() { |
| |
| ACTION: step-out |
| PAUSE AT entryTernary:76:2 |
| 72 debugger; |
| 73 let x = t() ? a() : b(); |
| 74 let y = f() ? a() : b(); |
| -> 75 }| |
| 76 |
| 77 function entryIfConstantBranch() { |
| 78 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.ConstantBranch |
| EXPRESSION: setTimeout(entryIfConstantBranch) |
| STEPS: over, over, over, over, over, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfConstantBranch:79:5 |
| 75 } |
| 76 |
| 77 function entryIfConstantBranch() { |
| -> 78 |debugger; |
| 79 if (true) |
| 80 a(); |
| 81 if (false) |
| |
| ACTION: step-over |
| PAUSE AT entryIfConstantBranch:80:9 |
| 76 |
| 77 function entryIfConstantBranch() { |
| 78 debugger; |
| -> 79 if (|true) |
| 80 a(); |
| 81 if (false) |
| 82 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfConstantBranch:81:9 |
| 77 function entryIfConstantBranch() { |
| 78 debugger; |
| 79 if (true) |
| -> 80 |a(); |
| 81 if (false) |
| 82 a(); |
| 83 if (0) |
| |
| ACTION: step-over |
| PAUSE AT entryIfConstantBranch:82:9 |
| 78 debugger; |
| 79 if (true) |
| 80 a(); |
| -> 81 if (|false) |
| 82 a(); |
| 83 if (0) |
| 84 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfConstantBranch:84:9 |
| 80 a(); |
| 81 if (false) |
| 82 a(); |
| -> 83 if (|0) |
| 84 a(); |
| 85 if (null) |
| 86 a(); |
| |
| ACTION: step-over |
| PAUSE AT entryIfConstantBranch:86:9 |
| 82 a(); |
| 83 if (0) |
| 84 a(); |
| -> 85 if (|null) |
| 86 a(); |
| 87 } |
| 88 |
| |
| ACTION: step-over |
| PAUSE AT entryIfConstantBranch:88:2 |
| 84 a(); |
| 85 if (null) |
| 86 a(); |
| -> 87 }| |
| 88 |
| 89 function entryIfWithLogicalOperation() { |
| 90 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfWithLogicalOperation |
| EXPRESSION: setTimeout(entryIfWithLogicalOperation) |
| STEPS: over, in, out, in, out, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfWithLogicalOperation:91:5 |
| 87 } |
| 88 |
| 89 function entryIfWithLogicalOperation() { |
| -> 90 |debugger; |
| 91 if (true && a() && a()) |
| 92 b(); |
| 93 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithLogicalOperation:92:9 |
| 88 |
| 89 function entryIfWithLogicalOperation() { |
| 90 debugger; |
| -> 91 if (|true && a() && a()) |
| 92 b(); |
| 93 } |
| 94 |
| |
| ACTION: step-in |
| PAUSE AT a:11:16 |
| 7 var value = 1; |
| 8 var truthy = true; |
| 9 var falsey = false; |
| -> 10 function a() { |return value; } |
| 11 function b() { return value; } |
| 12 |
| 13 |
| |
| ACTION: step-out |
| PAUSE AT entryIfWithLogicalOperation:92:24 |
| 88 |
| 89 function entryIfWithLogicalOperation() { |
| 90 debugger; |
| -> 91 if (true && a() && |a()) |
| 92 b(); |
| 93 } |
| 94 |
| |
| ACTION: step-in |
| PAUSE AT a:11:16 |
| 7 var value = 1; |
| 8 var truthy = true; |
| 9 var falsey = false; |
| -> 10 function a() { |return value; } |
| 11 function b() { return value; } |
| 12 |
| 13 |
| |
| ACTION: step-out |
| PAUSE AT entryIfWithLogicalOperation:93:9 |
| 89 function entryIfWithLogicalOperation() { |
| 90 debugger; |
| 91 if (true && a() && a()) |
| -> 92 |b(); |
| 93 } |
| 94 |
| 95 function entryIfWithBinaryOperation() { |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithLogicalOperation:94:2 |
| 90 debugger; |
| 91 if (true && a() && a()) |
| 92 b(); |
| -> 93 }| |
| 94 |
| 95 function entryIfWithBinaryOperation() { |
| 96 let i = a(); |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfWithBinaryOperation |
| EXPRESSION: setTimeout(entryIfWithBinaryOperation) |
| STEPS: over, in, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfWithBinaryOperation:98:5 |
| 94 |
| 95 function entryIfWithBinaryOperation() { |
| 96 let i = a(); |
| -> 97 |debugger; |
| 98 if (i < 2) |
| 99 b(); |
| 100 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithBinaryOperation:99:9 |
| 95 function entryIfWithBinaryOperation() { |
| 96 let i = a(); |
| 97 debugger; |
| -> 98 if (|i < 2) |
| 99 b(); |
| 100 } |
| 101 |
| |
| ACTION: step-in |
| PAUSE AT entryIfWithBinaryOperation:100:9 |
| 96 let i = a(); |
| 97 debugger; |
| 98 if (i < 2) |
| -> 99 |b(); |
| 100 } |
| 101 |
| 102 function entryIfWithNotOperation() { |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithBinaryOperation:101:2 |
| 97 debugger; |
| 98 if (i < 2) |
| 99 b(); |
| -> 100 }| |
| 101 |
| 102 function entryIfWithNotOperation() { |
| 103 debugger; |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |
| -- Running test case: Debugger.stepping.IfWithNotOperation |
| EXPRESSION: setTimeout(entryIfWithNotOperation) |
| STEPS: over, in, over, in, over, resume |
| PAUSED (debugger-statement) |
| PAUSE AT entryIfWithNotOperation:104:5 |
| 100 } |
| 101 |
| 102 function entryIfWithNotOperation() { |
| -> 103 |debugger; |
| 104 if (!false) |
| 105 a(); |
| 106 if (!!true) |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithNotOperation:105:9 |
| 101 |
| 102 function entryIfWithNotOperation() { |
| 103 debugger; |
| -> 104 if (|!false) |
| 105 a(); |
| 106 if (!!true) |
| 107 a(); |
| |
| ACTION: step-in |
| PAUSE AT entryIfWithNotOperation:106:9 |
| 102 function entryIfWithNotOperation() { |
| 103 debugger; |
| 104 if (!false) |
| -> 105 |a(); |
| 106 if (!!true) |
| 107 a(); |
| 108 } |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithNotOperation:107:9 |
| 103 debugger; |
| 104 if (!false) |
| 105 a(); |
| -> 106 if (|!!true) |
| 107 a(); |
| 108 } |
| 109 |
| |
| ACTION: step-in |
| PAUSE AT entryIfWithNotOperation:108:9 |
| 104 if (!false) |
| 105 a(); |
| 106 if (!!true) |
| -> 107 |a(); |
| 108 } |
| 109 |
| 110 // --------- |
| |
| ACTION: step-over |
| PAUSE AT entryIfWithNotOperation:109:2 |
| 105 a(); |
| 106 if (!!true) |
| 107 a(); |
| -> 108 }| |
| 109 |
| 110 // --------- |
| 111 |
| |
| ACTION: resume |
| RESUMED |
| PASS: Should have used all steps. |
| |