-
Notifications
You must be signed in to change notification settings - Fork 12.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding test for excess/missing properties
- Loading branch information
1 parent
f801420
commit 31f8a81
Showing
3 changed files
with
187 additions
and
0 deletions.
There are no files selected for viewing
85 changes: 85 additions & 0 deletions
85
tests/baselines/reference/missingAndExcessProperties.errors.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(3,11): error TS2459: Type '{}' has no property 'x' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(3,14): error TS2459: Type '{}' has no property 'y' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(4,18): error TS2459: Type '{ x?: number; }' has no property 'y' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(5,11): error TS2459: Type '{ y?: number; }' has no property 'x' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(12,8): error TS2459: Type '{}' has no property 'x' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(12,11): error TS2459: Type '{}' has no property 'y' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(13,18): error TS2459: Type '{ x?: number; }' has no property 'y' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(14,8): error TS2459: Type '{ y?: number; }' has no property 'x' and no string index signature. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(20,17): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(20,23): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(21,25): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(22,19): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(29,14): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(29,20): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(30,22): error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: number; }'. | ||
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts(31,16): error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: number; }'. | ||
|
||
|
||
==== tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts (16 errors) ==== | ||
// Missing properties | ||
function f1() { | ||
var { x, y } = {}; | ||
~ | ||
!!! error TS2459: Type '{}' has no property 'x' and no string index signature. | ||
~ | ||
!!! error TS2459: Type '{}' has no property 'y' and no string index signature. | ||
var { x = 1, y } = {}; | ||
~ | ||
!!! error TS2459: Type '{ x?: number; }' has no property 'y' and no string index signature. | ||
var { x, y = 1 } = {}; | ||
~ | ||
!!! error TS2459: Type '{ y?: number; }' has no property 'x' and no string index signature. | ||
var { x = 1, y = 1 } = {}; | ||
} | ||
|
||
// Missing properties | ||
function f2() { | ||
var x: number, y: number; | ||
({ x, y } = {}); | ||
~ | ||
!!! error TS2459: Type '{}' has no property 'x' and no string index signature. | ||
~ | ||
!!! error TS2459: Type '{}' has no property 'y' and no string index signature. | ||
({ x: x = 1, y } = {}); | ||
~ | ||
!!! error TS2459: Type '{ x?: number; }' has no property 'y' and no string index signature. | ||
({ x, y: y = 1 } = {}); | ||
~ | ||
!!! error TS2459: Type '{ y?: number; }' has no property 'x' and no string index signature. | ||
({ x: x = 1, y: y = 1 } = {}); | ||
} | ||
|
||
// Excess properties | ||
function f3() { | ||
var { } = { x: 0, y: 0 }; | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. | ||
var { x } = { x: 0, y: 0 }; | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: any; }'. | ||
var { y } = { x: 0, y: 0 }; | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: any; }'. | ||
var { x, y } = { x: 0, y: 0 }; | ||
} | ||
|
||
// Excess properties | ||
function f4() { | ||
var x: number, y: number; | ||
({ } = { x: 0, y: 0 }); | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{}'. | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{}'. | ||
({ x } = { x: 0, y: 0 }); | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'y' does not exist in type '{ x: number; }'. | ||
({ y } = { x: 0, y: 0 }); | ||
~ | ||
!!! error TS2353: Object literal may only specify known properties, and 'x' does not exist in type '{ y: number; }'. | ||
({ x, y } = { x: 0, y: 0 }); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
//// [missingAndExcessProperties.ts] | ||
// 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 }); | ||
} | ||
|
||
|
||
//// [missingAndExcessProperties.js] | ||
// Missing properties | ||
function f1() { | ||
var _a = {}, x = _a.x, y = _a.y; | ||
var _b = {}, _c = _b.x, x = _c === void 0 ? 1 : _c, y = _b.y; | ||
var _d = {}, x = _d.x, _e = _d.y, y = _e === void 0 ? 1 : _e; | ||
var _f = {}, _g = _f.x, x = _g === void 0 ? 1 : _g, _h = _f.y, y = _h === void 0 ? 1 : _h; | ||
} | ||
// Missing properties | ||
function f2() { | ||
var x, y; | ||
(_a = {}, x = _a.x, y = _a.y, _a); | ||
(_b = {}, _c = _b.x, x = _c === void 0 ? 1 : _c, y = _b.y, _b); | ||
(_d = {}, x = _d.x, _e = _d.y, y = _e === void 0 ? 1 : _e, _d); | ||
(_f = {}, _g = _f.x, x = _g === void 0 ? 1 : _g, _h = _f.y, y = _h === void 0 ? 1 : _h, _f); | ||
var _a, _b, _c, _d, _e, _f, _g, _h; | ||
} | ||
// Excess properties | ||
function f3() { | ||
var _a = { x: 0, y: 0 }; | ||
var x = { x: 0, y: 0 }.x; | ||
var y = { x: 0, y: 0 }.y; | ||
var _b = { x: 0, y: 0 }, x = _b.x, y = _b.y; | ||
} | ||
// Excess properties | ||
function f4() { | ||
var x, y; | ||
({ x: 0, y: 0 }); | ||
(_a = { x: 0, y: 0 }, x = _a.x, _a); | ||
(_b = { x: 0, y: 0 }, y = _b.y, _b); | ||
(_c = { x: 0, y: 0 }, x = _c.x, y = _c.y, _c); | ||
var _a, _b, _c; | ||
} |
33 changes: 33 additions & 0 deletions
33
tests/cases/conformance/es6/destructuring/missingAndExcessProperties.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 }); | ||
} |
31f8a81
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably good to add a test where you use the suppressExcessPropertyErrors flag.