Chromium Code Reviews| 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 |