From 4a826985db82be35a84e0681d2e47966dde95e67 Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Mon, 27 Mar 2023 10:34:16 -0700 Subject: [PATCH] More tests for AssignmentPattern --- compiler/forget/src/HIR/BuildHIR.ts | 6 ++---- ...estructuring-array-param-default.expect.md | 21 +++++++++++++++++++ .../destructuring-array-param-default.js | 3 +++ ...structuring-object-param-default.expect.md | 21 +++++++++++++++++++ .../destructuring-object-param-default.js | 3 +++ 5 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.expect.md create mode 100644 compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.js create mode 100644 compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.expect.md create mode 100644 compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.js diff --git a/compiler/forget/src/HIR/BuildHIR.ts b/compiler/forget/src/HIR/BuildHIR.ts index 0a11edeb54..c4724ac036 100644 --- a/compiler/forget/src/HIR/BuildHIR.ts +++ b/compiler/forget/src/HIR/BuildHIR.ts @@ -1795,16 +1795,14 @@ function lowerReorderableExpression( builder: HIRBuilder, expr: NodePath ): Place { - if (isReorderableExpression(builder, expr)) { - return lowerExpressionToTemporary(builder, expr); - } else { + if (!isReorderableExpression(builder, expr)) { builder.errors.push({ reason: `(BuildHIR::node.lowerReorderableExpression) Expression type '${expr.type}' cannot be safely reordered`, severity: ErrorSeverity.Todo, nodePath: expr, }); - return buildTemporaryPlace(builder, expr.node.loc ?? GeneratedSource); } + return lowerExpressionToTemporary(builder, expr); } function isReorderableExpression( diff --git a/compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.expect.md new file mode 100644 index 0000000000..2b904270e4 --- /dev/null +++ b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.expect.md @@ -0,0 +1,21 @@ + +## Input + +```javascript +function Component([a = 2]) { + return a; +} + +``` + +## Code + +```javascript +function Component(t13) { + const [t14] = t13; + const a = t14 === undefined ? 2 : t14; + return a; +} + +``` + \ No newline at end of file diff --git a/compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.js b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.js new file mode 100644 index 0000000000..f28a0fb7b2 --- /dev/null +++ b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-array-param-default.js @@ -0,0 +1,3 @@ +function Component([a = 2]) { + return a; +} diff --git a/compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.expect.md new file mode 100644 index 0000000000..f97dfec14d --- /dev/null +++ b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.expect.md @@ -0,0 +1,21 @@ + +## Input + +```javascript +function Component({ a = 2 }) { + return a; +} + +``` + +## Code + +```javascript +function Component(t13) { + const { a: t14 } = t13; + const a = t14 === undefined ? 2 : t14; + return a; +} + +``` + \ No newline at end of file diff --git a/compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.js b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.js new file mode 100644 index 0000000000..66712fe5ff --- /dev/null +++ b/compiler/forget/src/__tests__/fixtures/compiler/destructuring-object-param-default.js @@ -0,0 +1,3 @@ +function Component({ a = 2 }) { + return a; +}