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 --allow-natives-syntax
6
7var Debug = debug.Debug;
8
9var exception = null;
10
11function listener(event, exec_state, event_data, data) {
12  if (event != Debug.DebugEvent.Break) return;
13  try {
14    var scopes = exec_state.frame().allScopes();
15    assertEquals(3, scopes.length);
16    assertEquals(debug.ScopeType.Local, scopes[0].scopeType());
17    assertEquals(debug.ScopeType.Script, scopes[1].scopeType());
18    assertEquals(debug.ScopeType.Global, scopes[2].scopeType());
19  } catch (e) {
20    exception = e;
21  }
22}
23
24function f() {
25  eval('');
26  debugger;
27}
28
29f();
30f();
31
32%OptimizeFunctionOnNextCall(f);
33Debug.setListener(listener);
34
35f();
36
37assertNull(exception);
38