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

Side by Side Diff: test/cctest/test-ast-expression-visitor.cc

Issue 1319983004: Refactor type collector testing macros. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: merge Created 5 years, 3 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
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdlib.h> 5 #include <stdlib.h>
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #include "src/ast.h" 9 #include "src/ast.h"
10 #include "src/ast-expression-visitor.h" 10 #include "src/ast-expression-visitor.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 info.scope()->declarations()->at(0)->AsFunctionDeclaration()->fun()); 44 info.scope()->declarations()->at(0)->AsFunctionDeclaration()->fun());
45 45
46 ExpressionTypeCollector(&compilation_info, dst).Run(); 46 ExpressionTypeCollector(&compilation_info, dst).Run();
47 } 47 }
48 } 48 }
49 49
50 50
51 TEST(VisitExpressions) { 51 TEST(VisitExpressions) {
52 v8::V8::Initialize(); 52 v8::V8::Initialize();
53 HandleAndZoneScope handles; 53 HandleAndZoneScope handles;
54 ZoneVector<ExpressionTypeEntry> types(handles.main_zone()); 54 Zone* zone = handles.main_zone();
55 ZoneVector<ExpressionTypeEntry> types(zone);
titzer 2015/08/31 18:08:53 You can put this subexpression back in now. (and b
bradn 2015/08/31 18:34:59 Done.
55 const char test_function[] = 56 const char test_function[] =
56 "function GeometricMean(stdlib, foreign, buffer) {\n" 57 "function GeometricMean(stdlib, foreign, buffer) {\n"
57 " \"use asm\";\n" 58 " \"use asm\";\n"
58 "\n" 59 "\n"
59 " var exp = stdlib.Math.exp;\n" 60 " var exp = stdlib.Math.exp;\n"
60 " var log = stdlib.Math.log;\n" 61 " var log = stdlib.Math.log;\n"
61 " var values = new stdlib.Float64Array(buffer);\n" 62 " var values = new stdlib.Float64Array(buffer);\n"
62 "\n" 63 "\n"
63 " function logSum(start, end) {\n" 64 " function logSum(start, end) {\n"
64 " start = start|0;\n" 65 " start = start|0;\n"
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 } 267 }
267 } 268 }
268 } 269 }
269 CHECK_TYPES_END 270 CHECK_TYPES_END
270 } 271 }
271 272
272 273
273 TEST(VisitEmptyForStatment) { 274 TEST(VisitEmptyForStatment) {
274 v8::V8::Initialize(); 275 v8::V8::Initialize();
275 HandleAndZoneScope handles; 276 HandleAndZoneScope handles;
276 ZoneVector<ExpressionTypeEntry> types(handles.main_zone()); 277 Zone* zone = handles.main_zone();
278 ZoneVector<ExpressionTypeEntry> types(zone);
277 // Check that traversing an empty for statement works. 279 // Check that traversing an empty for statement works.
278 const char test_function[] = 280 const char test_function[] =
279 "function foo() {\n" 281 "function foo() {\n"
280 " for (;;) {}\n" 282 " for (;;) {}\n"
281 "}\n"; 283 "}\n";
282 CollectTypes(&handles, test_function, &types); 284 CollectTypes(&handles, test_function, &types);
283 CHECK_TYPES_BEGIN { 285 CHECK_TYPES_BEGIN {
284 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) {} 286 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) {}
285 } 287 }
286 CHECK_TYPES_END 288 CHECK_TYPES_END
287 } 289 }
288 290
289 291
290 TEST(VisitSwitchStatment) { 292 TEST(VisitSwitchStatment) {
291 v8::V8::Initialize(); 293 v8::V8::Initialize();
292 HandleAndZoneScope handles; 294 HandleAndZoneScope handles;
293 ZoneVector<ExpressionTypeEntry> types(handles.main_zone()); 295 Zone* zone = handles.main_zone();
296 ZoneVector<ExpressionTypeEntry> types(zone);
294 // Check that traversing a switch with a default works. 297 // Check that traversing a switch with a default works.
295 const char test_function[] = 298 const char test_function[] =
296 "function foo() {\n" 299 "function foo() {\n"
297 " switch (0) { case 1: break; default: break; }\n" 300 " switch (0) { case 1: break; default: break; }\n"
298 "}\n"; 301 "}\n";
299 CollectTypes(&handles, test_function, &types); 302 CollectTypes(&handles, test_function, &types);
300 CHECK_TYPES_BEGIN { 303 CHECK_TYPES_BEGIN {
301 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) { 304 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) {
302 CHECK_EXPR(Assignment, DEFAULT_TYPE) { 305 CHECK_EXPR(Assignment, DEFAULT_TYPE) {
303 CHECK_VAR(.switch_tag, DEFAULT_TYPE); 306 CHECK_VAR(.switch_tag, DEFAULT_TYPE);
304 CHECK_EXPR(Literal, DEFAULT_TYPE); 307 CHECK_EXPR(Literal, DEFAULT_TYPE);
305 } 308 }
306 CHECK_EXPR(Literal, DEFAULT_TYPE); 309 CHECK_EXPR(Literal, DEFAULT_TYPE);
307 CHECK_VAR(.switch_tag, DEFAULT_TYPE); 310 CHECK_VAR(.switch_tag, DEFAULT_TYPE);
308 CHECK_EXPR(Literal, DEFAULT_TYPE); 311 CHECK_EXPR(Literal, DEFAULT_TYPE);
309 } 312 }
310 } 313 }
311 CHECK_TYPES_END 314 CHECK_TYPES_END
312 } 315 }
313 316
314 317
315 TEST(VisitThrow) { 318 TEST(VisitThrow) {
316 v8::V8::Initialize(); 319 v8::V8::Initialize();
317 HandleAndZoneScope handles; 320 HandleAndZoneScope handles;
318 ZoneVector<ExpressionTypeEntry> types(handles.main_zone()); 321 Zone* zone = handles.main_zone();
322 ZoneVector<ExpressionTypeEntry> types(zone);
319 // Check that traversing an empty for statement works. 323 // Check that traversing an empty for statement works.
320 const char test_function[] = 324 const char test_function[] =
321 "function foo() {\n" 325 "function foo() {\n"
322 " throw 123;\n" 326 " throw 123;\n"
323 "}\n"; 327 "}\n";
324 CollectTypes(&handles, test_function, &types); 328 CollectTypes(&handles, test_function, &types);
325 CHECK_TYPES_BEGIN { 329 CHECK_TYPES_BEGIN {
326 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) { 330 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) {
327 CHECK_EXPR(Throw, DEFAULT_TYPE) { CHECK_EXPR(Literal, DEFAULT_TYPE); } 331 CHECK_EXPR(Throw, DEFAULT_TYPE) { CHECK_EXPR(Literal, DEFAULT_TYPE); }
328 } 332 }
329 } 333 }
330 CHECK_TYPES_END 334 CHECK_TYPES_END
331 } 335 }
332 336
333 337
334 TEST(VisitYield) { 338 TEST(VisitYield) {
335 v8::V8::Initialize(); 339 v8::V8::Initialize();
336 HandleAndZoneScope handles; 340 HandleAndZoneScope handles;
337 ZoneVector<ExpressionTypeEntry> types(handles.main_zone()); 341 Zone* zone = handles.main_zone();
342 ZoneVector<ExpressionTypeEntry> types(zone);
338 // Check that traversing an empty for statement works. 343 // Check that traversing an empty for statement works.
339 const char test_function[] = 344 const char test_function[] =
340 "function* foo() {\n" 345 "function* foo() {\n"
341 " yield 123;\n" 346 " yield 123;\n"
342 "}\n"; 347 "}\n";
343 CollectTypes(&handles, test_function, &types); 348 CollectTypes(&handles, test_function, &types);
344 CHECK_TYPES_BEGIN { 349 CHECK_TYPES_BEGIN {
345 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) { 350 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) {
346 // Generator function yields generator on entry. 351 // Generator function yields generator on entry.
347 CHECK_EXPR(Yield, DEFAULT_TYPE) { 352 CHECK_EXPR(Yield, DEFAULT_TYPE) {
(...skipping 10 matching lines...) Expand all
358 } 363 }
359 // Then yields 123. 364 // Then yields 123.
360 CHECK_EXPR(Yield, DEFAULT_TYPE) { 365 CHECK_EXPR(Yield, DEFAULT_TYPE) {
361 CHECK_VAR(.generator_object, DEFAULT_TYPE); 366 CHECK_VAR(.generator_object, DEFAULT_TYPE);
362 CHECK_EXPR(Literal, DEFAULT_TYPE); 367 CHECK_EXPR(Literal, DEFAULT_TYPE);
363 } 368 }
364 } 369 }
365 } 370 }
366 CHECK_TYPES_END 371 CHECK_TYPES_END
367 } 372 }
373
374
375 TEST(VisitSkipping) {
376 v8::V8::Initialize();
377 HandleAndZoneScope handles;
378 Zone* zone = handles.main_zone();
379 ZoneVector<ExpressionTypeEntry> types(zone);
380 // Check that traversing an empty for statement works.
381 const char test_function[] =
382 "function foo(x) {\n"
383 " return (x + x) + 1;\n"
384 "}\n";
385 CollectTypes(&handles, test_function, &types);
386 CHECK_TYPES_BEGIN {
387 CHECK_EXPR(FunctionLiteral, DEFAULT_TYPE) {
388 CHECK_EXPR(BinaryOperation, DEFAULT_TYPE) {
389 // Skip x + x
390 CHECK_SKIP();
391 CHECK_EXPR(Literal, DEFAULT_TYPE);
392 }
393 }
394 }
395 CHECK_TYPES_END
396 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698