Merge pull request #4657 from Microsoft/emptyVariableDeclarationBindingPattern
Fix emitted code for variable statement with no bound variables
This commit is contained in:
commit
96a815878c
|
@ -3210,22 +3210,32 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ensureIdentifier(expr: Expression): Expression {
|
/**
|
||||||
if (expr.kind !== SyntaxKind.Identifier) {
|
* Ensures that there exists a declared identifier whose value holds the given expression.
|
||||||
|
* This function is useful to ensure that the expression's value can be read from in subsequent expressions.
|
||||||
|
* Unless 'reuseIdentifierExpressions' is false, 'expr' will be returned if it is just an identifier.
|
||||||
|
*
|
||||||
|
* @param expr the expression whose value needs to be bound.
|
||||||
|
* @param reuseIdentifierExpressions true if identifier expressions can simply be returned;
|
||||||
|
* false if it is necessary to always emit an identifier.
|
||||||
|
*/
|
||||||
|
function ensureIdentifier(expr: Expression, reuseIdentifierExpressions: boolean): Expression {
|
||||||
|
if (expr.kind === SyntaxKind.Identifier && reuseIdentifierExpressions) {
|
||||||
|
return expr;
|
||||||
|
}
|
||||||
|
|
||||||
let identifier = createTempVariable(TempFlags.Auto);
|
let identifier = createTempVariable(TempFlags.Auto);
|
||||||
if (!canDefineTempVariablesInPlace) {
|
if (!canDefineTempVariablesInPlace) {
|
||||||
recordTempDeclaration(identifier);
|
recordTempDeclaration(identifier);
|
||||||
}
|
}
|
||||||
emitAssignment(identifier, expr);
|
emitAssignment(identifier, expr);
|
||||||
expr = identifier;
|
return identifier;
|
||||||
}
|
|
||||||
return expr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function createDefaultValueCheck(value: Expression, defaultValue: Expression): Expression {
|
function createDefaultValueCheck(value: Expression, defaultValue: Expression): Expression {
|
||||||
// The value expression will be evaluated twice, so for anything but a simple identifier
|
// The value expression will be evaluated twice, so for anything but a simple identifier
|
||||||
// we need to generate a temporary variable
|
// we need to generate a temporary variable
|
||||||
value = ensureIdentifier(value);
|
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||||
// Return the expression 'value === void 0 ? defaultValue : value'
|
// Return the expression 'value === void 0 ? defaultValue : value'
|
||||||
let equals = <BinaryExpression>createSynthesizedNode(SyntaxKind.BinaryExpression);
|
let equals = <BinaryExpression>createSynthesizedNode(SyntaxKind.BinaryExpression);
|
||||||
equals.left = value;
|
equals.left = value;
|
||||||
|
@ -3276,7 +3286,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||||
if (properties.length !== 1) {
|
if (properties.length !== 1) {
|
||||||
// For anything but a single element destructuring we need to generate a temporary
|
// For anything but a single element destructuring we need to generate a temporary
|
||||||
// to ensure value is evaluated exactly once.
|
// to ensure value is evaluated exactly once.
|
||||||
value = ensureIdentifier(value);
|
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||||
}
|
}
|
||||||
for (let p of properties) {
|
for (let p of properties) {
|
||||||
if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) {
|
if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) {
|
||||||
|
@ -3291,7 +3301,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||||
if (elements.length !== 1) {
|
if (elements.length !== 1) {
|
||||||
// For anything but a single element destructuring we need to generate a temporary
|
// For anything but a single element destructuring we need to generate a temporary
|
||||||
// to ensure value is evaluated exactly once.
|
// to ensure value is evaluated exactly once.
|
||||||
value = ensureIdentifier(value);
|
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||||
}
|
}
|
||||||
for (let i = 0; i < elements.length; i++) {
|
for (let i = 0; i < elements.length; i++) {
|
||||||
let e = elements[i];
|
let e = elements[i];
|
||||||
|
@ -3336,7 +3346,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||||
if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) {
|
if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) {
|
||||||
write("(");
|
write("(");
|
||||||
}
|
}
|
||||||
value = ensureIdentifier(value);
|
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||||
emitDestructuringAssignment(target, value);
|
emitDestructuringAssignment(target, value);
|
||||||
write(", ");
|
write(", ");
|
||||||
emit(value);
|
emit(value);
|
||||||
|
@ -3346,7 +3356,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function emitBindingElement(target: BindingElement, value: Expression) {
|
function emitBindingElement(target: BindingElement | VariableDeclaration, value: Expression) {
|
||||||
if (target.initializer) {
|
if (target.initializer) {
|
||||||
// Combine value and initializer
|
// Combine value and initializer
|
||||||
value = value ? createDefaultValueCheck(value, target.initializer) : target.initializer;
|
value = value ? createDefaultValueCheck(value, target.initializer) : target.initializer;
|
||||||
|
@ -3356,14 +3366,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||||
value = createVoidZero();
|
value = createVoidZero();
|
||||||
}
|
}
|
||||||
if (isBindingPattern(target.name)) {
|
if (isBindingPattern(target.name)) {
|
||||||
let pattern = <BindingPattern>target.name;
|
const pattern = <BindingPattern>target.name;
|
||||||
let elements = pattern.elements;
|
const elements = pattern.elements;
|
||||||
if (elements.length !== 1) {
|
const numElements = elements.length;
|
||||||
// For anything but a single element destructuring we need to generate a temporary
|
|
||||||
// to ensure value is evaluated exactly once.
|
if (numElements !== 1) {
|
||||||
value = ensureIdentifier(value);
|
// For anything other than a single-element destructuring we need to generate a temporary
|
||||||
|
// to ensure value is evaluated exactly once. Additionally, if we have zero elements
|
||||||
|
// we need to emit *something* to ensure that in case a 'var' keyword was already emitted,
|
||||||
|
// so in that case, we'll intentionally create that temporary.
|
||||||
|
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ numElements !== 0);
|
||||||
}
|
}
|
||||||
for (let i = 0; i < elements.length; i++) {
|
|
||||||
|
for (let i = 0; i < numElements; i++) {
|
||||||
let element = elements[i];
|
let element = elements[i];
|
||||||
if (pattern.kind === SyntaxKind.ObjectBindingPattern) {
|
if (pattern.kind === SyntaxKind.ObjectBindingPattern) {
|
||||||
// Rewrite element to a declaration with an initializer that fetches property
|
// Rewrite element to a declaration with an initializer that fetches property
|
||||||
|
@ -3375,7 +3390,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||||
// Rewrite element to a declaration that accesses array element at index i
|
// Rewrite element to a declaration that accesses array element at index i
|
||||||
emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i)));
|
emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i)));
|
||||||
}
|
}
|
||||||
else if (i === elements.length - 1) {
|
else if (i === numElements - 1) {
|
||||||
emitBindingElement(element, createSliceCall(value, i));
|
emitBindingElement(element, createSliceCall(value, i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyArrayBindingPatternParameter01.ts]
|
//// [emptyArrayBindingPatternParameter01.ts]
|
||||||
|
|
||||||
|
|
||||||
function f([]) {
|
function f([]) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -9,3 +8,7 @@ function f([]) {
|
||||||
function f(_a) {
|
function f(_a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyArrayBindingPatternParameter01.d.ts]
|
||||||
|
declare function f([]: any[]): void;
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f([]) {
|
function f([]) {
|
||||||
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter01.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter01.ts, 0, 0))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter01.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter01.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter01.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter01.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter01.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter01.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f([]) {
|
function f([]) {
|
||||||
>f : ([]: any[]) => void
|
>f : ([]: any[]) => void
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyArrayBindingPatternParameter02.ts]
|
//// [emptyArrayBindingPatternParameter02.ts]
|
||||||
|
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -9,3 +8,7 @@ function f(a, []) {
|
||||||
function f(a, _a) {
|
function f(a, _a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyArrayBindingPatternParameter02.d.ts]
|
||||||
|
declare function f(a: any, []: any[]): void;
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter02.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter02.ts, 0, 0))
|
||||||
>a : Symbol(a, Decl(emptyArrayBindingPatternParameter02.ts, 2, 11))
|
>a : Symbol(a, Decl(emptyArrayBindingPatternParameter02.ts, 1, 11))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter02.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter02.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter02.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter02.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter02.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter02.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
>f : (a: any, []: any[]) => void
|
>f : (a: any, []: any[]) => void
|
||||||
>a : any
|
>a : any
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyArrayBindingPatternParameter03.ts]
|
//// [emptyArrayBindingPatternParameter03.ts]
|
||||||
|
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -9,3 +8,7 @@ function f(a, []) {
|
||||||
function f(a, _a) {
|
function f(a, _a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyArrayBindingPatternParameter03.d.ts]
|
||||||
|
declare function f(a: any, []: any[]): void;
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter03.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter03.ts, 0, 0))
|
||||||
>a : Symbol(a, Decl(emptyArrayBindingPatternParameter03.ts, 2, 11))
|
>a : Symbol(a, Decl(emptyArrayBindingPatternParameter03.ts, 1, 11))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter03.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter03.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter03.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter03.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter03.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter03.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
>f : (a: any, []: any[]) => void
|
>f : (a: any, []: any[]) => void
|
||||||
>a : any
|
>a : any
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyArrayBindingPatternParameter04.ts]
|
//// [emptyArrayBindingPatternParameter04.ts]
|
||||||
|
|
||||||
|
|
||||||
function f([] = [1,2,3,4]) {
|
function f([] = [1,2,3,4]) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -10,3 +9,7 @@ function f(_a) {
|
||||||
var _a = [1, 2, 3, 4];
|
var _a = [1, 2, 3, 4];
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyArrayBindingPatternParameter04.d.ts]
|
||||||
|
declare function f([]?: number[]): void;
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f([] = [1,2,3,4]) {
|
function f([] = [1,2,3,4]) {
|
||||||
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter04.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter04.ts, 0, 0))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter04.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter04.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter04.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter04.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter04.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter04.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f([] = [1,2,3,4]) {
|
function f([] = [1,2,3,4]) {
|
||||||
>f : ([]?: number[]) => void
|
>f : ([]?: number[]) => void
|
||||||
>[1,2,3,4] : number[]
|
>[1,2,3,4] : number[]
|
||||||
|
|
|
@ -9,3 +9,7 @@ var a: any;
|
||||||
var a;
|
var a;
|
||||||
(a);
|
(a);
|
||||||
(a);
|
(a);
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns01_ES5.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
|
|
@ -9,3 +9,7 @@ var a: any;
|
||||||
var a;
|
var a;
|
||||||
({} = a);
|
({} = a);
|
||||||
([] = a);
|
([] = a);
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns01_ES6.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
|
|
@ -11,3 +11,8 @@ var a;
|
||||||
var x, y, z, a1, a2, a3;
|
var x, y, z, a1, a2, a3;
|
||||||
((x = a.x, y = a.y, z = a.z, a));
|
((x = a.x, y = a.y, z = a.z, a));
|
||||||
((a1 = a[0], a2 = a[1], a3 = a[2], a));
|
((a1 = a[0], a2 = a[1], a3 = a[2], a));
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns02_ES5.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
declare let x: any, y: any, z: any, a1: any, a2: any, a3: any;
|
||||||
|
|
|
@ -11,3 +11,8 @@ var a;
|
||||||
let x, y, z, a1, a2, a3;
|
let x, y, z, a1, a2, a3;
|
||||||
({} = { x, y, z } = a);
|
({} = { x, y, z } = a);
|
||||||
([] = [a1, a2, a3] = a);
|
([] = [a1, a2, a3] = a);
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns02_ES6.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
declare let x: any, y: any, z: any, a1: any, a2: any, a3: any;
|
||||||
|
|
|
@ -9,3 +9,7 @@ var a: any;
|
||||||
var a;
|
var a;
|
||||||
(a);
|
(a);
|
||||||
(a);
|
(a);
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns03_ES5.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
|
|
@ -9,3 +9,7 @@ var a: any;
|
||||||
var a;
|
var a;
|
||||||
({} = {} = a);
|
({} = {} = a);
|
||||||
([] = [] = a);
|
([] = [] = a);
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns03_ES6.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
|
|
@ -12,3 +12,8 @@ var x, y, z, a1, a2, a3;
|
||||||
(_a = a, x = _a.x, y = _a.y, z = _a.z, _a);
|
(_a = a, x = _a.x, y = _a.y, z = _a.z, _a);
|
||||||
(_b = a, a1 = _b[0], a2 = _b[1], a3 = _b[2], _b);
|
(_b = a, a1 = _b[0], a2 = _b[1], a3 = _b[2], _b);
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns04_ES5.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
declare let x: any, y: any, z: any, a1: any, a2: any, a3: any;
|
||||||
|
|
|
@ -11,3 +11,8 @@ var a;
|
||||||
let x, y, z, a1, a2, a3;
|
let x, y, z, a1, a2, a3;
|
||||||
({ x, y, z } = {} = a);
|
({ x, y, z } = {} = a);
|
||||||
([a1, a2, a3] = [] = a);
|
([a1, a2, a3] = [] = a);
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyAssignmentPatterns04_ES6.d.ts]
|
||||||
|
declare var a: any;
|
||||||
|
declare let x: any, y: any, z: any, a1: any, a2: any, a3: any;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyObjectBindingPatternParameter01.ts]
|
//// [emptyObjectBindingPatternParameter01.ts]
|
||||||
|
|
||||||
|
|
||||||
function f({}) {
|
function f({}) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -9,3 +8,7 @@ function f({}) {
|
||||||
function f(_a) {
|
function f(_a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyObjectBindingPatternParameter01.d.ts]
|
||||||
|
declare function f({}: {}): void;
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f({}) {
|
function f({}) {
|
||||||
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter01.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter01.ts, 0, 0))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter01.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter01.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter01.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter01.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter01.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter01.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f({}) {
|
function f({}) {
|
||||||
>f : ({}: {}) => void
|
>f : ({}: {}) => void
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyObjectBindingPatternParameter02.ts]
|
//// [emptyObjectBindingPatternParameter02.ts]
|
||||||
|
|
||||||
|
|
||||||
function f(a, {}) {
|
function f(a, {}) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -9,3 +8,7 @@ function f(a, {}) {
|
||||||
function f(a, _a) {
|
function f(a, _a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyObjectBindingPatternParameter02.d.ts]
|
||||||
|
declare function f(a: any, {}: {}): void;
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f(a, {}) {
|
function f(a, {}) {
|
||||||
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter02.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter02.ts, 0, 0))
|
||||||
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter02.ts, 2, 11))
|
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter02.ts, 1, 11))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter02.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter02.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter02.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter02.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter02.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter02.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f(a, {}) {
|
function f(a, {}) {
|
||||||
>f : (a: any, {}: {}) => void
|
>f : (a: any, {}: {}) => void
|
||||||
>a : any
|
>a : any
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyObjectBindingPatternParameter03.ts]
|
//// [emptyObjectBindingPatternParameter03.ts]
|
||||||
|
|
||||||
|
|
||||||
function f({}, a) {
|
function f({}, a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -9,3 +8,7 @@ function f({}, a) {
|
||||||
function f(_a, a) {
|
function f(_a, a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyObjectBindingPatternParameter03.d.ts]
|
||||||
|
declare function f({}: {}, a: any): void;
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f({}, a) {
|
function f({}, a) {
|
||||||
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter03.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter03.ts, 0, 0))
|
||||||
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter03.ts, 2, 14))
|
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter03.ts, 1, 14))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter03.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter03.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter03.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter03.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter03.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter03.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f({}, a) {
|
function f({}, a) {
|
||||||
>f : ({}: {}, a: any) => void
|
>f : ({}: {}, a: any) => void
|
||||||
>a : any
|
>a : any
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//// [emptyObjectBindingPatternParameter04.ts]
|
//// [emptyObjectBindingPatternParameter04.ts]
|
||||||
|
|
||||||
|
|
||||||
function f({} = {a: 1, b: "2", c: true}) {
|
function f({} = {a: 1, b: "2", c: true}) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
@ -10,3 +9,11 @@ function f(_a) {
|
||||||
var _a = { a: 1, b: "2", c: true };
|
var _a = { a: 1, b: "2", c: true };
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyObjectBindingPatternParameter04.d.ts]
|
||||||
|
declare function f({}?: {
|
||||||
|
a: number;
|
||||||
|
b: string;
|
||||||
|
c: boolean;
|
||||||
|
}): void;
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f({} = {a: 1, b: "2", c: true}) {
|
function f({} = {a: 1, b: "2", c: true}) {
|
||||||
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter04.ts, 0, 0))
|
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter04.ts, 0, 0))
|
||||||
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter04.ts, 2, 17))
|
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter04.ts, 1, 17))
|
||||||
>b : Symbol(b, Decl(emptyObjectBindingPatternParameter04.ts, 2, 22))
|
>b : Symbol(b, Decl(emptyObjectBindingPatternParameter04.ts, 1, 22))
|
||||||
>c : Symbol(c, Decl(emptyObjectBindingPatternParameter04.ts, 2, 30))
|
>c : Symbol(c, Decl(emptyObjectBindingPatternParameter04.ts, 1, 30))
|
||||||
|
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter04.ts, 3, 7))
|
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter04.ts, 2, 7))
|
||||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter04.ts, 3, 10))
|
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter04.ts, 2, 10))
|
||||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter04.ts, 3, 13))
|
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter04.ts, 2, 13))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts ===
|
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts ===
|
||||||
|
|
||||||
|
|
||||||
function f({} = {a: 1, b: "2", c: true}) {
|
function f({} = {a: 1, b: "2", c: true}) {
|
||||||
>f : ({}?: { a: number; b: string; c: boolean; }) => void
|
>f : ({}?: { a: number; b: string; c: boolean; }) => void
|
||||||
>{a: 1, b: "2", c: true} : { a: number; b: string; c: boolean; }
|
>{a: 1, b: "2", c: true} : { a: number; b: string; c: boolean; }
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns01_ES5.ts]
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var a: any;
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
let {} = a;
|
||||||
|
const {} = a;
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
let [] = a;
|
||||||
|
const [] = a;
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
let {} = a, [] = a;
|
||||||
|
const {} = a, [] = a;
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const ns: number[][] = [];
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns01_ES5.js]
|
||||||
|
(function () {
|
||||||
|
var a;
|
||||||
|
var _a = a;
|
||||||
|
var _b = a;
|
||||||
|
var _c = a;
|
||||||
|
var _d = a;
|
||||||
|
var _e = a;
|
||||||
|
var _f = a;
|
||||||
|
var _g = a, _h = a;
|
||||||
|
var _j = a, _k = a;
|
||||||
|
var _l = a, _m = a;
|
||||||
|
var _o = a.p1, _p = a.p2;
|
||||||
|
var _q = a.p1, _r = a.p2;
|
||||||
|
var _s = a.p1, _t = a.p2;
|
||||||
|
for (var _u = {}, _v = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
function f(_a, _b, _c) {
|
||||||
|
var _a = a;
|
||||||
|
var _b = a;
|
||||||
|
var _d = (_c === void 0 ? a : _c).p, _e = _d === void 0 ? a : _d;
|
||||||
|
return function (_a, _b, _c) {
|
||||||
|
var _a = a;
|
||||||
|
var _b = a;
|
||||||
|
var _d = (_c === void 0 ? a : _c).p, _e = _d === void 0 ? a : _d;
|
||||||
|
return a;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
(function () {
|
||||||
|
var ns = [];
|
||||||
|
for (var _i = 0; _i < ns.length; _i++) {
|
||||||
|
var _a = ns[_i];
|
||||||
|
}
|
||||||
|
for (var _b = 0; _b < ns.length; _b++) {
|
||||||
|
var _c = ns[_b];
|
||||||
|
}
|
||||||
|
for (var _d = 0; _d < ns.length; _d++) {
|
||||||
|
var _e = ns[_d];
|
||||||
|
}
|
||||||
|
for (var _f = 0; _f < ns.length; _f++) {
|
||||||
|
var _g = ns[_f];
|
||||||
|
}
|
||||||
|
for (var _h = 0; _h < ns.length; _h++) {
|
||||||
|
var _j = ns[_h];
|
||||||
|
}
|
||||||
|
for (var _k = 0; _k < ns.length; _k++) {
|
||||||
|
var _l = ns[_k];
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,92 @@
|
||||||
|
=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts ===
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var a: any;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
let {} = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
const {} = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
let [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
const [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
let {} = a, [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
const {} = a, [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
>f : Symbol(f, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 21, 5))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 2, 7))
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const ns: number[][] = [];
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9))
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES5.ts, 29, 9))
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,115 @@
|
||||||
|
=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES5.ts ===
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }})() : void
|
||||||
|
>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }}) : () => void
|
||||||
|
>function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }} : () => void
|
||||||
|
|
||||||
|
var a: any;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let {} = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const {} = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let [] = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const [] = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let {} = a, [] = a;
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const {} = a, [] = a;
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
>p1 : any
|
||||||
|
>p2 : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
>p1 : any
|
||||||
|
>p2 : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
>p1 : any
|
||||||
|
>p2 : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
>{} : {}
|
||||||
|
>{} : {}
|
||||||
|
>false : boolean
|
||||||
|
>void 0 : undefined
|
||||||
|
>0 : number
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
>f : ({}?: any, []?: any, { p: {} = a}?: any) => ({}?: any, []?: any, { p: {} = a }?: any) => any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
>p : any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
>({} = a, [] = a, { p: {} = a } = a) => a : ({}?: any, []?: any, { p: {} = a }?: any) => any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
>p : any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }})() : void
|
||||||
|
>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }}) : () => void
|
||||||
|
>function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }} : () => void
|
||||||
|
|
||||||
|
const ns: number[][] = [];
|
||||||
|
>ns : number[][]
|
||||||
|
>[] : undefined[]
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,87 @@
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns01_ES6.ts]
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var a: any;
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
let {} = a;
|
||||||
|
const {} = a;
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
let [] = a;
|
||||||
|
const [] = a;
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
let {} = a, [] = a;
|
||||||
|
const {} = a, [] = a;
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const ns: number[][] = [];
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns01_ES6.js]
|
||||||
|
(function () {
|
||||||
|
var a;
|
||||||
|
var { } = a;
|
||||||
|
let { } = a;
|
||||||
|
const { } = a;
|
||||||
|
var [] = a;
|
||||||
|
let [] = a;
|
||||||
|
const [] = a;
|
||||||
|
var { } = a, [] = a;
|
||||||
|
let { } = a, [] = a;
|
||||||
|
const { } = a, [] = a;
|
||||||
|
var { p1: { }, p2: [] } = a;
|
||||||
|
let { p1: { }, p2: [] } = a;
|
||||||
|
const { p1: { }, p2: [] } = a;
|
||||||
|
for (var { } = {}, { } = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
function f({ } = a, [] = a, { p: { } = a } = a) {
|
||||||
|
return ({ } = a, [] = a, { p: { } = a } = a) => a;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
(function () {
|
||||||
|
const ns = [];
|
||||||
|
for (var { } of ns) {
|
||||||
|
}
|
||||||
|
for (let { } of ns) {
|
||||||
|
}
|
||||||
|
for (const { } of ns) {
|
||||||
|
}
|
||||||
|
for (var [] of ns) {
|
||||||
|
}
|
||||||
|
for (let [] of ns) {
|
||||||
|
}
|
||||||
|
for (const [] of ns) {
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,92 @@
|
||||||
|
=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts ===
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var a: any;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
let {} = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
const {} = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
let [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
const [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
let {} = a, [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
const {} = a, [] = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
>f : Symbol(f, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 21, 5))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
>a : Symbol(a, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 2, 7))
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const ns: number[][] = [];
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9))
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
>ns : Symbol(ns, Decl(emptyVariableDeclarationBindingPatterns01_ES6.ts, 29, 9))
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,115 @@
|
||||||
|
=== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns01_ES6.ts ===
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }})() : void
|
||||||
|
>(function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }}) : () => void
|
||||||
|
>function () { var a: any; var {} = a; let {} = a; const {} = a; var [] = a; let [] = a; const [] = a; var {} = a, [] = a; let {} = a, [] = a; const {} = a, [] = a; var { p1: {}, p2: [] } = a; let { p1: {}, p2: [] } = a; const { p1: {}, p2: [] } = a; for (var {} = {}, {} = {}; false; void 0) { } function f({} = a, [] = a, { p: {} = a} = a) { return ({} = a, [] = a, { p: {} = a } = a) => a; }} : () => void
|
||||||
|
|
||||||
|
var a: any;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let {} = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const {} = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let [] = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const [] = a;
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let {} = a, [] = a;
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const {} = a, [] = a;
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
>p1 : any
|
||||||
|
>p2 : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
>p1 : any
|
||||||
|
>p2 : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
>p1 : any
|
||||||
|
>p2 : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
>{} : {}
|
||||||
|
>{} : {}
|
||||||
|
>false : boolean
|
||||||
|
>void 0 : undefined
|
||||||
|
>0 : number
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
>f : ({}?: any, []?: any, { p: {} = a}?: any) => ({}?: any, []?: any, { p: {} = a }?: any) => any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
>p : any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
>({} = a, [] = a, { p: {} = a } = a) => a : ({}?: any, []?: any, { p: {} = a }?: any) => any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
>p : any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
>a : any
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }})() : void
|
||||||
|
>(function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }}) : () => void
|
||||||
|
>function () { const ns: number[][] = []; for (var {} of ns) { } for (let {} of ns) { } for (const {} of ns) { } for (var [] of ns) { } for (let [] of ns) { } for (const [] of ns) { }} : () => void
|
||||||
|
|
||||||
|
const ns: number[][] = [];
|
||||||
|
>ns : number[][]
|
||||||
|
>[] : undefined[]
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
>ns : number[][]
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,31 @@
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(3,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(4,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(5,11): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(7,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(8,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts(9,11): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
|
||||||
|
|
||||||
|
==== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES5.ts (6 errors) ====
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var {};
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
let {};
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
const {};
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
|
||||||
|
var [];
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
let [];
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
const [];
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
})();
|
|
@ -0,0 +1,24 @@
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns02_ES5.ts]
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var {};
|
||||||
|
let {};
|
||||||
|
const {};
|
||||||
|
|
||||||
|
var [];
|
||||||
|
let [];
|
||||||
|
const [];
|
||||||
|
})();
|
||||||
|
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns02_ES5.js]
|
||||||
|
(function () {
|
||||||
|
var _a = void 0;
|
||||||
|
var _b = void 0;
|
||||||
|
var _c = void 0;
|
||||||
|
var _d = void 0;
|
||||||
|
var _e = void 0;
|
||||||
|
var _f = void 0;
|
||||||
|
})();
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns02_ES5.d.ts]
|
|
@ -0,0 +1,31 @@
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(3,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(4,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(5,11): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(7,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(8,9): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts(9,11): error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
|
||||||
|
|
||||||
|
==== tests/cases/conformance/es6/destructuring/emptyVariableDeclarationBindingPatterns02_ES6.ts (6 errors) ====
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var {};
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
let {};
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
const {};
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
|
||||||
|
var [];
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
let [];
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
const [];
|
||||||
|
~~
|
||||||
|
!!! error TS1182: A destructuring declaration must have an initializer.
|
||||||
|
})();
|
|
@ -0,0 +1,24 @@
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns02_ES6.ts]
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var {};
|
||||||
|
let {};
|
||||||
|
const {};
|
||||||
|
|
||||||
|
var [];
|
||||||
|
let [];
|
||||||
|
const [];
|
||||||
|
})();
|
||||||
|
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns02_ES6.js]
|
||||||
|
(function () {
|
||||||
|
var { };
|
||||||
|
let { };
|
||||||
|
const { };
|
||||||
|
var [];
|
||||||
|
let [];
|
||||||
|
const [];
|
||||||
|
})();
|
||||||
|
|
||||||
|
|
||||||
|
//// [emptyVariableDeclarationBindingPatterns02_ES6.d.ts]
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f([]) {
|
function f([]) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f(a, []) {
|
function f(a, []) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f([] = [1,2,3,4]) {
|
function f([] = [1,2,3,4]) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es5
|
// @target: es5
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es6
|
// @target: es6
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es5
|
// @target: es5
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
let x, y, z, a1, a2, a3;
|
let x, y, z, a1, a2, a3;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es6
|
// @target: es6
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
let x, y, z, a1, a2, a3;
|
let x, y, z, a1, a2, a3;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es5
|
// @target: es5
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es6
|
// @target: es6
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es5
|
// @target: es5
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
let x, y, z, a1, a2, a3;
|
let x, y, z, a1, a2, a3;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// @target: es6
|
// @target: es6
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
var a: any;
|
var a: any;
|
||||||
let x, y, z, a1, a2, a3;
|
let x, y, z, a1, a2, a3;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f({}) {
|
function f({}) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f(a, {}) {
|
function f(a, {}) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f({}, a) {
|
function f({}, a) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
function f({} = {a: 1, b: "2", c: true}) {
|
function f({} = {a: 1, b: "2", c: true}) {
|
||||||
var x, y, z;
|
var x, y, z;
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
// @target: es5
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var a: any;
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
let {} = a;
|
||||||
|
const {} = a;
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
let [] = a;
|
||||||
|
const [] = a;
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
let {} = a, [] = a;
|
||||||
|
const {} = a, [] = a;
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const ns: number[][] = [];
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,50 @@
|
||||||
|
// @target: es6
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var a: any;
|
||||||
|
|
||||||
|
var {} = a;
|
||||||
|
let {} = a;
|
||||||
|
const {} = a;
|
||||||
|
|
||||||
|
var [] = a;
|
||||||
|
let [] = a;
|
||||||
|
const [] = a;
|
||||||
|
|
||||||
|
var {} = a, [] = a;
|
||||||
|
let {} = a, [] = a;
|
||||||
|
const {} = a, [] = a;
|
||||||
|
|
||||||
|
var { p1: {}, p2: [] } = a;
|
||||||
|
let { p1: {}, p2: [] } = a;
|
||||||
|
const { p1: {}, p2: [] } = a;
|
||||||
|
|
||||||
|
for (var {} = {}, {} = {}; false; void 0) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function f({} = a, [] = a, { p: {} = a} = a) {
|
||||||
|
return ({} = a, [] = a, { p: {} = a } = a) => a;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
const ns: number[][] = [];
|
||||||
|
|
||||||
|
for (var {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const {} of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let [] of ns) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const [] of ns) {
|
||||||
|
}
|
||||||
|
})();
|
|
@ -0,0 +1,12 @@
|
||||||
|
// @target: es5
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var {};
|
||||||
|
let {};
|
||||||
|
const {};
|
||||||
|
|
||||||
|
var [];
|
||||||
|
let [];
|
||||||
|
const [];
|
||||||
|
})();
|
|
@ -0,0 +1,12 @@
|
||||||
|
// @target: es6
|
||||||
|
// @declaration: true
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var {};
|
||||||
|
let {};
|
||||||
|
const {};
|
||||||
|
|
||||||
|
var [];
|
||||||
|
let [];
|
||||||
|
const [];
|
||||||
|
})();
|
Loading…
Reference in a new issue