blob: 72c01f0c4327c031339f03afb64813929da75e5e [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// 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
Ben Murdochda12d292016-06-02 14:46:10 +01005// Flags: --expose-debug-as debug
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00006
7Debug = debug.Debug
8
9var exception = null;
10var log = [];
11
12function 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
28var target = {};
29var 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
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000039}
40
41var proxy = new Proxy(target, handler);
42
43Debug.setListener(listener);
44debugger; // a
45var has = "step" in proxy; // b
46var get = proxy.step; // c
47proxy.step = 43; // d
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000048
49Debug.setListener(null); // g
50
51assertNull(exception);
52assertTrue(has);
53assertEquals(42, get);
54
55assertEquals([
56 "a0",
Ben Murdochc5610432016-08-08 18:44:38 +010057 "b17", "h4b17", "i2b17", // [[Has]]
Ben Murdochda12d292016-06-02 14:46:10 +010058 "c15", "j4c15", "k2c15", // [[Get]]
59 "d0", "l4d11", "m2d11", // [[Set]]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000060 "g0"
61], log);