Home | History | Annotate | Download | only in regress
      1 // Copyright 2015 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Flags: --expose-debug-as debug
      6 
      7 Debug = debug.Debug
      8 var exception = null;
      9 var break_count = 0;
     10 
     11 var expected_values =
     12   [ReferenceError, undefined, 0, 0, 0, 0, 1, ReferenceError, ReferenceError];
     13 
     14 function listener(event, exec_state, event_data, data) {
     15   try {
     16     if (event == Debug.DebugEvent.Break) {
     17       assertTrue(exec_state.frameCount() != 0, "FAIL: Empty stack trace");
     18       // Count number of expected breakpoints in this source file.
     19       if (!break_count) {
     20         var source_text = exec_state.frame(0).func().script().source();
     21         expected_breaks = source_text.match(/\/\/\s*Break\s+\d+\./g).length;
     22         print("Expected breaks: " + expected_breaks);
     23       }
     24       var frameMirror = exec_state.frame(0);
     25 
     26       var v = null;;
     27       try {
     28         v = frameMirror.evaluate('i').value();
     29       } catch(e) {
     30         v = e;
     31       }
     32       frameMirror.allScopes();
     33       var source = frameMirror.sourceLineText();
     34       print("paused at: " + source);
     35       assertTrue(source.indexOf("// Break " + break_count + ".") > 0,
     36                  "Unexpected pause at: " + source + "\n" +
     37                  "Expected: // Break " + break_count + ".");
     38       if (expected_values[break_count] === ReferenceError) {
     39         assertTrue(v instanceof ReferenceError);
     40       } else {
     41         assertSame(expected_values[break_count], v);
     42 
     43       }
     44       ++break_count;
     45 
     46       if (break_count !== expected_breaks) {
     47         exec_state.prepareStep(Debug.StepAction.StepIn);
     48         print("Next step prepared");
     49       }
     50     }
     51   } catch(e) {
     52     exception = e;
     53     print(e, e.stack);
     54   }
     55 };
     56 
     57 Debug.setListener(listener);
     58 
     59 var sum = 0;
     60 (function (){
     61   'use strict';
     62 
     63   debugger; // Break 0.
     64 
     65   for (let i=0; // Break 1.
     66        i < 1;   // Break 2.  // Break 6.
     67        i++) {   // Break 5.
     68     let key = i; // Break 3.
     69     sum += key;   // Break 4.
     70   }
     71 }()); // Break 7.
     72 
     73 assertNull(exception); // Break 8.
     74 assertEquals(expected_breaks, break_count);
     75 
     76 Debug.setListener(null);
     77