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, 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 } | |
OLD | NEW |