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

Side by Side Diff: test/mjsunit/harmony/typesystem/type-parameters.js

Issue 1817353003: Add tests for variable declarations (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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 // Flags: --harmony-types 5 // Flags: --harmony-types
6 6
7 function CheckValid(type) {
8 // print("V:", type);
9 assertDoesNotThrow("'use types'; var x: " + type + ";");
10 }
11 7
12 function CheckInvalid(type) { 8 load("test/mjsunit/harmony/typesystem/testgen.js");
13 // print("I:", type); 9
14 assertThrows("'use types'; var x: " + type + ";", SyntaxError);
15 }
16 10
17 (function TestParametricFunctionTypes() { 11 (function TestParametricFunctionTypes() {
18 CheckValid("<A> (x: A) => A"); 12 CheckValidType("<A> (x: A) => A");
19 CheckValid("<A extends string> (x: A) => A"); 13 CheckValidType("<A extends string> (x: A) => A");
20 CheckValid("<A, B> (x: A, y: B) => A"); 14 CheckValidType("<A, B> (x: A, y: B) => A");
21 CheckValid("<A, B extends number[], C> (x: A, y: B) => C"); 15 CheckValidType("<A, B extends number[], C> (x: A, y: B) => C");
22 CheckValid("<A, B, C, D> (x: A, y: B, z: C[], d: (e: D) => D) => A"); 16 CheckValidType("<A, B, C, D> (x: A, y: B, z: C[], d: (e: D) => D) => A");
23 // Type parameter lists in non-function types. 17 // Type parameter lists in non-function types.
24 CheckInvalid("<A> A[]"); 18 CheckInvalidType("<A> A[]");
25 // Empty type parameter list is disallowed. 19 // Empty type parameter list is disallowed.
26 CheckInvalid("<> (x: number) => number"); 20 CheckInvalidType("<> (x: number) => number");
27 // Invalid type in extends. 21 // Invalid type in extends.
28 CheckInvalid("<A extends ()> (x: A) => A"); 22 CheckInvalidType("<A extends ()> (x: A) => A");
29 })(); 23 })();
30 24
31 (function TestParametricTypeReferences() { 25 (function TestParametricTypeReferences() {
32 CheckValid("Tree<number>"); 26 CheckValidType("Tree<number>");
33 CheckValid("Map<string, number>"); 27 CheckValidType("Map<string, number>");
34 // Invalid types as arguments. 28 // Invalid types as arguments.
35 CheckInvalid("Map<string, (number, void)>"); 29 CheckInvalidType("Map<string, (number, void)>");
36 // Type arguments not in type references. 30 // Type arguments not in type references.
37 CheckInvalid("number<string>"); 31 CheckInvalidType("number<string>");
38 // Empty type argument list is disallowed. 32 // Empty type argument list is disallowed.
39 CheckInvalid("Foo<>"); 33 CheckInvalidType("Foo<>");
40 })(); 34 })();
OLDNEW
« no previous file with comments | « test/mjsunit/harmony/typesystem/tuple-types.js ('k') | test/mjsunit/harmony/typesystem/type-query.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698