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.

