Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / v8 / test / mjsunit / regress-3225.js
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
7 Debug = debug.Debug
8
9 var debug_step = 0;
10 var failure = null;
11
12 function listener(event, exec_state, event_data, data) {
13   if (event != Debug.DebugEvent.Break) return;
14   try {
15     if (debug_step == 0) {
16       assertEquals(1, exec_state.frame(0).evaluate('a').value());
17       assertEquals(3, exec_state.frame(0).evaluate('b').value());
18       exec_state.frame(0).evaluate("a = 4").value();
19       debug_step++;
20     } else {
21       assertEquals(4, exec_state.frame(0).evaluate('a').value());
22       assertEquals(3, exec_state.frame(0).evaluate('b').value());
23       exec_state.frame(0).evaluate("b = 5").value();
24     }
25   } catch (e) {
26     failure = e;
27   }
28 }
29
30 Debug.setListener(listener);
31
32 function* generator(a, b) {
33   var b = 3;  // Shadows a parameter.
34   debugger;
35   yield a;
36   yield b;
37   debugger;
38   return b;
39 }
40
41 var foo = generator(1, 2);
42
43 assertEquals(4, foo.next().value);
44 assertEquals(3, foo.next().value);
45 assertEquals(5, foo.next().value);
46 assertNull(failure);
47
48 Debug.setListener(null);