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) {
|
||||
let identifier = createTempVariable(TempFlags.Auto);
|
||||
if (!canDefineTempVariablesInPlace) {
|
||||
recordTempDeclaration(identifier);
|
||||
}
|
||||
emitAssignment(identifier, expr);
|
||||
expr = 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;
|
||||
}
|
||||
return expr;
|
||||
|
||||
let identifier = createTempVariable(TempFlags.Auto);
|
||||
if (!canDefineTempVariablesInPlace) {
|
||||
recordTempDeclaration(identifier);
|
||||
}
|
||||
emitAssignment(identifier, expr);
|
||||
return identifier;
|
||||
}
|
||||
|
||||
function createDefaultValueCheck(value: Expression, defaultValue: Expression): Expression {
|
||||
// The value expression will be evaluated twice, so for anything but a simple identifier
|
||||
// we need to generate a temporary variable
|
||||
value = ensureIdentifier(value);
|
||||
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||
// Return the expression 'value === void 0 ? defaultValue : value'
|
||||
let equals = <BinaryExpression>createSynthesizedNode(SyntaxKind.BinaryExpression);
|
||||
equals.left = value;
|
||||
|
@ -3276,7 +3286,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
|||
if (properties.length !== 1) {
|
||||
// For anything but a single element destructuring we need to generate a temporary
|
||||
// to ensure value is evaluated exactly once.
|
||||
value = ensureIdentifier(value);
|
||||
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||
}
|
||||
for (let p of properties) {
|
||||
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) {
|
||||
// For anything but a single element destructuring we need to generate a temporary
|
||||
// to ensure value is evaluated exactly once.
|
||||
value = ensureIdentifier(value);
|
||||
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||
}
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
let e = elements[i];
|
||||
|
@ -3336,7 +3346,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
|||
if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) {
|
||||
write("(");
|
||||
}
|
||||
value = ensureIdentifier(value);
|
||||
value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true);
|
||||
emitDestructuringAssignment(target, value);
|
||||
write(", ");
|
||||
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) {
|
||||
// Combine value and initializer
|
||||
value = value ? createDefaultValueCheck(value, target.initializer) : target.initializer;
|
||||
|
@ -3356,14 +3366,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
|||
value = createVoidZero();
|
||||
}
|
||||
if (isBindingPattern(target.name)) {
|
||||
let pattern = <BindingPattern>target.name;
|
||||
let elements = pattern.elements;
|
||||
if (elements.length !== 1) {
|
||||
// For anything but a single element destructuring we need to generate a temporary
|
||||
// to ensure value is evaluated exactly once.
|
||||
value = ensureIdentifier(value);
|
||||
const pattern = <BindingPattern>target.name;
|
||||
const elements = pattern.elements;
|
||||
const numElements = elements.length;
|
||||
|
||||
if (numElements !== 1) {
|
||||
// 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];
|
||||
if (pattern.kind === SyntaxKind.ObjectBindingPattern) {
|
||||
// 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
|
||||
emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i)));
|
||||
}
|
||||
else if (i === elements.length - 1) {
|
||||
else if (i === numElements - 1) {
|
||||
emitBindingElement(element, createSliceCall(value, i));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//// [emptyArrayBindingPatternParameter01.ts]
|
||||
|
||||
|
||||
function f([]) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -9,3 +8,7 @@ function f([]) {
|
|||
function f(_a) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
||||
|
||||
//// [emptyArrayBindingPatternParameter01.d.ts]
|
||||
declare function f([]: any[]): void;
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts ===
|
||||
|
||||
|
||||
function f([]) {
|
||||
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter01.ts, 0, 0))
|
||||
|
||||
var x, y, z;
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter01.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter01.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter01.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter01.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter01.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter01.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter01.ts ===
|
||||
|
||||
|
||||
function f([]) {
|
||||
>f : ([]: any[]) => void
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//// [emptyArrayBindingPatternParameter02.ts]
|
||||
|
||||
|
||||
function f(a, []) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -9,3 +8,7 @@ function f(a, []) {
|
|||
function f(a, _a) {
|
||||
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 ===
|
||||
|
||||
|
||||
function f(a, []) {
|
||||
>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;
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter02.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter02.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter02.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter02.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter02.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter02.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter02.ts ===
|
||||
|
||||
|
||||
function f(a, []) {
|
||||
>f : (a: any, []: any[]) => void
|
||||
>a : any
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//// [emptyArrayBindingPatternParameter03.ts]
|
||||
|
||||
|
||||
function f(a, []) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -9,3 +8,7 @@ function f(a, []) {
|
|||
function f(a, _a) {
|
||||
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 ===
|
||||
|
||||
|
||||
function f(a, []) {
|
||||
>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;
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter03.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter03.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter03.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter03.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter03.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter03.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter03.ts ===
|
||||
|
||||
|
||||
function f(a, []) {
|
||||
>f : (a: any, []: any[]) => void
|
||||
>a : any
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//// [emptyArrayBindingPatternParameter04.ts]
|
||||
|
||||
|
||||
function f([] = [1,2,3,4]) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -10,3 +9,7 @@ function f(_a) {
|
|||
var _a = [1, 2, 3, 4];
|
||||
var x, y, z;
|
||||
}
|
||||
|
||||
|
||||
//// [emptyArrayBindingPatternParameter04.d.ts]
|
||||
declare function f([]?: number[]): void;
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts ===
|
||||
|
||||
|
||||
function f([] = [1,2,3,4]) {
|
||||
>f : Symbol(f, Decl(emptyArrayBindingPatternParameter04.ts, 0, 0))
|
||||
|
||||
var x, y, z;
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter04.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter04.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter04.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyArrayBindingPatternParameter04.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyArrayBindingPatternParameter04.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyArrayBindingPatternParameter04.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyArrayBindingPatternParameter04.ts ===
|
||||
|
||||
|
||||
function f([] = [1,2,3,4]) {
|
||||
>f : ([]?: number[]) => void
|
||||
>[1,2,3,4] : number[]
|
||||
|
|
|
@ -9,3 +9,7 @@ var a: any;
|
|||
var a;
|
||||
(a);
|
||||
(a);
|
||||
|
||||
|
||||
//// [emptyAssignmentPatterns01_ES5.d.ts]
|
||||
declare var a: any;
|
||||
|
|
|
@ -9,3 +9,7 @@ var a: any;
|
|||
var a;
|
||||
({} = a);
|
||||
([] = a);
|
||||
|
||||
|
||||
//// [emptyAssignmentPatterns01_ES6.d.ts]
|
||||
declare var a: any;
|
||||
|
|
|
@ -11,3 +11,8 @@ var a;
|
|||
var x, y, z, a1, a2, a3;
|
||||
((x = a.x, y = a.y, z = a.z, 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;
|
||||
({} = { x, y, z } = 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;
|
||||
(a);
|
||||
(a);
|
||||
|
||||
|
||||
//// [emptyAssignmentPatterns03_ES5.d.ts]
|
||||
declare var a: any;
|
||||
|
|
|
@ -9,3 +9,7 @@ var a: any;
|
|||
var 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);
|
||||
(_b = a, a1 = _b[0], a2 = _b[1], a3 = _b[2], _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;
|
||||
({ x, y, z } = {} = 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]
|
||||
|
||||
|
||||
function f({}) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -9,3 +8,7 @@ function f({}) {
|
|||
function f(_a) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
||||
|
||||
//// [emptyObjectBindingPatternParameter01.d.ts]
|
||||
declare function f({}: {}): void;
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts ===
|
||||
|
||||
|
||||
function f({}) {
|
||||
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter01.ts, 0, 0))
|
||||
|
||||
var x, y, z;
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter01.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter01.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter01.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter01.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter01.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter01.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter01.ts ===
|
||||
|
||||
|
||||
function f({}) {
|
||||
>f : ({}: {}) => void
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//// [emptyObjectBindingPatternParameter02.ts]
|
||||
|
||||
|
||||
function f(a, {}) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -9,3 +8,7 @@ function f(a, {}) {
|
|||
function f(a, _a) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
||||
|
||||
//// [emptyObjectBindingPatternParameter02.d.ts]
|
||||
declare function f(a: any, {}: {}): void;
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts ===
|
||||
|
||||
|
||||
function f(a, {}) {
|
||||
>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;
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter02.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter02.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter02.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter02.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter02.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter02.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter02.ts ===
|
||||
|
||||
|
||||
function f(a, {}) {
|
||||
>f : (a: any, {}: {}) => void
|
||||
>a : any
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//// [emptyObjectBindingPatternParameter03.ts]
|
||||
|
||||
|
||||
function f({}, a) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -9,3 +8,7 @@ function f({}, a) {
|
|||
function f(_a, a) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
||||
|
||||
//// [emptyObjectBindingPatternParameter03.d.ts]
|
||||
declare function f({}: {}, a: any): void;
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts ===
|
||||
|
||||
|
||||
function f({}, a) {
|
||||
>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;
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter03.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter03.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter03.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter03.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter03.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter03.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter03.ts ===
|
||||
|
||||
|
||||
function f({}, a) {
|
||||
>f : ({}: {}, a: any) => void
|
||||
>a : any
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//// [emptyObjectBindingPatternParameter04.ts]
|
||||
|
||||
|
||||
function f({} = {a: 1, b: "2", c: true}) {
|
||||
var x, y, z;
|
||||
}
|
||||
|
@ -10,3 +9,11 @@ function f(_a) {
|
|||
var _a = { a: 1, b: "2", c: true };
|
||||
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 ===
|
||||
|
||||
|
||||
function f({} = {a: 1, b: "2", c: true}) {
|
||||
>f : Symbol(f, Decl(emptyObjectBindingPatternParameter04.ts, 0, 0))
|
||||
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter04.ts, 2, 17))
|
||||
>b : Symbol(b, Decl(emptyObjectBindingPatternParameter04.ts, 2, 22))
|
||||
>c : Symbol(c, Decl(emptyObjectBindingPatternParameter04.ts, 2, 30))
|
||||
>a : Symbol(a, Decl(emptyObjectBindingPatternParameter04.ts, 1, 17))
|
||||
>b : Symbol(b, Decl(emptyObjectBindingPatternParameter04.ts, 1, 22))
|
||||
>c : Symbol(c, Decl(emptyObjectBindingPatternParameter04.ts, 1, 30))
|
||||
|
||||
var x, y, z;
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter04.ts, 3, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter04.ts, 3, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter04.ts, 3, 13))
|
||||
>x : Symbol(x, Decl(emptyObjectBindingPatternParameter04.ts, 2, 7))
|
||||
>y : Symbol(y, Decl(emptyObjectBindingPatternParameter04.ts, 2, 10))
|
||||
>z : Symbol(z, Decl(emptyObjectBindingPatternParameter04.ts, 2, 13))
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
=== tests/cases/conformance/es6/destructuring/emptyObjectBindingPatternParameter04.ts ===
|
||||
|
||||
|
||||
function f({} = {a: 1, b: "2", c: true}) {
|
||||
>f : ({}?: { a: number; b: string; c: boolean; }) => void
|
||||
>{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([]) {
|
||||
var x, y, z;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// @declaration: true
|
||||
|
||||
function f(a, []) {
|
||||
var x, y, z;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// @declaration: true
|
||||
|
||||
function f(a, []) {
|
||||
var x, y, z;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// @declaration: true
|
||||
|
||||
function f([] = [1,2,3,4]) {
|
||||
var x, y, z;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es5
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es6
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es5
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
let x, y, z, a1, a2, a3;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es6
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
let x, y, z, a1, a2, a3;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es5
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es6
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es5
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
let x, y, z, a1, a2, a3;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// @target: es6
|
||||
// @declaration: true
|
||||
|
||||
var a: any;
|
||||
let x, y, z, a1, a2, a3;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// @declaration: true
|
||||
|
||||
function f({}) {
|
||||
var x, y, z;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// @declaration: true
|
||||
|
||||
function f(a, {}) {
|
||||
var x, y, z;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// @declaration: true
|
||||
|
||||
function f({}, a) {
|
||||
var x, y, z;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
// @declaration: true
|
||||
|
||||
function f({} = {a: 1, b: "2", c: true}) {
|
||||
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