From 7accee9c2446fd0852f8d80c24088d0615c5dd32 Mon Sep 17 00:00:00 2001 From: Maaz Syed Adeeb Date: Sat, 8 Sep 2018 04:53:18 +0530 Subject: [PATCH] [TS] Transform multiple assert and assign correctly (#7217) * Transform multiple assert and assign correctly * Handling nested TSAsExpressions in the transform --- packages/babel-plugin-transform-typescript/src/index.js | 6 +++++- .../test/fixtures/cast/multiple-assert-and-assign/input.js | 1 + .../test/fixtures/cast/multiple-assert-and-assign/output.js | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/input.js create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/output.js diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index cc6c1be62f..db0104f5e9 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -250,7 +250,11 @@ export default declare((api, { jsxPragma = "React" }) => { }, TSAsExpression(path) { - path.replaceWith(path.node.expression); + let { node } = path; + do { + node = node.expression; + } while (t.isTSAsExpression(node)); + path.replaceWith(node); }, TSNonNullExpression(path) { diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/input.js b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/input.js new file mode 100644 index 0000000000..c35da37ddf --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/input.js @@ -0,0 +1 @@ +(a as number as any) = 42; \ No newline at end of file diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/output.js new file mode 100644 index 0000000000..e095ff18d1 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/cast/multiple-assert-and-assign/output.js @@ -0,0 +1 @@ +a = 42;