OLD | NEW |
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 Loading... |
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 Loading... |
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)]", |
| 7533 "var x: [number[], (a: string, b?: number)]", |
| 7534 "var z: [, number]", |
| 7535 "var z: [,, number]", |
| 7536 "var z: [string,,,]", |
| 7537 "var z: [string,, number]", |
| 7538 "var z: [string,, ...number]", |
| 7539 NULL |
| 7540 }; |
| 7541 |
| 7542 static const ParserFlag always_flags[] = {kAllowTypes}; |
| 7543 RunParserSyncTest(untyped_context_data, correct_data, kError, NULL, 0, |
| 7544 always_flags, arraysize(always_flags)); |
| 7545 RunParserSyncTest(typed_context_data, correct_data, kSuccess, NULL, 0, |
| 7546 always_flags, arraysize(always_flags)); |
| 7547 RunParserSyncTest(untyped_context_data, error_data, kError, NULL, 0, |
| 7548 always_flags, arraysize(always_flags)); |
| 7549 RunParserSyncTest(typed_context_data, error_data, kError, NULL, 0, |
| 7550 always_flags, arraysize(always_flags)); |
| 7551 } |
OLD | NEW |