Checking pause locations when stepping in, out, and over misc statements.


== Running test suite: Debugger.stepping.misc
-- Running test case: Debugger.stepping.DebuggerStatement
EXPRESSION: setTimeout(entryDebuggerStatement)
STEPS: over, in, over, resume
PAUSED (debugger-statement)
PAUSE AT entryDebuggerStatement:12:5
      8    }
      9    
     10    function entryDebuggerStatement() {
 ->  11        |debugger;
     12        debugger;
     13        debugger;
     14    }

ACTION: step-over
PAUSE AT entryDebuggerStatement:13:5
      9    
     10    function entryDebuggerStatement() {
     11        debugger;
 ->  12        |debugger;
     13        debugger;
     14    }
     15    

ACTION: step-in
PAUSE AT entryDebuggerStatement:14:5
     10    function entryDebuggerStatement() {
     11        debugger;
     12        debugger;
 ->  13        |debugger;
     14    }
     15    
     16    function entryBlockStatement() {

ACTION: step-over
PAUSE AT entryDebuggerStatement:15:2
     11        debugger;
     12        debugger;
     13        debugger;
 ->  14    }|
     15    
     16    function entryBlockStatement() {
     17        debugger;

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.BlockStatement
EXPRESSION: setTimeout(entryBlockStatement)
STEPS: over, over, resume
PAUSED (debugger-statement)
PAUSE AT entryBlockStatement:18:5
     14    }
     15    
     16    function entryBlockStatement() {
 ->  17        |debugger;
     18        {
     19            let x = 1;
     20        }

ACTION: step-over
PAUSE AT entryBlockStatement:20:9
     16    function entryBlockStatement() {
     17        debugger;
     18        {
 ->  19            |let x = 1;
     20        }
     21    }
     22    

ACTION: step-over
PAUSE AT entryBlockStatement:22:2
     18        {
     19            let x = 1;
     20        }
 ->  21    }|
     22    
     23    function entryWithStatement() {
     24        let o = {x:1, y:2};

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.WithStatement
EXPRESSION: setTimeout(entryWithStatement)
STEPS: over, over, over, over, over, resume
PAUSED (debugger-statement)
PAUSE AT entryWithStatement:26:5
     22    
     23    function entryWithStatement() {
     24        let o = {x:1, y:2};
 ->  25        |debugger;
     26        with (o)
     27            a();
     28        with (o) {

ACTION: step-over
PAUSE AT entryWithStatement:27:11
     23    function entryWithStatement() {
     24        let o = {x:1, y:2};
     25        debugger;
 ->  26        with (|o)
     27            a();
     28        with (o) {
     29            a();

ACTION: step-over
PAUSE AT entryWithStatement:28:9
     24        let o = {x:1, y:2};
     25        debugger;
     26        with (o)
 ->  27            |a();
     28        with (o) {
     29            a();
     30        }

ACTION: step-over
PAUSE AT entryWithStatement:29:11
     25        debugger;
     26        with (o)
     27            a();
 ->  28        with (|o) {
     29            a();
     30        }
     31    }

ACTION: step-over
PAUSE AT entryWithStatement:30:9
     26        with (o)
     27            a();
     28        with (o) {
 ->  29            |a();
     30        }
     31    }
     32    

ACTION: step-over
PAUSE AT entryWithStatement:32:2
     28        with (o) {
     29            a();
     30        }
 ->  31    }|
     32    
     33    function entryLabeledStatement() {
     34        let arr = [];

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.LabeledStatement
EXPRESSION: setTimeout(entryLabeledStatement)
STEPS: over, over, over, resume
PAUSED (debugger-statement)
PAUSE AT entryLabeledStatement:36:5
     32    
     33    function entryLabeledStatement() {
     34        let arr = [];
 ->  35        |debugger;
     36    label:
     37        {
     38            arr.push(1);

ACTION: step-over
PAUSE AT entryLabeledStatement:39:9
     35        debugger;
     36    label:
     37        {
 ->  38            |arr.push(1);
     39            break label;
     40            arr.push(2);
     41        }

ACTION: step-over
PAUSE AT entryLabeledStatement:40:9
     36    label:
     37        {
     38            arr.push(1);
 ->  39            |break label;
     40            arr.push(2);
     41        }
     42    }

ACTION: step-over
PAUSE AT entryLabeledStatement:43:2
     39            break label;
     40            arr.push(2);
     41        }
 ->  42    }|
     43    
     44    function entryLabelBreakLoop() {
     45        debugger;

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.LabelBreakLoop
EXPRESSION: setTimeout(entryLabelBreakLoop)
STEPS: over, in, in, in, over, over, over, over, over, over, over, over, in, in, in, in, in, resume
PAUSED (debugger-statement)
PAUSE AT entryLabelBreakLoop:46:5
     42    }
     43    
     44    function entryLabelBreakLoop() {
 ->  45        |debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
     48            for (let j = 0; j < 2; ++j) {

ACTION: step-over
PAUSE AT entryLabelBreakLoop:48:10
     44    function entryLabelBreakLoop() {
     45        debugger;
     46    outer:
 ->  47        for (|let i = 0; ; ++i) {
     48            for (let j = 0; j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;

ACTION: step-in
PAUSE AT entryLabelBreakLoop:49:14
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (|let j = 0; j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-in
PAUSE AT entryLabelBreakLoop:49:25
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (let j = 0; |j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-in
PAUSE AT entryLabelBreakLoop:50:17
     46    outer:
     47        for (let i = 0; ; ++i) {
     48            for (let j = 0; j < 2; ++j) {
 ->  49                if (|i === 1 && j === 0)
     50                    break outer;
     51                a();
     52            }

ACTION: step-over
PAUSE AT entryLabelBreakLoop:52:13
     48            for (let j = 0; j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
 ->  51                |a();
     52            }
     53        }
     54    }

ACTION: step-over
PAUSE AT entryLabelBreakLoop:49:32
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (let j = 0; j < 2; |++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-over
PAUSE AT entryLabelBreakLoop:49:25
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (let j = 0; |j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-over
PAUSE AT entryLabelBreakLoop:50:17
     46    outer:
     47        for (let i = 0; ; ++i) {
     48            for (let j = 0; j < 2; ++j) {
 ->  49                if (|i === 1 && j === 0)
     50                    break outer;
     51                a();
     52            }

ACTION: step-over
PAUSE AT entryLabelBreakLoop:52:13
     48            for (let j = 0; j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
 ->  51                |a();
     52            }
     53        }
     54    }

ACTION: step-over
PAUSE AT entryLabelBreakLoop:49:32
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (let j = 0; j < 2; |++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-over
PAUSE AT entryLabelBreakLoop:49:25
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (let j = 0; |j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-over
PAUSE AT entryLabelBreakLoop:48:23
     44    function entryLabelBreakLoop() {
     45        debugger;
     46    outer:
 ->  47        for (let i = 0; ; |++i) {
     48            for (let j = 0; j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;

ACTION: step-in
PAUSE AT entryLabelBreakLoop:49:14
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (|let j = 0; j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-in
PAUSE AT entryLabelBreakLoop:49:25
     45        debugger;
     46    outer:
     47        for (let i = 0; ; ++i) {
 ->  48            for (let j = 0; |j < 2; ++j) {
     49                if (i === 1 && j === 0)
     50                    break outer;
     51                a();

ACTION: step-in
PAUSE AT entryLabelBreakLoop:50:17
     46    outer:
     47        for (let i = 0; ; ++i) {
     48            for (let j = 0; j < 2; ++j) {
 ->  49                if (|i === 1 && j === 0)
     50                    break outer;
     51                a();
     52            }

ACTION: step-in
PAUSE AT entryLabelBreakLoop:51:17
     47        for (let i = 0; ; ++i) {
     48            for (let j = 0; j < 2; ++j) {
     49                if (i === 1 && j === 0)
 ->  50                    |break outer;
     51                a();
     52            }
     53        }

ACTION: step-in
PAUSE AT entryLabelBreakLoop:55:2
     51                a();
     52            }
     53        }
 ->  54    }|
     55    
     56    function entryVariableDeclaration() {
     57        debugger;

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.VariableDeclaration
EXPRESSION: setTimeout(entryVariableDeclaration)
STEPS: over, in, in, in, in, in, in, resume
PAUSED (debugger-statement)
PAUSE AT entryVariableDeclaration:58:5
     54    }
     55    
     56    function entryVariableDeclaration() {
 ->  57        |debugger;
     58        var a = 1,
     59            x = 1;
     60        let b = 2,

ACTION: step-over
PAUSE AT entryVariableDeclaration:59:5
     55    
     56    function entryVariableDeclaration() {
     57        debugger;
 ->  58        |var a = 1,
     59            x = 1;
     60        let b = 2,
     61            y = 2;

ACTION: step-in
PAUSE AT entryVariableDeclaration:60:9
     56    function entryVariableDeclaration() {
     57        debugger;
     58        var a = 1,
 ->  59            |x = 1;
     60        let b = 2,
     61            y = 2;
     62        const c = 3,

ACTION: step-in
PAUSE AT entryVariableDeclaration:61:5
     57        debugger;
     58        var a = 1,
     59            x = 1;
 ->  60        |let b = 2,
     61            y = 2;
     62        const c = 3,
     63            z = 3;

ACTION: step-in
PAUSE AT entryVariableDeclaration:62:9
     58        var a = 1,
     59            x = 1;
     60        let b = 2,
 ->  61            |y = 2;
     62        const c = 3,
     63            z = 3;
     64    }

ACTION: step-in
PAUSE AT entryVariableDeclaration:63:5
     59            x = 1;
     60        let b = 2,
     61            y = 2;
 ->  62        |const c = 3,
     63            z = 3;
     64    }
     65    

ACTION: step-in
PAUSE AT entryVariableDeclaration:64:9
     60        let b = 2,
     61            y = 2;
     62        const c = 3,
 ->  63            |z = 3;
     64    }
     65    
     66    function entryDestructuring() {

ACTION: step-in
PAUSE AT entryVariableDeclaration:65:2
     61            y = 2;
     62        const c = 3,
     63            z = 3;
 ->  64    }|
     65    
     66    function entryDestructuring() {
     67        var o = {x:1, y:2};

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.Destructuring
EXPRESSION: setTimeout(entryDestructuring)
STEPS: over, in, in, resume
PAUSED (debugger-statement)
PAUSE AT entryDestructuring:70:5
     66    function entryDestructuring() {
     67        var o = {x:1, y:2};
     68        var arr = [1, 2];
 ->  69        |debugger;
     70        var {x, y} = o;
     71        var [w, z] = arr;
     72    }

ACTION: step-over
PAUSE AT entryDestructuring:71:5
     67        var o = {x:1, y:2};
     68        var arr = [1, 2];
     69        debugger;
 ->  70        |var {x, y} = o;
     71        var [w, z] = arr;
     72    }
     73    

ACTION: step-in
PAUSE AT entryDestructuring:72:5
     68        var arr = [1, 2];
     69        debugger;
     70        var {x, y} = o;
 ->  71        |var [w, z] = arr;
     72    }
     73    
     74    function entryIfWithDotExpression() {

ACTION: step-in
PAUSE AT entryDestructuring:73:2
     69        debugger;
     70        var {x, y} = o;
     71        var [w, z] = arr;
 ->  72    }|
     73    
     74    function entryIfWithDotExpression() {
     75        var o = {condition: true};

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.IfWithDotExpression
EXPRESSION: setTimeout(entryIfWithDotExpression)
STEPS: over, in, over, resume
PAUSED (debugger-statement)
PAUSE AT entryIfWithDotExpression:77:5
     73    
     74    function entryIfWithDotExpression() {
     75        var o = {condition: true};
 ->  76        |debugger;
     77        if (o.condition)
     78            a();
     79    }

ACTION: step-over
PAUSE AT entryIfWithDotExpression:78:9
     74    function entryIfWithDotExpression() {
     75        var o = {condition: true};
     76        debugger;
 ->  77        if (|o.condition)
     78            a();
     79    }
     80    

ACTION: step-in
PAUSE AT entryIfWithDotExpression:79:9
     75        var o = {condition: true};
     76        debugger;
     77        if (o.condition)
 ->  78            |a();
     79    }
     80    
     81    function entryIfWithBracketExpression() {

ACTION: step-over
PAUSE AT entryIfWithDotExpression:80:2
     76        debugger;
     77        if (o.condition)
     78            a();
 ->  79    }|
     80    
     81    function entryIfWithBracketExpression() {
     82        var o = {condition: true};

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.IfWithBracketExpression
EXPRESSION: setTimeout(entryIfWithBracketExpression)
STEPS: over, in, over, resume
PAUSED (debugger-statement)
PAUSE AT entryIfWithBracketExpression:84:5
     80    
     81    function entryIfWithBracketExpression() {
     82        var o = {condition: true};
 ->  83        |debugger;
     84        if (o["condition"])
     85            a();
     86    }

ACTION: step-over
PAUSE AT entryIfWithBracketExpression:85:9
     81    function entryIfWithBracketExpression() {
     82        var o = {condition: true};
     83        debugger;
 ->  84        if (|o["condition"])
     85            a();
     86    }
     87    

ACTION: step-in
PAUSE AT entryIfWithBracketExpression:86:9
     82        var o = {condition: true};
     83        debugger;
     84        if (o["condition"])
 ->  85            |a();
     86    }
     87    
     88    function entryIfWithTaggedTemplate() {

ACTION: step-over
PAUSE AT entryIfWithBracketExpression:87:2
     83        debugger;
     84        if (o["condition"])
     85            a();
 ->  86    }|
     87    
     88    function entryIfWithTaggedTemplate() {
     89        debugger;

ACTION: resume
RESUMED
PASS: Should have used all steps.

-- Running test case: Debugger.stepping.IfWithTaggedTemplate
EXPRESSION: setTimeout(entryIfWithTaggedTemplate)
STEPS: over, in, over, resume
PAUSED (debugger-statement)
PAUSE AT entryIfWithTaggedTemplate:90:5
     86    }
     87    
     88    function entryIfWithTaggedTemplate() {
 ->  89        |debugger;
     90        if (String.raw`test`)
     91            a();
     92    }

ACTION: step-over
PAUSE AT entryIfWithTaggedTemplate:91:9
     87    
     88    function entryIfWithTaggedTemplate() {
     89        debugger;
 ->  90        if (|String.raw`test`)
     91            a();
     92    }
     93    

ACTION: step-in
PAUSE AT entryIfWithTaggedTemplate:92:9
     88    function entryIfWithTaggedTemplate() {
     89        debugger;
     90        if (String.raw`test`)
 ->  91            |a();
     92    }
     93    
     94    

ACTION: step-over
PAUSE AT entryIfWithTaggedTemplate:93:2
     89        debugger;
     90        if (String.raw`test`)
     91            a();
 ->  92    }|
     93    
     94    
     95    // FIXME: Not Yet Tested

ACTION: resume
RESUMED
PASS: Should have used all steps.

