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; +}