From 47385b29e0ea1b14b2db85b6b34540d591adfa0f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Fri, 27 Apr 2018 15:55:53 -0700 Subject: [PATCH] Actually visit expression node on empty destructuring assignment (#23744) --- src/compiler/transformers/destructuring.ts | 2 +- ...ructuringExpressionVisitedByTransformer.js | 7 ++++++ ...ringExpressionVisitedByTransformer.symbols | 15 +++++++++++ ...turingExpressionVisitedByTransformer.types | 25 +++++++++++++++++++ ...ructuringExpressionVisitedByTransformer.ts | 2 ++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.js create mode 100644 tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.symbols create mode 100644 tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types create mode 100644 tests/cases/compiler/emptyArrayDestructuringExpressionVisitedByTransformer.ts diff --git a/src/compiler/transformers/destructuring.ts b/src/compiler/transformers/destructuring.ts index 35101d3be7f..2dd8946e8e2 100644 --- a/src/compiler/transformers/destructuring.ts +++ b/src/compiler/transformers/destructuring.ts @@ -46,7 +46,7 @@ namespace ts { value = node.right; } else { - return value; + return visitNode(value, visitor, isExpression); } } } diff --git a/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.js b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.js new file mode 100644 index 00000000000..5e7e333f7a6 --- /dev/null +++ b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.js @@ -0,0 +1,7 @@ +//// [emptyArrayDestructuringExpressionVisitedByTransformer.ts] +var a = [] = [1].map(_ => _); +var b = [1].map(_ => _); + +//// [emptyArrayDestructuringExpressionVisitedByTransformer.js] +var a = [1].map(function (_) { return _; }); +var b = [1].map(function (_) { return _; }); diff --git a/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.symbols b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.symbols new file mode 100644 index 00000000000..5694d47c8c8 --- /dev/null +++ b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/emptyArrayDestructuringExpressionVisitedByTransformer.ts === +var a = [] = [1].map(_ => _); +>a : Symbol(a, Decl(emptyArrayDestructuringExpressionVisitedByTransformer.ts, 0, 3)) +>[1].map : Symbol(Array.map, Decl(lib.d.ts, --, --)) +>map : Symbol(Array.map, Decl(lib.d.ts, --, --)) +>_ : Symbol(_, Decl(emptyArrayDestructuringExpressionVisitedByTransformer.ts, 0, 21)) +>_ : Symbol(_, Decl(emptyArrayDestructuringExpressionVisitedByTransformer.ts, 0, 21)) + +var b = [1].map(_ => _); +>b : Symbol(b, Decl(emptyArrayDestructuringExpressionVisitedByTransformer.ts, 1, 3)) +>[1].map : Symbol(Array.map, Decl(lib.d.ts, --, --)) +>map : Symbol(Array.map, Decl(lib.d.ts, --, --)) +>_ : Symbol(_, Decl(emptyArrayDestructuringExpressionVisitedByTransformer.ts, 1, 16)) +>_ : Symbol(_, Decl(emptyArrayDestructuringExpressionVisitedByTransformer.ts, 1, 16)) + diff --git a/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types new file mode 100644 index 00000000000..450a24a0fa7 --- /dev/null +++ b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types @@ -0,0 +1,25 @@ +=== tests/cases/compiler/emptyArrayDestructuringExpressionVisitedByTransformer.ts === +var a = [] = [1].map(_ => _); +>a : number[] +>[] = [1].map(_ => _) : number[] +>[] : undefined[] +>[1].map(_ => _) : number[] +>[1].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +>[1] : number[] +>1 : 1 +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +>_ => _ : (_: number) => number +>_ : number +>_ : number + +var b = [1].map(_ => _); +>b : number[] +>[1].map(_ => _) : number[] +>[1].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +>[1] : number[] +>1 : 1 +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +>_ => _ : (_: number) => number +>_ : number +>_ : number + diff --git a/tests/cases/compiler/emptyArrayDestructuringExpressionVisitedByTransformer.ts b/tests/cases/compiler/emptyArrayDestructuringExpressionVisitedByTransformer.ts new file mode 100644 index 00000000000..01ad2d61122 --- /dev/null +++ b/tests/cases/compiler/emptyArrayDestructuringExpressionVisitedByTransformer.ts @@ -0,0 +1,2 @@ +var a = [] = [1].map(_ => _); +var b = [1].map(_ => _); \ No newline at end of file