// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --expose-debug-as debug

// Do not edit this file with an editor that replaces \r with \r\n.
// Variable definitions for i0 through i3 are each terminated with \r.
function f() {
  var i0 = 0;
  var i1 = 1;
  var i2 = 2;
  var i3 = 3;
  var j0 = 0;
  var j1 = 1;
  var j2 = 2;
  var j3 = 3;
}

Debug = debug.Debug;
var exception = null;
var break_point_hit = false;

function listener(event, exec_state, event_data, data) {
  if (event != Debug.DebugEvent.Break) return;
  try {
    break_point_hit = true;
    assertEquals("  var i2 = 2;", exec_state.frame(0).sourceLineText());
  } catch (e) {
    print(e + e.stack);
    exception = e;
  }
}

Debug.setListener(listener);

Debug.setBreakPoint(f, 3, 0);

f();

Debug.setListener(null);
assertTrue(break_point_hit);
assertNull(exception);
