Skip to content

Commit dafe7c8

Browse files
Added tests.
1 parent bfe63cc commit dafe7c8

12 files changed

Lines changed: 172 additions & 0 deletions
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
tests/cases/conformance/es6/destructuring/optionalBindingParameters1.ts(8,5): error TS2345: Argument of type '[boolean, number, string]' is not assignable to parameter of type '[string, number, boolean]'.
2+
3+
4+
==== tests/cases/conformance/es6/destructuring/optionalBindingParameters1.ts (1 errors) ====
5+
6+
function foo([x,y,z]?: [string, number, boolean]) {
7+
8+
}
9+
10+
foo(["", 0, false]);
11+
12+
foo([false, 0, ""]);
13+
~~~~~~~~~~~~~~
14+
!!! error TS2345: Argument of type '[boolean, number, string]' is not assignable to parameter of type '[string, number, boolean]'.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//// [optionalBindingParameters1.ts]
2+
3+
function foo([x,y,z]?: [string, number, boolean]) {
4+
5+
}
6+
7+
foo(["", 0, false]);
8+
9+
foo([false, 0, ""]);
10+
11+
//// [optionalBindingParameters1.js]
12+
function foo(_a) {
13+
var x = _a[0], y = _a[1], z = _a[2];
14+
}
15+
foo(["", 0, false]);
16+
foo([false, 0, ""]);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
tests/cases/conformance/es6/destructuring/optionalBindingParameters2.ts(8,5): error TS2345: Argument of type '{ x: boolean; y: number; z: string; }' is not assignable to parameter of type '{ x: string; y: number; z: boolean; }'.
2+
Types of property 'x' are incompatible.
3+
Type 'boolean' is not assignable to type 'string'.
4+
5+
6+
==== tests/cases/conformance/es6/destructuring/optionalBindingParameters2.ts (1 errors) ====
7+
8+
function foo({ x, y, z }?: { x: string; y: number; z: boolean }) {
9+
10+
}
11+
12+
foo({ x: "", y: 0, z: false });
13+
14+
foo({ x: false, y: 0, z: "" });
15+
~~~~~~~~~~~~~~~~~~~~~~~~~
16+
!!! error TS2345: Argument of type '{ x: boolean; y: number; z: string; }' is not assignable to parameter of type '{ x: string; y: number; z: boolean; }'.
17+
!!! error TS2345: Types of property 'x' are incompatible.
18+
!!! error TS2345: Type 'boolean' is not assignable to type 'string'.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//// [optionalBindingParameters2.ts]
2+
3+
function foo({ x, y, z }?: { x: string; y: number; z: boolean }) {
4+
5+
}
6+
7+
foo({ x: "", y: 0, z: false });
8+
9+
foo({ x: false, y: 0, z: "" });
10+
11+
//// [optionalBindingParameters2.js]
12+
function foo(_a) {
13+
var x = _a.x, y = _a.y, z = _a.z;
14+
}
15+
foo({ x: "", y: 0, z: false });
16+
foo({ x: false, y: 0, z: "" });
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
tests/cases/conformance/es6/destructuring/optionalBindingParametersInOverloads1.ts(9,5): error TS2345: Argument of type '[boolean, number, string]' is not assignable to parameter of type '[string, number, boolean]'.
2+
3+
4+
==== tests/cases/conformance/es6/destructuring/optionalBindingParametersInOverloads1.ts (1 errors) ====
5+
6+
function foo([x, y, z] ?: [string, number, boolean]);
7+
function foo(...rest: any[]) {
8+
9+
}
10+
11+
foo(["", 0, false]);
12+
13+
foo([false, 0, ""]);
14+
~~~~~~~~~~~~~~
15+
!!! error TS2345: Argument of type '[boolean, number, string]' is not assignable to parameter of type '[string, number, boolean]'.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//// [optionalBindingParametersInOverloads1.ts]
2+
3+
function foo([x, y, z] ?: [string, number, boolean]);
4+
function foo(...rest: any[]) {
5+
6+
}
7+
8+
foo(["", 0, false]);
9+
10+
foo([false, 0, ""]);
11+
12+
//// [optionalBindingParametersInOverloads1.js]
13+
function foo() {
14+
var rest = [];
15+
for (var _i = 0; _i < arguments.length; _i++) {
16+
rest[_i - 0] = arguments[_i];
17+
}
18+
}
19+
foo(["", 0, false]);
20+
foo([false, 0, ""]);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
tests/cases/conformance/es6/destructuring/optionalBindingParametersInOverloads2.ts(9,5): error TS2345: Argument of type '{ x: boolean; y: number; z: string; }' is not assignable to parameter of type '{ x: string; y: number; z: boolean; }'.
2+
Types of property 'x' are incompatible.
3+
Type 'boolean' is not assignable to type 'string'.
4+
5+
6+
==== tests/cases/conformance/es6/destructuring/optionalBindingParametersInOverloads2.ts (1 errors) ====
7+
8+
function foo({ x, y, z }?: { x: string; y: number; z: boolean });
9+
function foo(...rest: any[]) {
10+
11+
}
12+
13+
foo({ x: "", y: 0, z: false });
14+
15+
foo({ x: false, y: 0, z: "" });
16+
~~~~~~~~~~~~~~~~~~~~~~~~~
17+
!!! error TS2345: Argument of type '{ x: boolean; y: number; z: string; }' is not assignable to parameter of type '{ x: string; y: number; z: boolean; }'.
18+
!!! error TS2345: Types of property 'x' are incompatible.
19+
!!! error TS2345: Type 'boolean' is not assignable to type 'string'.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//// [optionalBindingParametersInOverloads2.ts]
2+
3+
function foo({ x, y, z }?: { x: string; y: number; z: boolean });
4+
function foo(...rest: any[]) {
5+
6+
}
7+
8+
foo({ x: "", y: 0, z: false });
9+
10+
foo({ x: false, y: 0, z: "" });
11+
12+
//// [optionalBindingParametersInOverloads2.js]
13+
function foo() {
14+
var rest = [];
15+
for (var _i = 0; _i < arguments.length; _i++) {
16+
rest[_i - 0] = arguments[_i];
17+
}
18+
}
19+
foo({ x: "", y: 0, z: false });
20+
foo({ x: false, y: 0, z: "" });
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+

2+
function foo([x,y,z]?: [string, number, boolean]) {
3+
4+
}
5+
6+
foo(["", 0, false]);
7+
8+
foo([false, 0, ""]);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+

2+
function foo({ x, y, z }?: { x: string; y: number; z: boolean }) {
3+
4+
}
5+
6+
foo({ x: "", y: 0, z: false });
7+
8+
foo({ x: false, y: 0, z: "" });

0 commit comments

Comments
 (0)