OLD | NEW |
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 Loading... |
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 })(); |
OLD | NEW |