Checking pause locations when pausing inside a function and stepping through to the outer function.

Setting Breakpoint: stepping-pause-in-inner-step-to-parent.html:11:0

== Running test suite: Debugger.stepping.inner-to-outer
-- Running test case: Debugger.stepping.inner-to-outer.StepIn
EXPRESSION: setTimeout(entry)
STEPS: in, in, resume
PAUSED (breakpoint)
PAUSE AT pause:12:5
      8    }
      9
     10    function pause() {
 ->  11        |var x; // BREAKPOINT
     12    }
     13
     14    // ---------

ACTION: step-in
PAUSE AT pause:13:2
      9
     10    function pause() {
     11        var x; // BREAKPOINT
 ->  12    }|
     13
     14    // ---------
     15

ACTION: step-in
PAUSE AT entry:9:2
      5    <script>
      6    function entry() {
      7        pause();
 ->   8    }|
      9
     10    function pause() {
     11        var x; // BREAKPOINT

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

-- Running test case: Debugger.stepping.inner-to-outer.StepOver
EXPRESSION: setTimeout(entry)
STEPS: over, over, resume
PAUSED (breakpoint)
PAUSE AT pause:12:5
      8    }
      9
     10    function pause() {
 ->  11        |var x; // BREAKPOINT
     12    }
     13
     14    // ---------

ACTION: step-over
PAUSE AT pause:13:2
      9
     10    function pause() {
     11        var x; // BREAKPOINT
 ->  12    }|
     13
     14    // ---------
     15

ACTION: step-over
PAUSE AT entry:9:2
      5    <script>
      6    function entry() {
      7        pause();
 ->   8    }|
      9
     10    function pause() {
     11        var x; // BREAKPOINT

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

-- Running test case: Debugger.stepping.inner-to-outer.StepOut
EXPRESSION: setTimeout(entry)
STEPS: out, resume
PAUSED (breakpoint)
PAUSE AT pause:12:5
      8    }
      9
     10    function pause() {
 ->  11        |var x; // BREAKPOINT
     12    }
     13
     14    // ---------

ACTION: step-out
PAUSE AT entry:9:2
      5    <script>
      6    function entry() {
      7        pause();
 ->   8    }|
      9
     10    function pause() {
     11        var x; // BREAKPOINT

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

