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


== Running test suite: Debugger.stepping.switch
-- Running test case: Debugger.stepping.SwitchHitCase
EXPRESSION: setTimeout(entrySwitchHitCase)
STEPS: over, in, in, over, over, over, resume
PAUSED (debugger-statement)
PAUSE AT entrySwitchHitCase:29:5
     25    }
     26
     27    function entrySwitchHitCase() {
 ->  28        |debugger;
     29        switcher(1);
     30    }
     31

ACTION: step-over
PAUSE AT entrySwitchHitCase:30:5
     26
     27    function entrySwitchHitCase() {
     28        debugger;
 ->  29        |switcher(1);
     30    }
     31
     32    function entrySwitchFallthrough() {

ACTION: step-in
PAUSE AT switcher:12:13
      8    }
      9
     10    function switcher(value) {
 ->  11        switch (|value) {
     12        case 1:
     13            a();
     14            break;

ACTION: step-in
PAUSE AT switcher:14:9
     10    function switcher(value) {
     11        switch (value) {
     12        case 1:
 ->  13            |a();
     14            break;
     15        case 2:
     16            a();

ACTION: step-over
PAUSE AT switcher:15:9
     11        switch (value) {
     12        case 1:
     13            a();
 ->  14            |break;
     15        case 2:
     16            a();
     17            // fallthrough

ACTION: step-over
PAUSE AT switcher:26:2
     22            a();
     23            break;
     24        }
 ->  25    }|
     26
     27    function entrySwitchHitCase() {
     28        debugger;

ACTION: step-over
PAUSE AT entrySwitchHitCase:31:2
     27    function entrySwitchHitCase() {
     28        debugger;
     29        switcher(1);
 ->  30    }|
     31
     32    function entrySwitchFallthrough() {
     33        debugger;

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

-- Running test case: Debugger.stepping.SwitchFallthrough
EXPRESSION: setTimeout(entrySwitchFallthrough)
STEPS: over, in, in, over, over, over, over, resume
PAUSED (debugger-statement)
PAUSE AT entrySwitchFallthrough:34:5
     30    }
     31
     32    function entrySwitchFallthrough() {
 ->  33        |debugger;
     34        switcher(2);
     35    }
     36

ACTION: step-over
PAUSE AT entrySwitchFallthrough:35:5
     31
     32    function entrySwitchFallthrough() {
     33        debugger;
 ->  34        |switcher(2);
     35    }
     36
     37    function entrySwitchDefault() {

ACTION: step-in
PAUSE AT switcher:12:13
      8    }
      9
     10    function switcher(value) {
 ->  11        switch (|value) {
     12        case 1:
     13            a();
     14            break;

ACTION: step-in
PAUSE AT switcher:17:9
     13            a();
     14            break;
     15        case 2:
 ->  16            |a();
     17            // fallthrough
     18        case 3:
     19            a();

ACTION: step-over
PAUSE AT switcher:20:9
     16            a();
     17            // fallthrough
     18        case 3:
 ->  19            |a();
     20            break;
     21        default:
     22            a();

ACTION: step-over
PAUSE AT switcher:21:9
     17            // fallthrough
     18        case 3:
     19            a();
 ->  20            |break;
     21        default:
     22            a();
     23            break;

ACTION: step-over
PAUSE AT switcher:26:2
     22            a();
     23            break;
     24        }
 ->  25    }|
     26
     27    function entrySwitchHitCase() {
     28        debugger;

ACTION: step-over
PAUSE AT entrySwitchFallthrough:36:2
     32    function entrySwitchFallthrough() {
     33        debugger;
     34        switcher(2);
 ->  35    }|
     36
     37    function entrySwitchDefault() {
     38        debugger;

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

-- Running test case: Debugger.stepping.SwitchDefault
EXPRESSION: setTimeout(entrySwitchDefault)
STEPS: over, in, over, over, over, over, resume
PAUSED (debugger-statement)
PAUSE AT entrySwitchDefault:39:5
     35    }
     36
     37    function entrySwitchDefault() {
 ->  38        |debugger;
     39        switcher(4);
     40    }
     41

ACTION: step-over
PAUSE AT entrySwitchDefault:40:5
     36
     37    function entrySwitchDefault() {
     38        debugger;
 ->  39        |switcher(4);
     40    }
     41
     42    function entrySwitchNoCase() {

ACTION: step-in
PAUSE AT switcher:12:13
      8    }
      9
     10    function switcher(value) {
 ->  11        switch (|value) {
     12        case 1:
     13            a();
     14            break;

ACTION: step-over
PAUSE AT switcher:23:9
     19            a();
     20            break;
     21        default:
 ->  22            |a();
     23            break;
     24        }
     25    }

ACTION: step-over
PAUSE AT switcher:24:9
     20            break;
     21        default:
     22            a();
 ->  23            |break;
     24        }
     25    }
     26

ACTION: step-over
PAUSE AT switcher:26:2
     22            a();
     23            break;
     24        }
 ->  25    }|
     26
     27    function entrySwitchHitCase() {
     28        debugger;

ACTION: step-over
PAUSE AT entrySwitchDefault:41:2
     37    function entrySwitchDefault() {
     38        debugger;
     39        switcher(4);
 ->  40    }|
     41
     42    function entrySwitchNoCase() {
     43        debugger;

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

-- Running test case: Debugger.stepping.SwitchStepOut
EXPRESSION: setTimeout(entrySwitchHitCase)
STEPS: over, in, in, out, resume
PAUSED (debugger-statement)
PAUSE AT entrySwitchHitCase:29:5
     25    }
     26
     27    function entrySwitchHitCase() {
 ->  28        |debugger;
     29        switcher(1);
     30    }
     31

ACTION: step-over
PAUSE AT entrySwitchHitCase:30:5
     26
     27    function entrySwitchHitCase() {
     28        debugger;
 ->  29        |switcher(1);
     30    }
     31
     32    function entrySwitchFallthrough() {

ACTION: step-in
PAUSE AT switcher:12:13
      8    }
      9
     10    function switcher(value) {
 ->  11        switch (|value) {
     12        case 1:
     13            a();
     14            break;

ACTION: step-in
PAUSE AT switcher:14:9
     10    function switcher(value) {
     11        switch (value) {
     12        case 1:
 ->  13            |a();
     14            break;
     15        case 2:
     16            a();

ACTION: step-out
PAUSE AT entrySwitchHitCase:31:2
     27    function entrySwitchHitCase() {
     28        debugger;
     29        switcher(1);
 ->  30    }|
     31
     32    function entrySwitchFallthrough() {
     33        debugger;

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

-- Running test case: Debugger.stepping.SwitchNoCaseStepIn
EXPRESSION: setTimeout(entrySwitchNoCase)
STEPS: over, in, in, in, resume
PAUSED (debugger-statement)
PAUSE AT entrySwitchNoCase:44:5
     40    }
     41
     42    function entrySwitchNoCase() {
 ->  43        |debugger;
     44        switch (a()) {
     45        case 2:
     46            a();

ACTION: step-over
PAUSE AT entrySwitchNoCase:45:13
     41
     42    function entrySwitchNoCase() {
     43        debugger;
 ->  44        switch (|a()) {
     45        case 2:
     46            a();
     47            break;

ACTION: step-in
PAUSE AT a:8:5
      4    <script src="../resources/log-pause-location.js"></script>
      5    <script>
      6    function a() {
 ->   7        |return 1;
      8    }
      9
     10    function switcher(value) {

ACTION: step-in
PAUSE AT a:9:2
      5    <script>
      6    function a() {
      7        return 1;
 ->   8    }|
      9
     10    function switcher(value) {
     11        switch (value) {

ACTION: step-in
PAUSE AT entrySwitchNoCase:50:2
     46            a();
     47            break;
     48        }
 ->  49    }|
     50
     51    // ---------
     52

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

-- Running test case: Debugger.stepping.SwitchNoCaseStepOver
EXPRESSION: setTimeout(entrySwitchNoCase)
STEPS: over, over, resume
PAUSED (debugger-statement)
PAUSE AT entrySwitchNoCase:44:5
     40    }
     41
     42    function entrySwitchNoCase() {
 ->  43        |debugger;
     44        switch (a()) {
     45        case 2:
     46            a();

ACTION: step-over
PAUSE AT entrySwitchNoCase:45:13
     41
     42    function entrySwitchNoCase() {
     43        debugger;
 ->  44        switch (|a()) {
     45        case 2:
     46            a();
     47            break;

ACTION: step-over
PAUSE AT entrySwitchNoCase:50:2
     46            a();
     47            break;
     48        }
 ->  49    }|
     50
     51    // ---------
     52

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

