Index: test/mjsunit/es6/regress/regress-468661.js |
diff --git a/test/mjsunit/debug-stepin-foreach.js b/test/mjsunit/es6/regress/regress-468661.js |
similarity index 58% |
copy from test/mjsunit/debug-stepin-foreach.js |
copy to test/mjsunit/es6/regress/regress-468661.js |
index fa728e019c11ed204a6a751e925598d3eab30ea4..f262a27f5fe117ed79293f514a2f449363dd0455 100644 |
--- a/test/mjsunit/debug-stepin-foreach.js |
+++ b/test/mjsunit/es6/regress/regress-468661.js |
@@ -3,31 +3,49 @@ |
// found in the LICENSE file. |
// Flags: --expose-debug-as debug |
-// Tests stepping into through Array.prototype.forEach callbacks. |
+// Tests stepping into through Array.prototype.forEach callbacks |
adamk
2015/03/24 15:57:41
This comment either needs updating or removal.
Dmitry Lomov (no reviews)
2015/03/24 16:42:52
Done.
|
Debug = debug.Debug |
var exception = null; |
var break_count = 0; |
-var expected_breaks = -1; |
+ |
+var expected_values = |
+ [ReferenceError, ReferenceError, 0, 0, 0, 0, 0, 1, ReferenceError, ReferenceError]; |
function listener(event, exec_state, event_data, data) { |
try { |
if (event == Debug.DebugEvent.Break) { |
assertTrue(exec_state.frameCount() != 0, "FAIL: Empty stack trace"); |
+ // Count number of expected breakpoints in this source file. |
if (!break_count) { |
- // Count number of expected breakpoints in this source file. |
var source_text = exec_state.frame(0).func().script().source(); |
expected_breaks = source_text.match(/\/\/\s*Break\s+\d+\./g).length; |
print("Expected breaks: " + expected_breaks); |
} |
- var source = exec_state.frame(0).sourceLineText(); |
+ var frameMirror = exec_state.frame(0); |
+ |
+ var v = null;; |
+ try { |
+ v = frameMirror.evaluate('i').value(); |
+ } catch(e) { |
+ v = e; |
+ } |
+ |
+ var source = frameMirror.sourceLineText(); |
print("paused at: " + source); |
assertTrue(source.indexOf("// Break " + break_count + ".") > 0, |
"Unexpected pause at: " + source + "\n" + |
"Expected: // Break " + break_count + "."); |
+ if (expected_values[break_count] === ReferenceError) { |
+ assertTrue(v instanceof ReferenceError); |
+ } else { |
+ assertSame(expected_values[break_count], v); |
+ } |
++break_count; |
+ |
if (break_count !== expected_breaks) { |
exec_state.prepareStep(Debug.StepAction.StepIn, 1); |
+ print("Next step prepared"); |
} |
} |
} catch(e) { |
@@ -38,14 +56,21 @@ function listener(event, exec_state, event_data, data) { |
Debug.setListener(listener); |
-debugger; // Break 0. |
-[1,2].forEach(callback); // Break 1. |
+var sum = 0; |
+(function (){ |
+ 'use strict'; |
-function callback(x) { |
- return x; // Break 2. // Break 4. |
-} // Break 3. // Break 5. |
+ debugger; // Break 0. |
+ |
+ for (let i=0; // Break 1. |
+ i < 1; // Break 2. // Break 3. // Break 6. // Break 7. |
+ i++) { |
adamk
2015/03/24 15:57:41
Can you explain why we don't break on this line? I
Dmitry Lomov (no reviews)
2015/03/24 16:42:52
No I do not know why do not break on this line. I
adamk
2015/03/24 16:48:47
Yeah, I tried this myself and saw the same behavio
|
+ let key = i; // Break 4. |
+ sum += key; // Break 5. |
+ } |
+}()); // Break 8. |
-assertNull(exception); // Break 6. |
+assertNull(exception); // Break 9. |
assertEquals(expected_breaks, break_count); |
Debug.setListener(null); |