Index: test/debugger/regress/regress-6085.js |
diff --git a/test/debugger/regress/regress-6085.js b/test/debugger/regress/regress-6085.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ef251516459e1f6863a34ac8dc714cae1a0e2553 |
--- /dev/null |
+++ b/test/debugger/regress/regress-6085.js |
@@ -0,0 +1,49 @@ |
+// Copyright 2017 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. |
+ |
+function* serialize() { |
+ debugger; |
+ switch (0) { |
+ case 0: |
+ let x = 1; |
+ return x; // Check scopes |
+ } |
+} |
+ |
+let exception = null; |
+let step_count = 0; |
+let scopes_checked = false; |
+ |
+function listener(event, exec_state, event_data, data) { |
+ if (event != Debug.DebugEvent.Break) return; |
+ try { |
+ if (exec_state.frame().sourceLineText().includes("Check scopes")) { |
+ let expected = [ debug.ScopeType.Block, |
+ debug.ScopeType.Local, |
+ debug.ScopeType.Script, |
+ debug.ScopeType.Global ]; |
+ for (let i = 0; i < exec_state.frame().scopeCount(); i++) { |
+ assertEquals(expected[i], exec_state.frame().scope(i).scopeType()); |
+ } |
+ scopes_checked = true; |
+ } |
+ if (step_count++ < 3) exec_state.prepareStep(Debug.StepAction.StepNext); |
+ } catch (e) { |
+ exception = e; |
+ print(e, e.stack); |
+ } |
+} |
+ |
+ |
+ |
+let Debug = debug.Debug; |
+Debug.setListener(listener); |
+ |
+let gen = serialize(); |
+gen.next(); |
+ |
+Debug.setListener(null); |
+assertNull(exception); |
+assertEquals(4, step_count); |
+assertTrue(scopes_checked); |