diff --git a/tests/baselines/reference/restParameterWithBindingPattern1.js b/tests/baselines/reference/restParameterWithBindingPattern1.js index eca1a760471..d872d232450 100644 --- a/tests/baselines/reference/restParameterWithBindingPattern1.js +++ b/tests/baselines/reference/restParameterWithBindingPattern1.js @@ -9,3 +9,4 @@ function a() { } var a = _a.a, b = _a.b; } +//# sourceMappingURL=restParameterWithBindingPattern1.js.map \ No newline at end of file diff --git a/tests/baselines/reference/restParameterWithBindingPattern1.js.map b/tests/baselines/reference/restParameterWithBindingPattern1.js.map new file mode 100644 index 00000000000..94c277257b9 --- /dev/null +++ b/tests/baselines/reference/restParameterWithBindingPattern1.js.map @@ -0,0 +1,2 @@ +//// [restParameterWithBindingPattern1.js.map] +{"version":3,"file":"restParameterWithBindingPattern1.js","sourceRoot":"","sources":["restParameterWithBindingPattern1.ts"],"names":[],"mappings":"AAAA,SAAS,CAAC;IAAC,YAAS;SAAT,UAAS,EAAT,qBAAS,EAAT,IAAS;QAAT,uBAAS;;IAAT,IAAI,QAAC,EAAE,QAAC,CAAC;AAAI,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/restParameterWithBindingPattern1.sourcemap.txt b/tests/baselines/reference/restParameterWithBindingPattern1.sourcemap.txt new file mode 100644 index 00000000000..a5aa2351bc0 --- /dev/null +++ b/tests/baselines/reference/restParameterWithBindingPattern1.sourcemap.txt @@ -0,0 +1,90 @@ +=================================================================== +JsFile: restParameterWithBindingPattern1.js +mapUrl: restParameterWithBindingPattern1.js.map +sourceRoot: +sources: restParameterWithBindingPattern1.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/restParameterWithBindingPattern1.js +sourceFile:restParameterWithBindingPattern1.ts +------------------------------------------------------------------- +>>>function a() { +1 > +2 >^^^^^^^^^ +3 > ^ +4 > ^^^^^^^-> +1 > +2 >function +3 > a +1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) +2 >Emitted(1, 10) Source(1, 10) + SourceIndex(0) +3 >Emitted(1, 11) Source(1, 11) + SourceIndex(0) +--- +>>> var _a = []; +1->^^^^ +2 > ^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->( +2 > ...{a, b} +1->Emitted(2, 5) Source(1, 12) + SourceIndex(0) +2 >Emitted(2, 17) Source(1, 21) + SourceIndex(0) +--- +>>> for (var _i = 0; _i < arguments.length; _i++) { +1->^^^^^^^^^ +2 > ^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^ +1-> +2 > ...{a, b} +3 > +4 > ...{a, b} +5 > +6 > ...{a, b} +1->Emitted(3, 10) Source(1, 12) + SourceIndex(0) +2 >Emitted(3, 20) Source(1, 21) + SourceIndex(0) +3 >Emitted(3, 22) Source(1, 12) + SourceIndex(0) +4 >Emitted(3, 43) Source(1, 21) + SourceIndex(0) +5 >Emitted(3, 45) Source(1, 12) + SourceIndex(0) +6 >Emitted(3, 49) Source(1, 21) + SourceIndex(0) +--- +>>> _a[_i] = arguments[_i]; +1 >^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > ...{a, b} +1 >Emitted(4, 9) Source(1, 12) + SourceIndex(0) +2 >Emitted(4, 32) Source(1, 21) + SourceIndex(0) +--- +>>> } +>>> var a = _a.a, b = _a.b; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^ +6 > ^ +1 > +2 > ...{ +3 > a +4 > , +5 > b +6 > } +1 >Emitted(6, 5) Source(1, 12) + SourceIndex(0) +2 >Emitted(6, 9) Source(1, 16) + SourceIndex(0) +3 >Emitted(6, 17) Source(1, 17) + SourceIndex(0) +4 >Emitted(6, 19) Source(1, 19) + SourceIndex(0) +5 >Emitted(6, 27) Source(1, 20) + SourceIndex(0) +6 >Emitted(6, 28) Source(1, 21) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >) { +2 >} +1 >Emitted(7, 1) Source(1, 25) + SourceIndex(0) +2 >Emitted(7, 2) Source(1, 26) + SourceIndex(0) +--- +>>>//# sourceMappingURL=restParameterWithBindingPattern1.js.map \ No newline at end of file diff --git a/tests/baselines/reference/restParameterWithBindingPattern3.errors.txt b/tests/baselines/reference/restParameterWithBindingPattern3.errors.txt index ea6bda983d8..2ad62269f50 100644 --- a/tests/baselines/reference/restParameterWithBindingPattern3.errors.txt +++ b/tests/baselines/reference/restParameterWithBindingPattern3.errors.txt @@ -2,9 +2,12 @@ tests/cases/compiler/restParameterWithBindingPattern3.ts(1,16): error TS2322: Ty tests/cases/compiler/restParameterWithBindingPattern3.ts(1,23): error TS2322: Type 'true' is not assignable to type 'string'. tests/cases/compiler/restParameterWithBindingPattern3.ts(3,23): error TS1186: A rest element cannot have an initializer. tests/cases/compiler/restParameterWithBindingPattern3.ts(7,23): error TS2493: Tuple type '[boolean, string, number]' with length '3' cannot be assigned to tuple with length '4'. +tests/cases/compiler/restParameterWithBindingPattern3.ts(9,19): error TS2322: Type '1' is not assignable to type 'boolean'. +tests/cases/compiler/restParameterWithBindingPattern3.ts(9,29): error TS2322: Type 'true' is not assignable to type 'string'. +tests/cases/compiler/restParameterWithBindingPattern3.ts(9,48): error TS2566: A rest element cannot have a property name. -==== tests/cases/compiler/restParameterWithBindingPattern3.ts (4 errors) ==== +==== tests/cases/compiler/restParameterWithBindingPattern3.ts (7 errors) ==== function a(...[a = 1, b = true]: string[]) { } ~ !!! error TS2322: Type '1' is not assignable to type 'string'. @@ -19,4 +22,12 @@ tests/cases/compiler/restParameterWithBindingPattern3.ts(7,23): error TS2493: Tu function d(...[a, , , d]: [boolean, string, number]) { } ~ -!!! error TS2493: Tuple type '[boolean, string, number]' with length '3' cannot be assigned to tuple with length '4'. \ No newline at end of file +!!! error TS2493: Tuple type '[boolean, string, number]' with length '3' cannot be assigned to tuple with length '4'. + + function e(...{0: a = 1, 1: b = true, ...rest: rest}: [boolean, string, number]) { } + ~ +!!! error TS2322: Type '1' is not assignable to type 'boolean'. + ~ +!!! error TS2322: Type 'true' is not assignable to type 'string'. + ~~~~ +!!! error TS2566: A rest element cannot have a property name. \ No newline at end of file diff --git a/tests/baselines/reference/restParameterWithBindingPattern3.js b/tests/baselines/reference/restParameterWithBindingPattern3.js index da3531633b6..00342e7f741 100644 --- a/tests/baselines/reference/restParameterWithBindingPattern3.js +++ b/tests/baselines/reference/restParameterWithBindingPattern3.js @@ -5,9 +5,20 @@ function b(...[...foo = []]: string[]) { } function c(...{0: a, length, 3: d}: [boolean, string, number]) { } -function d(...[a, , , d]: [boolean, string, number]) { } +function d(...[a, , , d]: [boolean, string, number]) { } + +function e(...{0: a = 1, 1: b = true, ...rest: rest}: [boolean, string, number]) { } //// [restParameterWithBindingPattern3.js] +var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) + t[p[i]] = s[p[i]]; + return t; +}; function a() { var _a = []; for (var _i = 0; _i < arguments.length; _i++) { @@ -36,3 +47,10 @@ function d() { } var a = _a[0], d = _a[3]; } +function e() { + var _a = []; + for (var _i = 0; _i < arguments.length; _i++) { + _a[_i] = arguments[_i]; + } + var _b = _a[0], a = _b === void 0 ? 1 : _b, _c = _a[1], b = _c === void 0 ? true : _c, rest = __rest(_a, [0, 1]); +} diff --git a/tests/baselines/reference/restParameterWithBindingPattern3.symbols b/tests/baselines/reference/restParameterWithBindingPattern3.symbols index 2694c7327da..eecaba6d339 100644 --- a/tests/baselines/reference/restParameterWithBindingPattern3.symbols +++ b/tests/baselines/reference/restParameterWithBindingPattern3.symbols @@ -19,3 +19,9 @@ function d(...[a, , , d]: [boolean, string, number]) { } >a : Symbol(a, Decl(restParameterWithBindingPattern3.ts, 6, 15)) >d : Symbol(d, Decl(restParameterWithBindingPattern3.ts, 6, 21)) +function e(...{0: a = 1, 1: b = true, ...rest: rest}: [boolean, string, number]) { } +>e : Symbol(e, Decl(restParameterWithBindingPattern3.ts, 6, 56)) +>a : Symbol(a, Decl(restParameterWithBindingPattern3.ts, 8, 15)) +>b : Symbol(b, Decl(restParameterWithBindingPattern3.ts, 8, 24)) +>rest : Symbol(rest, Decl(restParameterWithBindingPattern3.ts, 8, 37)) + diff --git a/tests/baselines/reference/restParameterWithBindingPattern3.types b/tests/baselines/reference/restParameterWithBindingPattern3.types index 7ab8bdf621a..95a058dfe5c 100644 --- a/tests/baselines/reference/restParameterWithBindingPattern3.types +++ b/tests/baselines/reference/restParameterWithBindingPattern3.types @@ -24,3 +24,12 @@ function d(...[a, , , d]: [boolean, string, number]) { } > : undefined >d : any +function e(...{0: a = 1, 1: b = true, ...rest: rest}: [boolean, string, number]) { } +>e : (__0_0: boolean, __0_1: string, __0_2: number) => void +>a : boolean +>1 : 1 +>b : string +>true : true +>rest : any +>rest : { [n: number]: string | number | boolean; 2: number; length: 3; toString(): string; toLocaleString(): string; pop(): string | number | boolean; push(...items: (string | number | boolean)[]): number; concat(...items: ConcatArray[]): (string | number | boolean)[]; concat(...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; join(separator?: string): string; reverse(): (string | number | boolean)[]; shift(): string | number | boolean; slice(start?: number, end?: number): (string | number | boolean)[]; sort(compareFn?: (a: string | number | boolean, b: string | number | boolean) => number): [boolean, string, number]; splice(start: number, deleteCount?: number): (string | number | boolean)[]; splice(start: number, deleteCount: number, ...items: (string | number | boolean)[]): (string | number | boolean)[]; unshift(...items: (string | number | boolean)[]): number; indexOf(searchElement: string | number | boolean, fromIndex?: number): number; lastIndexOf(searchElement: string | number | boolean, fromIndex?: number): number; every(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => boolean, thisArg?: any): boolean; some(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => boolean, thisArg?: any): boolean; forEach(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => void, thisArg?: any): void; map(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => U, thisArg?: any): U[]; filter(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => value is S, thisArg?: any): S[]; filter(callbackfn: (value: string | number | boolean, index: number, array: (string | number | boolean)[]) => any, thisArg?: any): (string | number | boolean)[]; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduce(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: string | number | boolean, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => string | number | boolean, initialValue: string | number | boolean): string | number | boolean; reduceRight(callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; } + diff --git a/tests/cases/compiler/restParameterWithBindingPattern1.ts b/tests/cases/compiler/restParameterWithBindingPattern1.ts index 1004b047844..bd6a3b9bbda 100644 --- a/tests/cases/compiler/restParameterWithBindingPattern1.ts +++ b/tests/cases/compiler/restParameterWithBindingPattern1.ts @@ -1 +1,3 @@ +// @sourcemap: true + function a(...{a, b}) { } \ No newline at end of file diff --git a/tests/cases/compiler/restParameterWithBindingPattern3.ts b/tests/cases/compiler/restParameterWithBindingPattern3.ts index 93d0daae538..f0792354c40 100644 --- a/tests/cases/compiler/restParameterWithBindingPattern3.ts +++ b/tests/cases/compiler/restParameterWithBindingPattern3.ts @@ -4,4 +4,6 @@ function b(...[...foo = []]: string[]) { } function c(...{0: a, length, 3: d}: [boolean, string, number]) { } -function d(...[a, , , d]: [boolean, string, number]) { } \ No newline at end of file +function d(...[a, , , d]: [boolean, string, number]) { } + +function e(...{0: a = 1, 1: b = true, ...rest: rest}: [boolean, string, number]) { } \ No newline at end of file