Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ac20b46

Browse filesBrowse files
committed
Add rest tests
1 parent e3a08ed commit ac20b46
Copy full SHA for ac20b46

10 files changed

+122Lines changed: 122 additions & 0 deletions
Expand file treeCollapse file tree
Open diff view settings
Collapse file
+33Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// @target: es2015
2+
let o = { a: 1, b: 'no' }
3+
var { ...clone } = o;
4+
var { a, ...justB } = o;
5+
var { a, b: renamed, ...empty } = o;
6+
var { ['b']: renamed, ...justA } = o;
7+
var { 'b': renamed, ...justA } = o;
8+
var { b: { '0': n, '1': oooo }, ...justA } = o;
9+
10+
let o2 = { c: 'terrible idea?', d: 'yes' };
11+
var { d: renamed, ...d } = o2;
12+
13+
let nestedrest: { x: number, n1: { y: number, n2: { z: number, n3: { n4: number } } }, rest: number, restrest: number };
14+
var { x, n1: { y, n2: { z, n3: { ...nr } } }, ...restrest } = nestedrest;
15+
16+
let complex: { x: { ka, ki }, y: number };
17+
var { x: { ka, ...nested }, y: other, ...rest } = complex;
18+
({x: { ka, ...nested }, y: other, ...rest} = complex);
19+
var { x, ...fresh } = { x: 1, y: 2 };
20+
({ x, ...fresh } = { x: 1, y: 2 });
21+
22+
class Removable {
23+
private x: number;
24+
protected y: number;
25+
set z(value: number) { }
26+
get both(): number { return 12 }
27+
set both(value: number) { }
28+
m() { }
29+
removed: string;
30+
remainder: string;
31+
}
32+
var removable = new Removable();
33+
var { removed, ...removableRest } = removable;
Collapse file
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
let x;
2+
let ka;
3+
let nested;
4+
let other;
5+
let rest;
6+
let complex: { x: { ka, ki }, y: number };
7+
({x: { ka, ...nested }, y: other, ...rest} = complex);
Collapse file
+14Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// @target: es2015
2+
let array: { x: number, y: string }[];
3+
for (let { x, ...restOf } of array) {
4+
[x, restOf];
5+
}
6+
let xx: number;
7+
let rrestOff: { y: string };
8+
for ({ x: xx, ...rrestOff } of array ) {
9+
[xx, rrestOff];
10+
}
11+
for (const norest of array.map(a => ({ ...a, x: 'a string' }))) {
12+
[norest.x, norest.y];
13+
// x is now a string. who knows why.
14+
}
Collapse file
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
let o = { a: 1, b: 'no' };
2+
var { ...mustBeLast, a } = o;
3+
function stillMustBeLast({ ...mustBeLast, a }: { a: number, b: string }): void {
4+
}
5+
function generic<T extends { x, y }>(t: T) {
6+
let { x, ...rest } = t;
7+
return rest;
8+
}
Collapse file
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// @target: es2015
2+
function cloneAgain({ a, ...clone }: { a: number, b: string }): void {
3+
}
4+
5+
declare function suddenly(f: (a: { x: { z, ka }, y: string }) => void);
6+
suddenly(({ x: a, ...rest }) => rest.y);
7+
suddenly(({ x: { z = 12, ...nested }, ...rest } = { x: { z: 1, ka: 1 }, y: 'noo' }) => rest.y + nested.ka);
8+
Collapse file

‎…6/destructuring/restElementMustBeLast.ts‎ ‎…ance/types/rest/restElementMustBeLast.ts‎tests/cases/conformance/es6/destructuring/restElementMustBeLast.ts renamed to tests/cases/conformance/types/rest/restElementMustBeLast.ts tests/cases/conformance/es6/destructuring/restElementMustBeLast.ts renamed to tests/cases/conformance/types/rest/restElementMustBeLast.ts

Copy file name to clipboard
File renamed without changes.
Collapse file
+13Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/// <reference path='fourslash.ts'/>
2+
////interface Gen {
3+
//// x: number;
4+
//// parent: Gen;
5+
//// millenial: string;
6+
////}
7+
////let t: Gen;
8+
////var { x, ...rest } = t;
9+
////rest./*1*/x;
10+
goTo.marker('1');
11+
verify.memberListContains('parent', '(property) Gen.parent: Gen');
12+
verify.memberListContains('millenial', '(property) Gen.millenial: string');
13+
verify.memberListCount(2);
Collapse file
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/// <reference path='fourslash.ts'/>
2+
////interface Gen {
3+
//// x: number
4+
//// [|parent|]: Gen;
5+
//// millenial: string;
6+
////}
7+
////let t: Gen;
8+
////var { x, ...rest } = t;
9+
////rest.[|parent|];
10+
const ranges = test.ranges();
11+
verify.referencesOf(ranges[0], ranges);
12+
verify.referencesOf(ranges[1], ranges);
Collapse file
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
/// <reference path='fourslash.ts'/>
3+
////interface Gen {
4+
//// x: number;
5+
//// /*1*/parent: Gen;
6+
//// millenial: string;
7+
////}
8+
////let t: Gen;
9+
////var { x, ...rest } = t;
10+
////rest./*2*/parent;
11+
const ranges = test.ranges();
12+
verify.goToDefinition('2', [ '1' ]);
Collapse file
+15Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/// <reference path='fourslash.ts'/>
2+
////interface Gen {
3+
//// x: number;
4+
//// [|parent|]: Gen;
5+
//// millenial: string;
6+
////}
7+
////let t: Gen;
8+
////var { x, ...rest } = t;
9+
////rest.[|parent|];
10+
const ranges = test.ranges();
11+
verify.assertHasRanges(ranges);
12+
goTo.position(ranges[0].start);
13+
verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false, ranges);
14+
goTo.position(ranges[1].start);
15+
verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false, ranges);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.