Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: test/mjsunit/harmony/debug-stepin-proxies.js

Issue 1508653002: [debugger] add test case for stepping into proxy traps. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 --harmony-proxies
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, 1);
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 enumerate: function(target) {
40 function* keys() { // n
41 yield "foo"; // o
42 yield "bar"; // p
43 } // q
44 return keys(); // r
45 }, // s
46 }
47
48 var proxy = new Proxy(target, handler);
49
50 Debug.setListener(listener);
51 debugger; // a
52 var has = "step" in proxy; // b
53 var get = proxy.step; // c
54 proxy.step = 43; // d
55 for (var i in proxy) { // e
56 log.push(i); // f
57 }
58
59 Debug.setListener(null); // g
60
61 assertNull(exception);
62 assertTrue(has);
63 assertEquals(42, get);
64 print(JSON.stringify(log));
Jakob Kummerow 2015/12/07 10:51:03 nit: leftover?
65
66 assertEquals([
67 "a0",
68 "b0", "h4b20", "i2b20", // [[Has]]
69 "c0", "j4c15", "k2c15", // [[Get]]
70 "d0", "l4d11", "m2d11", // [[Set]]
71 "e14", "r4e14", "q4r11e14", "s2e14", // for-in [[Enumerate]]
72 "o6e14", "q4e14", "p6e14", "q4e14", "q4e14", // exhaust iterator
73 "e9","f2","foo","e9","f2", "bar","e9", // for-in body
74 "g0"
75 ], log);
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698