From bf1e8fe0a1845c119ca491318a2fdd3a8df25b09 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Thu, 1 Apr 2021 17:29:23 +0200 Subject: [PATCH] Fix completion record for labeled statement `{labelAlthoughIMeantItToBeAKey: value}` strikes again :) --- .../do-expression-switch-case/nested-break-block/exec.js | 6 +++++- .../do-expression-switch-case/nested-break-block/input.js | 3 +++ .../do-expression-switch-case/nested-break-block/output.js | 5 +++++ packages/babel-traverse/src/path/family.ts | 7 ++++++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/exec.js b/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/exec.js index 8aab88eb1f1c..94c494288535 100644 --- a/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/exec.js +++ b/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/exec.js @@ -21,6 +21,9 @@ const x = (n) => do { } { break; "l" } case 7: + { a: "m" } + break; + case 8: } } @@ -31,4 +34,5 @@ expect(x(3)).toBeUndefined() expect(x(4)).toBe("g") expect(x(5)).toBe("j") expect(x(6)).toBe("k") -expect(x(7)).toBeUndefined() +expect(x(7)).toBe("m") +expect(x(8)).toBeUndefined() diff --git a/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/input.js b/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/input.js index 9d82b9b49fdd..74e16ce2322f 100644 --- a/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/input.js +++ b/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/input.js @@ -21,5 +21,8 @@ const x = (n) => do { } { break; "l" } case 7: + { a: "m" } + break; + case 8: } } diff --git a/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/output.js b/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/output.js index 62ffb4ad7b84..de89715f4fbf 100644 --- a/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/output.js +++ b/packages/babel-plugin-proposal-do-expressions/test/fixtures/do-expression-switch-case/nested-break-block/output.js @@ -62,5 +62,10 @@ const x = n => function () { } case 7: + { + a: return "m"; + } + + case 8: } }(); diff --git a/packages/babel-traverse/src/path/family.ts b/packages/babel-traverse/src/path/family.ts index cff90fe350ce..2c98a500bfa2 100644 --- a/packages/babel-traverse/src/path/family.ts +++ b/packages/babel-traverse/src/path/family.ts @@ -210,7 +210,12 @@ function _getCompletionRecords( if (path.isIfStatement()) { records = addCompletionRecords(path.get("consequent"), records, context); records = addCompletionRecords(path.get("alternate"), records, context); - } else if (path.isDoExpression() || path.isFor() || path.isWhile()) { + } else if ( + path.isDoExpression() || + path.isFor() || + path.isWhile() || + path.isLabeledStatement() + ) { // @ts-expect-error(flow->ts): todo records = addCompletionRecords(path.get("body"), records, context); } else if (path.isProgram() || path.isBlockStatement()) {