Home | History | Annotate | Download | only in mjsunit
      1 // Copyright 2014 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 
      9 var debug_step = 0;
     10 var failure = null;
     11 
     12 function listener(event, exec_state, event_data, data) {
     13   if (event != Debug.DebugEvent.Break) return;
     14   try {
     15     if (debug_step == 0) {
     16       assertEquals(1, exec_state.frame(0).evaluate('a').value());
     17       assertEquals(3, exec_state.frame(0).evaluate('b').value());
     18       exec_state.frame(0).evaluate("a = 4").value();
     19       debug_step++;
     20     } else {
     21       assertEquals(4, exec_state.frame(0).evaluate('a').value());
     22       assertEquals(3, exec_state.frame(0).evaluate('b').value());
     23       exec_state.frame(0).evaluate("b = 5").value();
     24     }
     25   } catch (e) {
     26     failure = e;
     27   }
     28 }
     29 
     30 Debug.setListener(listener);
     31 
     32 function* generator(a, b) {
     33   var b = 3;  // Shadows a parameter.
     34   debugger;
     35   yield a;
     36   yield b;
     37   debugger;
     38   return b;
     39 }
     40 
     41 var foo = generator(1, 2);
     42 
     43 assertEquals(4, foo.next().value);
     44 assertEquals(3, foo.next().value);
     45 assertEquals(5, foo.next().value);
     46 assertNull(failure);
     47 
     48 Debug.setListener(null);
     49