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.

