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
7function get() {
8  return 3;                       // Break
9}                                 // Break
10
11function set(x) {
12  this.x = x;                     // Break
13}                                 // Break
14
15var o = {};
16Object.defineProperty(o, "get", { get : get });
17Object.defineProperty(o, "set", { set : set });
18
19function f() {
20  for (var i = 0; i < 10; i++) {  // Break
21    o.get;                        // Break
22    o.set = 1;                    // Break
23  }
24}                                 // Break
25
26var break_count = 0;
27var exception = null;
28
29function listener(event, exec_state, event_data, data) {
30  if (event != Debug.DebugEvent.Break) return;
31  try {
32    var source_line = exec_state.frame(0).sourceLineText();
33    assertTrue(source_line.indexOf("// Break") > 0);
34    exec_state.prepareStep(Debug.StepAction.StepIn);
35    break_count++;
36  } catch (e) {
37    exception = e;
38  }
39}
40
41var Debug = debug.Debug;
42Debug.setListener(listener);
43
44debugger;                         // Break
45f();                              // Break
46
47Debug.setListener(null);          // Break
48assertEquals(86, break_count);
49assertNull(exception);
50