Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: test/mjsunit/debug-stepout-scope.js

Issue 10969061: Split test/mjsunit/debug-stepout-scope into smaller chunks (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: fixed nit Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | test/mjsunit/debug-stepout-scope-part1.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are
4 // met:
5 //
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28 // Flags: --expose-debug-as debug --expose-natives-as=builtins
29
30 // Check that the ScopeIterator can properly recreate the scope at
31 // every point when stepping through functions.
32
33 var Debug = debug.Debug;
34
35 function listener(event, exec_state, event_data, data) {
36 if (event == Debug.DebugEvent.Break) {
37 // Access scope details.
38 var scope_count = exec_state.frame().scopeCount();
39 for (var i = 0; i < scope_count; i++) {
40 var scope = exec_state.frame().scope(i);
41 // assertTrue(scope.isScope());
42 scope.scopeType();
43 scope.scopeObject();
44 }
45
46 // Do steps until we reach the global scope again.
47 if (true) {
48 exec_state.prepareStep(Debug.StepAction.StepInMin, 1);
49 }
50 }
51 }
52
53 Debug.setListener(listener);
54
55
56 function test1() {
57 debugger;
58 with ({x:1}) {
59 x = 2;
60 }
61 }
62 test1();
63
64
65 function test2() {
66 if (true) {
67 with ({}) {
68 debugger;
69 }
70 } else {
71 with ({}) {
72 return 10;
73 }
74 }
75 }
76 test2();
77
78
79 function test3() {
80 if (true) {
81 debugger;
82 } else {
83 with ({}) {
84 return 10;
85 }
86 }
87 }
88 test3();
89
90
91 function test4() {
92 debugger;
93 with ({x:1}) x = 1
94 }
95 test4();
96
97
98 function test5() {
99 debugger;
100 var dummy = 1;
101 with ({}) {
102 with ({}) {
103 dummy = 2;
104 }
105 }
106 dummy = 3;
107 }
108 test5();
109
110
111 function test6() {
112 debugger;
113 try {
114 throw 'stuff';
115 } catch (e) {
116 e = 1;
117 }
118 }
119 test6();
120
121
122 function test7() {
123 debugger;
124 function foo() {}
125 }
126 test7();
127
128
129 function test8() {
130 debugger;
131 (function foo() {})();
132 }
133 test8();
134
135
136 var q = 42;
137 var prefixes = [ "debugger; ",
138 "if (false) { try { throw 0; } catch(x) { return x; } }; debugg er; " ];
139 var bodies = [ "1",
140 "1 ",
141 "1;",
142 "1; ",
143 "q",
144 "q ",
145 "q;",
146 "q; ",
147 "try { throw 'stuff' } catch (e) { e = 1; }",
148 "try { throw 'stuff' } catch (e) { e = 1; } ",
149 "try { throw 'stuff' } catch (e) { e = 1; };",
150 "try { throw 'stuff' } catch (e) { e = 1; }; " ];
151 var with_bodies = [ "with ({}) {}",
152 "with ({x:1}) x",
153 "with ({x:1}) x = 1",
154 "with ({x:1}) x ",
155 "with ({x:1}) x = 1 ",
156 "with ({x:1}) x;",
157 "with ({x:1}) x = 1;",
158 "with ({x:1}) x; ",
159 "with ({x:1}) x = 1; " ];
160
161
162 function test9() {
163 debugger;
164 for (var i = 0; i < prefixes.length; ++i) {
165 var pre = prefixes[i];
166 for (var j = 0; j < bodies.length; ++j) {
167 var body = bodies[j];
168 eval(pre + body);
169 eval("'use strict'; " + pre + body);
170 }
171 for (var j = 0; j < with_bodies.length; ++j) {
172 var body = with_bodies[j];
173 eval(pre + body);
174 }
175 }
176 }
177 test9();
178
179
180 function test10() {
181 debugger;
182 with ({}) {
183 return 10;
184 }
185 }
186 test10();
187
188
189 function test11() {
190 debugger;
191 try {
192 throw 'stuff';
193 } catch (e) {
194 return 10;
195 }
196 }
197 test11();
198
199
200 // Test global eval and function constructor.
201 for (var i = 0; i < prefixes.length; ++i) {
202 var pre = prefixes[i];
203 for (var j = 0; j < bodies.length; ++j) {
204 var body = bodies[j];
205 eval(pre + body);
206 eval("'use strict'; " + pre + body);
207 Function(pre + body)();
208 }
209 for (var j = 0; j < with_bodies.length; ++j) {
210 var body = with_bodies[j];
211 eval(pre + body);
212 Function(pre + body)();
213 }
214 }
215
216
217 try {
218 with({}) {
219 debugger;
220 eval("{}$%:^");
221 }
222 } catch(e) {
223 nop();
224 }
225
226 // Return from function constructed with Function constructor.
227 var anon = 12;
228 for (var i = 0; i < prefixes.length; ++i) {
229 var pre = prefixes[i];
230 Function(pre + "return 42")();
231 Function(pre + "return 42 ")();
232 Function(pre + "return 42;")();
233 Function(pre + "return 42; ")();
234 Function(pre + "return anon")();
235 Function(pre + "return anon ")();
236 Function(pre + "return anon;")();
237 Function(pre + "return anon; ")();
238 }
239
240
241 function nop() {}
242
243
244 function stress() {
245 debugger;
246
247 L: with ({x:12}) {
248 break L;
249 }
250
251
252 with ({x: 'outer'}) {
253 label: {
254 with ({x: 'inner'}) {
255 break label;
256 }
257 }
258 }
259
260
261 with ({x: 'outer'}) {
262 label: {
263 with ({x: 'inner'}) {
264 break label;
265 }
266 }
267 nop();
268 }
269
270
271 with ({x: 'outer'}) {
272 label: {
273 with ({x: 'middle'}) {
274 with ({x: 'inner'}) {
275 break label;
276 }
277 }
278 }
279 }
280
281
282 with ({x: 'outer'}) {
283 label: {
284 with ({x: 'middle'}) {
285 with ({x: 'inner'}) {
286 break label;
287 }
288 }
289 }
290 nop();
291 }
292
293
294 with ({x: 'outer'}) {
295 for (var i = 0; i < 3; ++i) {
296 with ({x: 'inner' + i}) {
297 continue;
298 }
299 }
300 }
301
302
303 with ({x: 'outer'}) {
304 label: for (var i = 0; i < 3; ++i) {
305 with ({x: 'middle' + i}) {
306 for (var j = 0; j < 3; ++j) {
307 with ({x: 'inner' + j}) {
308 continue label;
309 }
310 }
311 }
312 }
313 }
314
315
316 with ({x: 'outer'}) {
317 try {
318 with ({x: 'inner'}) {
319 throw 0;
320 }
321 } catch (e) {
322 }
323 }
324
325
326 with ({x: 'outer'}) {
327 try {
328 with ({x: 'inner'}) {
329 throw 0;
330 }
331 } catch (e) {
332 nop();
333 }
334 }
335
336
337 with ({x: 'outer'}) {
338 try {
339 with ({x: 'middle'}) {
340 with ({x: 'inner'}) {
341 throw 0;
342 }
343 }
344 } catch (e) {
345 }
346 }
347
348
349 try {
350 with ({x: 'outer'}) {
351 try {
352 with ({x: 'inner'}) {
353 throw 0;
354 }
355 } finally {
356 }
357 }
358 } catch (e) {
359 }
360
361
362 try {
363 with ({x: 'outer'}) {
364 try {
365 with ({x: 'inner'}) {
366 throw 0;
367 }
368 } finally {
369 nop();
370 }
371 }
372 } catch (e) {
373 }
374
375
376 function stress1() {
377 with ({x:12}) {
378 return x;
379 }
380 }
381 stress1();
382
383
384 function stress2() {
385 with ({x: 'outer'}) {
386 with ({x: 'inner'}) {
387 return x;
388 }
389 }
390 }
391 stress2();
392
393 function stress3() {
394 try {
395 with ({x: 'inner'}) {
396 throw 0;
397 }
398 } catch (e) {
399 return e;
400 }
401 }
402 stress3();
403
404
405 function stress4() {
406 try {
407 with ({x: 'inner'}) {
408 throw 0;
409 }
410 } catch (e) {
411 with ({x: 'inner'}) {
412 return e;
413 }
414 }
415 }
416 stress4();
417
418 }
419 stress();
420
421
422 // With block as the last(!) statement in global code.
423 with ({}) { debugger; }
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/debug-stepout-scope-part1.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698