| 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 |