ALERT: log 1
Checking pause locations when stepping with "stepOver".


== Running test suite: Debugger.stepOver
-- Running test case: Debugger.stepOver.statements
PAUSED (debugger-statement)
PAUSE AT entry1:12:5
      8    }
      9    
     10    function entry1() {
 ->  11        |debugger;
     12        let x = 1;
     13        let y = 2;
     14    }

PAUSE AT entry1:13:5
      9    
     10    function entry1() {
     11        debugger;
 ->  12        |let x = 1;
     13        let y = 2;
     14    }
     15    

PAUSE AT entry1:14:5
     10    function entry1() {
     11        debugger;
     12        let x = 1;
 ->  13        |let y = 2;
     14    }
     15    
     16    function entry2() {

PAUSE AT entry1:15:2
     11        debugger;
     12        let x = 1;
     13        let y = 2;
 ->  14    }|
     15    
     16    function entry2() {
     17        debugger;

RESUMED

-- Running test case: Debugger.stepOver.function
PAUSED (debugger-statement)
PAUSE AT entry2:18:5
     14    }
     15    
     16    function entry2() {
 ->  17        |debugger;
     18        let before = 1;
     19        testAlert("log 1");
     20        let after = 2;

PAUSE AT entry2:19:5
     15    
     16    function entry2() {
     17        debugger;
 ->  18        |let before = 1;
     19        testAlert("log 1");
     20        let after = 2;
     21    }

PAUSE AT entry2:20:5
     16    function entry2() {
     17        debugger;
     18        let before = 1;
 ->  19        |testAlert("log 1");
     20        let after = 2;
     21    }
     22    

PAUSE AT entry2:21:5
     17        debugger;
     18        let before = 1;
     19        testAlert("log 1");
 ->  20        |let after = 2;
     21    }
     22    
     23    function entry3() {

PAUSE AT entry2:22:2
     18        let before = 1;
     19        testAlert("log 1");
     20        let after = 2;
 ->  21    }|
     22    
     23    function entry3() {
     24        debugger;

RESUMED

-- Running test case: Debugger.stepOver.eval
PAUSED (debugger-statement)
PAUSE AT entry3:25:5
     21    }
     22    
     23    function entry3() {
 ->  24        |debugger;
     25        let before = 1;
     26        eval("1 + 1");
     27        let after = 2;

PAUSE AT entry3:26:5
     22    
     23    function entry3() {
     24        debugger;
 ->  25        |let before = 1;
     26        eval("1 + 1");
     27        let after = 2;
     28    }

PAUSE AT entry3:27:5
     23    function entry3() {
     24        debugger;
     25        let before = 1;
 ->  26        |eval("1 + 1");
     27        let after = 2;
     28    }
     29    

PAUSE AT entry3:28:5
     24        debugger;
     25        let before = 1;
     26        eval("1 + 1");
 ->  27        |let after = 2;
     28    }
     29    
     30    function entry4() {

PAUSE AT entry3:29:2
     25        let before = 1;
     26        eval("1 + 1");
     27        let after = 2;
 ->  28    }|
     29    
     30    function entry4() {
     31        (function() {

RESUMED

-- Running test case: Debugger.stepOver.innerFunction
PAUSED (debugger-statement)
PAUSE AT <anonymous>:33:9
     29    
     30    function entry4() {
     31        (function() {
 ->  32            |debugger;
     33            let inner = 1;
     34        })();
     35        let outer = 2;

PAUSE AT <anonymous>:34:9
     30    function entry4() {
     31        (function() {
     32            debugger;
 ->  33            |let inner = 1;
     34        })();
     35        let outer = 2;
     36    }

PAUSE AT <anonymous>:35:6
     31        (function() {
     32            debugger;
     33            let inner = 1;
 ->  34        }|)();
     35        let outer = 2;
     36    }
     37    

PAUSE AT entry4:36:5
     32            debugger;
     33            let inner = 1;
     34        })();
 ->  35        |let outer = 2;
     36    }
     37    
     38    // ---------

PAUSE AT entry4:37:2
     33            let inner = 1;
     34        })();
     35        let outer = 2;
 ->  36    }|
     37    
     38    // ---------
     39    

RESUMED

