Home | History | Annotate | Download | only in es6
      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 
      9 var exception = null;
     10 var log = [];
     11 
     12 function listener(event, exec_state, event_data, data) {
     13   if (event != Debug.DebugEvent.Break) return;
     14   try {
     15     print(event_data.sourceLineText());
     16     var entry = "";
     17     for (var i = 0; i < exec_state.frameCount(); i++) {
     18       entry += exec_state.frame(i).sourceLineText().substr(-1);
     19       entry += exec_state.frame(i).sourceColumn();
     20     }
     21     log.push(entry);
     22     exec_state.prepareStep(Debug.StepAction.StepIn);
     23   } catch (e) {
     24     exception = e;
     25   }
     26 };
     27 
     28 var target = {};
     29 var handler = {
     30   has: function(target, name) {
     31     return true;                     // h
     32   },                                 // i
     33   get: function(target, name) {
     34     return 42;                       // j
     35   },                                 // k
     36   set: function(target, name, value) {
     37     return false;                    // l
     38   },                                 // m
     39 }
     40 
     41 var proxy = new Proxy(target, handler);
     42 
     43 Debug.setListener(listener);
     44 debugger;                            // a
     45 var has = "step" in proxy;           // b
     46 var get = proxy.step;                // c
     47 proxy.step = 43;                     // d
     48 
     49 Debug.setListener(null);             // g
     50 
     51 assertNull(exception);
     52 assertTrue(has);
     53 assertEquals(42, get);
     54 
     55 assertEquals([
     56   "a0",
     57   "b17", "h4b17", "i2b17",  // [[Has]]
     58   "c15", "j4c15", "k2c15",  // [[Get]]
     59   "d0", "l4d11", "m2d11",   // [[Set]]
     60   "g0"
     61 ], log);
     62