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

Side by Side Diff: test/cctest/test-parsing.cc

Issue 1810943002: Add parsing for tuple types (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@types
Patch Set: Created 4 years, 9 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 7378 matching lines...) Expand 10 before | Expand all | Expand 10 after
7389 "var x: ((number))", 7389 "var x: ((number))",
7390 "var x: ((number))[]", 7390 "var x: ((number))[]",
7391 "var x: ((number)[])", 7391 "var x: ((number)[])",
7392 "var x: ((number[]))", 7392 "var x: ((number[]))",
7393 "var x: ((a: string) => string) & ((b: number) => number)", 7393 "var x: ((a: string) => string) & ((b: number) => number)",
7394 "var x: number | any & string", 7394 "var x: number | any & string",
7395 "var s: (a: number, b?: string) => number", 7395 "var s: (a: number, b?: string) => number",
7396 "var s: (a: number, b?: string, c?) => number", 7396 "var s: (a: number, b?: string, c?) => number",
7397 "var s: (a: number, b: string, c, ...d) => number", 7397 "var s: (a: number, b: string, c, ...d) => number",
7398 "var s: (a: number, b: string, c, ...d: string[]) => number", 7398 "var s: (a: number, b: string, c, ...d: string[]) => number",
7399 "var s: (number) => number",
7400 "var s: (number: any) => number",
7401 "var s: (any: number) => number",
7399 NULL 7402 NULL
7400 }; 7403 };
7401 7404
7402 const char* error_data[] = { 7405 const char* error_data[] = {
7403 "var x: ()", 7406 "var x: ()",
7404 "var x: (a, b)", 7407 "var x: (a, b)",
7405 "var x: ((a, b))", 7408 "var x: ((a, b))",
7406 "var x: ()[]", 7409 "var x: ()[]",
7407 "var x: (()[])", 7410 "var x: (()[])",
7408 "var x: (())[]", 7411 "var x: (())[]",
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
7494 static const ParserFlag always_flags[] = {kAllowTypes}; 7497 static const ParserFlag always_flags[] = {kAllowTypes};
7495 RunParserSyncTest(untyped_context_data, correct_data, kError, NULL, 0, 7498 RunParserSyncTest(untyped_context_data, correct_data, kError, NULL, 0,
7496 always_flags, arraysize(always_flags)); 7499 always_flags, arraysize(always_flags));
7497 RunParserSyncTest(typed_context_data, correct_data, kSuccess, NULL, 0, 7500 RunParserSyncTest(typed_context_data, correct_data, kSuccess, NULL, 0,
7498 always_flags, arraysize(always_flags)); 7501 always_flags, arraysize(always_flags));
7499 RunParserSyncTest(untyped_context_data, error_data, kError, NULL, 0, 7502 RunParserSyncTest(untyped_context_data, error_data, kError, NULL, 0,
7500 always_flags, arraysize(always_flags)); 7503 always_flags, arraysize(always_flags));
7501 RunParserSyncTest(typed_context_data, error_data, kError, NULL, 0, 7504 RunParserSyncTest(typed_context_data, error_data, kError, NULL, 0,
7502 always_flags, arraysize(always_flags)); 7505 always_flags, arraysize(always_flags));
7503 } 7506 }
7507
7508 TEST(TypedModeTupleTypes) {
7509 const char* untyped_context_data[][2] = {{"", ""}, {NULL, NULL}};
7510 const char* typed_context_data[][2] = {{"'use types'; ", ""}, {NULL, NULL}};
7511
7512 const char* correct_data[] = {
7513 "var x: [number]",
7514 "var x: [number, string]",
7515 "var x: [number[], (a: string, b?: number) => boolean]",
7516 "var f: ([]: number[]) => boolean",
7517 "var f: ([x]: number[]) => boolean",
7518 "var f: ([x, y]: number[]) => boolean",
7519 "var f: ([x,, y]: number[]) => boolean",
7520 "var f: ([, x,, y,,]: number[]) => boolean",
7521 "var f: ([x, y, ...rest]: number[]) => boolean",
7522 "var f: ([any]) => number",
7523 "var f: ([number]: number[]) => number",
7524 "var f: ([one, two, ...number]: number[]) => boolean",
7525 NULL
7526 };
7527
7528 const char* error_data[] = {
7529 "var z: []",
7530 "var z: [()]",
7531 "var z: [number,]",
7532 "var x: [number[], (a: string, b?: number)]",
rossberg 2016/03/17 16:51:37 What about simpler cases like [number, (a: string
nickie 2016/03/18 11:12:01 I'm adding the first. The second is valid, 'a' be
7533 "var z: [, number]",
7534 "var z: [string,, number]",
7535 "var z: [string,, ...number]",
7536 NULL
7537 };
7538
7539 static const ParserFlag always_flags[] = {kAllowTypes};
7540 RunParserSyncTest(untyped_context_data, correct_data, kError, NULL, 0,
7541 always_flags, arraysize(always_flags));
7542 RunParserSyncTest(typed_context_data, correct_data, kSuccess, NULL, 0,
7543 always_flags, arraysize(always_flags));
7544 RunParserSyncTest(untyped_context_data, error_data, kError, NULL, 0,
7545 always_flags, arraysize(always_flags));
7546 RunParserSyncTest(typed_context_data, error_data, kError, NULL, 0,
7547 always_flags, arraysize(always_flags));
7548 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698