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

Side by Side Diff: test/mjsunit/harmony/typesystem/class-declarations.js

Issue 1853763002: Allow constructor and method signatures in classes (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@types-1849803002-intf-decl
Patch Set: Fix method type annotations in the preparser Created 4 years, 8 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
« test/cctest/test-parsing.cc ('K') | « test/cctest/test-parsing.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 7
8 load("test/mjsunit/harmony/typesystem/testgen.js"); 8 load("test/mjsunit/harmony/typesystem/testgen.js");
9 9
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 " y: boolean" + "\n" + 44 " y: boolean" + "\n" +
45 " z = 42" + "\n" + 45 " z = 42" + "\n" +
46 " w: number = 17" + "\n" + 46 " w: number = 17" + "\n" +
47 " 'one': number" + "\n" + 47 " 'one': number" + "\n" +
48 " '2': boolean" + "\n" + 48 " '2': boolean" + "\n" +
49 " 3: string" + "\n" + 49 " 3: string" + "\n" +
50 " 'four': number = 4" + "\n" + 50 " 'four': number = 4" + "\n" +
51 " '5': boolean = false" + "\n" + 51 " '5': boolean = false" + "\n" +
52 " 6: string[] = [...['six', 'six', 'and', 'six']]" + "\n" + 52 " 6: string[] = [...['six', 'six', 'and', 'six']]" + "\n" +
53 // methods 53 // methods
54 " f () : number { return 42; }" + "\n" + 54 " f1 () : number { return 42; }" + "\n" +
55 " f (a: number[]) : number { return a[0]; }" + "\n" + 55 " f2 (a: number[]) : number { return a[0]; }" + "\n" +
56 " f (a: number[], b: number) : number { return b || a[0]; }" + "\n" + 56 " f3 (a: number[], b: number) : number { return b || a[0]; }" + "\n" +
57 // getters 57 // getters
58 " get p () : number { return 42; }" + "\n" + 58 " get p () : number { return 42; }" + "\n" +
59 " get 'q' () : number { return 42; }" + "\n" + 59 " get 'q' () : number { return 42; }" + "\n" +
60 " get 42 () : number { return 42; }" + "\n" + 60 " get 42 () : number { return 42; }" + "\n" +
61 // setters 61 // setters
62 " set p (x: number) {}" + "\n" + 62 " set p (x: number) {}" + "\n" +
63 " set 'q' (x: number) {}" + "\n" + 63 " set 'q' (x: number) {}" + "\n" +
64 " set 42 (x : number) {}" + "\n" + 64 " set 42 (x : number) {}" + "\n" +
65 // index members 65 // index members
66 " [x: string]" + "\n" + 66 " [x: string]" + "\n" +
67 " [x: string] : number" + "\n" + 67 " [x: string] : number" + "\n" +
68 " [x: number]" + "\n" + 68 " [x: number]" + "\n" +
69 " [x: number] : boolean" + "\n" + 69 " [x: number] : boolean" + "\n" +
70 "}"); 70 "}");
71 // Test all possible valid static members. 71 // Test all possible valid static members.
72 CheckValid("class C {" + "\n" + 72 CheckValid("class C {" + "\n" +
73 // variable members 73 // variable members
74 " static x" + "\n" + 74 " static x" + "\n" +
75 " static y: boolean" + "\n" + 75 " static y: boolean" + "\n" +
76 " static z = 42" + "\n" + 76 " static z = 42" + "\n" +
77 " static w: number = 17" + "\n" + 77 " static w: number = 17" + "\n" +
78 " static 'one': number" + "\n" + 78 " static 'one': number" + "\n" +
79 " static '2': boolean" + "\n" + 79 " static '2': boolean" + "\n" +
80 " static 3: string" + "\n" + 80 " static 3: string" + "\n" +
81 " static 'four': number = 4" + "\n" + 81 " static 'four': number = 4" + "\n" +
82 " static '5': boolean = false" + "\n" + 82 " static '5': boolean = false" + "\n" +
83 " static 6: string[] = [...['six', 'six', 'and', 'six']]" + "\n" + 83 " static 6: string[] = [...['six', 'six', 'and', 'six']]" + "\n" +
84 // methods 84 // methods
85 " static f () : number { return 42; }" + "\n" + 85 " static f1 () : number { return 42; }" + "\n" +
86 " static f (a: number[]) : number { return a[0]; }" + "\n" + 86 " static f2 (a: number[]) : number { return a[0]; }" + "\n" +
87 " static f (a: number[], b: number) : number { return b || a[0]; }" + "\n" + 87 " static f3 (a: number[], b: number) : number { return b || a[0]; }" + "\n" +
88 // getters 88 // getters
89 " static get p () : number { return 42; }" + "\n" + 89 " static get p () : number { return 42; }" + "\n" +
90 " static get 'q' () : number { return 42; }" + "\n" + 90 " static get 'q' () : number { return 42; }" + "\n" +
91 " static get 42 () : number { return 42; }" + "\n" + 91 " static get 42 () : number { return 42; }" + "\n" +
92 // setters 92 // setters
93 " static set p (x: number) {}" + "\n" + 93 " static set p (x: number) {}" + "\n" +
94 " static set 'q' (x: number) {}" + "\n" + 94 " static set 'q' (x: number) {}" + "\n" +
95 " static set 42 (x : number) {}" + "\n" + 95 " static set 42 (x : number) {}" + "\n" +
96 "}"); 96 "}");
97 // Test invalid member variable declarations. 97 // Test invalid member variable declarations.
98 CheckInvalid("class C { x: () }"); 98 CheckInvalid("class C { x: () }");
99 CheckInvalid("class C { [42] }"); 99 CheckInvalid("class C { [42] }");
100 CheckInvalid("class C { [42]: number }"); 100 CheckInvalid("class C { [42]: number }");
101 // Test invalid index members. 101 // Test invalid index members.
102 CheckInvalid("class C { [x: any] }"); 102 CheckInvalid("class C { [x: any] }");
103 CheckInvalid("class C { [x: any] : any }"); 103 CheckInvalid("class C { [x: any] : any }");
104 CheckInvalid("class C { static [x: number] }"); 104 CheckInvalid("class C { static [x: number] }");
105 })(); 105 })();
106
107 (function TestClassMemberSignatures() {
108 CheckValid("class C {" + "\n" +
109 // constructor signatures
110 " constructor (x: number, y: boolean)" + "\n" +
111 " constructor (x: number, y: boolean) { this.x = x; this.y = y; }" + "\n" +
112 // method signatures
113 " f1 () : number" + "\n" +
114 " f1 () : number { return 42; }" + "\n" +
115 " f2 (a: number[]) : number" + "\n" +
116 " f2 (a: number[]) : number { return a[0]; }" + "\n" +
117 " f3 (a: number[], b: number) : number" + "\n" +
118 " f3 (a: number[], b: number) : number { return b || a[0]; }" + "\n" +
119 "}");
120 // Test all possible valid static members.
121 CheckValid("class C {" + "\n" +
122 // static method signatures
123 " static f1 () : number" + "\n" +
124 " static f1 () : number { return 42; }" + "\n" +
125 " static f2 (a: number[]) : number" + "\n" +
126 " static f2 (a: number[]) : number { return a[0]; }" + "\n" +
127 " static f3 (a: number[], b: number)" + "\n" +
128 " static f3 (a: number[], b: number) : number { return b || a[0]; }" + "\n" +
129 "}");
130 })();
OLDNEW
« test/cctest/test-parsing.cc ('K') | « test/cctest/test-parsing.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698