mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 12:51:30 -05:00
Merge pull request #4598 from Microsoft/destructuringInitializers
Improved checking of destructuring with literal initializers
This commit is contained in:
@@ -2,8 +2,8 @@ function f0() {
|
||||
var [] = [1, "hello"];
|
||||
var [x] = [1, "hello"];
|
||||
var [x, y] = [1, "hello"];
|
||||
var [x, y, z] = [1, "hello"]; // Error
|
||||
var [,, z] = [0, 1, 2];
|
||||
var [x, y, z] = [1, "hello"];
|
||||
var [,, x] = [0, 1, 2];
|
||||
var x: number;
|
||||
var y: string;
|
||||
}
|
||||
@@ -19,14 +19,14 @@ function f1() {
|
||||
}
|
||||
|
||||
function f2() {
|
||||
var { } = { x: 5, y: "hello" };
|
||||
var { x } = { x: 5, y: "hello" };
|
||||
var { y } = { x: 5, y: "hello" };
|
||||
var { } = { x: 5, y: "hello" }; // Error, no x and y in target
|
||||
var { x } = { x: 5, y: "hello" }; // Error, no y in target
|
||||
var { y } = { x: 5, y: "hello" }; // Error, no x in target
|
||||
var { x, y } = { x: 5, y: "hello" };
|
||||
var x: number;
|
||||
var y: string;
|
||||
var { x: a } = { x: 5, y: "hello" };
|
||||
var { y: b } = { x: 5, y: "hello" };
|
||||
var { x: a } = { x: 5, y: "hello" }; // Error, no y in target
|
||||
var { y: b } = { x: 5, y: "hello" }; // Error, no x in target
|
||||
var { x: a, y: b } = { x: 5, y: "hello" };
|
||||
var a: number;
|
||||
var b: string;
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
// (arg: { x: any, y: any }) => void
|
||||
function f1({ x, y }) { }
|
||||
f1({ x: 1, y: 1 });
|
||||
|
||||
// (arg: { x: any, y?: number }) => void
|
||||
function f2({ x, y = 0 }) { }
|
||||
f2({ x: 1 });
|
||||
f2({ x: 1, y: 1 });
|
||||
|
||||
// (arg: { x?: number, y?: number }) => void
|
||||
function f3({ x = 0, y = 0 }) { }
|
||||
f3({});
|
||||
f3({ x: 1 });
|
||||
f3({ y: 1 });
|
||||
f3({ x: 1, y: 1 });
|
||||
|
||||
// (arg?: { x: number, y: number }) => void
|
||||
function f4({ x, y } = { x: 0, y: 0 }) { }
|
||||
f4();
|
||||
f4({ x: 1, y: 1 });
|
||||
|
||||
// (arg?: { x: number, y?: number }) => void
|
||||
function f5({ x, y = 0 } = { x: 0 }) { }
|
||||
f5();
|
||||
f5({ x: 1 });
|
||||
f5({ x: 1, y: 1 });
|
||||
|
||||
// (arg?: { x?: number, y?: number }) => void
|
||||
function f6({ x = 0, y = 0 } = {}) { }
|
||||
f6();
|
||||
f6({});
|
||||
f6({ x: 1 });
|
||||
f6({ y: 1 });
|
||||
f6({ x: 1, y: 1 });
|
||||
|
||||
// (arg?: { a: { x?: number, y?: number } }) => void
|
||||
function f7({ a: { x = 0, y = 0 } } = { a: {} }) { }
|
||||
f7();
|
||||
f7({ a: {} });
|
||||
f7({ a: { x: 1 } });
|
||||
f7({ a: { y: 1 } });
|
||||
f7({ a: { x: 1, y: 1 } });
|
||||
|
||||
// (arg: [any, any]) => void
|
||||
function g1([x, y]) { }
|
||||
g1([1, 1]);
|
||||
|
||||
// (arg: [number, number]) => void
|
||||
function g2([x = 0, y = 0]) { }
|
||||
g2([1, 1]);
|
||||
|
||||
// (arg?: [number, number]) => void
|
||||
function g3([x, y] = [0, 0]) { }
|
||||
g3();
|
||||
g3([1, 1]);
|
||||
|
||||
// (arg?: [number, number]) => void
|
||||
function g4([x, y = 0] = [0]) { }
|
||||
g4();
|
||||
g4([1, 1]);
|
||||
|
||||
// (arg?: [number, number]) => void
|
||||
function g5([x = 0, y = 0] = []) { }
|
||||
g5();
|
||||
g5([1, 1]);
|
||||
@@ -0,0 +1,33 @@
|
||||
// Missing properties
|
||||
function f1() {
|
||||
var { x, y } = {};
|
||||
var { x = 1, y } = {};
|
||||
var { x, y = 1 } = {};
|
||||
var { x = 1, y = 1 } = {};
|
||||
}
|
||||
|
||||
// Missing properties
|
||||
function f2() {
|
||||
var x: number, y: number;
|
||||
({ x, y } = {});
|
||||
({ x: x = 1, y } = {});
|
||||
({ x, y: y = 1 } = {});
|
||||
({ x: x = 1, y: y = 1 } = {});
|
||||
}
|
||||
|
||||
// Excess properties
|
||||
function f3() {
|
||||
var { } = { x: 0, y: 0 };
|
||||
var { x } = { x: 0, y: 0 };
|
||||
var { y } = { x: 0, y: 0 };
|
||||
var { x, y } = { x: 0, y: 0 };
|
||||
}
|
||||
|
||||
// Excess properties
|
||||
function f4() {
|
||||
var x: number, y: number;
|
||||
({ } = { x: 0, y: 0 });
|
||||
({ x } = { x: 0, y: 0 });
|
||||
({ y } = { x: 0, y: 0 });
|
||||
({ x, y } = { x: 0, y: 0 });
|
||||
}
|
||||
Reference in New Issue
Block a user