From ff8868e8d151b30d10783cd7b6f3af63a187429e Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Fri, 17 Mar 2023 16:18:11 -0700 Subject: [PATCH] Fix self-closing jsx element codegen We were never emitting self-closing jsx elements because children were never null, we now set children to null if they were empty in the AST. --- compiler/forget/src/HIR/BuildHIR.ts | 2 +- .../forget/src/__tests__/fixtures/compiler/call.expect.md | 2 +- .../fixtures/compiler/capture-func-passed-to-jsx.expect.md | 2 +- .../compiler/capturing-function-member-expr-call.expect.md | 2 +- .../__tests__/fixtures/compiler/concise-arrow-expr.expect.md | 2 +- .../fixtures/compiler/conditional-on-mutable.expect.md | 4 ++-- .../src/__tests__/fixtures/compiler/constructor.expect.md | 2 +- .../__tests__/fixtures/compiler/controlled-input.expect.md | 2 +- .../escape-analysis-destructured-rest-element.expect.md | 2 +- .../fixtures/compiler/independent-across-if.expect.md | 2 +- .../src/__tests__/fixtures/compiler/independent.expect.md | 2 +- .../fixtures/compiler/interdependent-across-if.expect.md | 2 +- .../src/__tests__/fixtures/compiler/interdependent.expect.md | 2 +- .../fixtures/compiler/jsx-member-expression.expect.md | 2 +- .../src/__tests__/fixtures/compiler/jsx-spread.expect.md | 2 +- .../__tests__/fixtures/compiler/property-assignment.expect.md | 2 +- .../fixtures/compiler/reassignment-conditional.expect.md | 2 +- .../src/__tests__/fixtures/compiler/reassignment.expect.md | 2 +- .../src/__tests__/fixtures/compiler/ssa-call-jsx-2.expect.md | 2 +- .../src/__tests__/fixtures/compiler/ssa-call-jsx.expect.md | 2 +- .../fixtures/compiler/switch-non-final-default.expect.md | 2 +- .../forget/src/__tests__/fixtures/compiler/switch.expect.md | 2 +- .../__tests__/fixtures/compiler/use-callback-simple.expect.md | 2 +- .../src/__tests__/fixtures/compiler/useMemo-simple.expect.md | 2 +- .../fixtures/disableMemoizeJsxElements/Component.expect.md | 2 +- 25 files changed, 26 insertions(+), 26 deletions(-) diff --git a/compiler/forget/src/HIR/BuildHIR.ts b/compiler/forget/src/HIR/BuildHIR.ts index d67b6846bf..ce418cf400 100644 --- a/compiler/forget/src/HIR/BuildHIR.ts +++ b/compiler/forget/src/HIR/BuildHIR.ts @@ -1439,7 +1439,7 @@ function lowerExpression( kind: "JsxExpression", tag, props, - children, + children: children.length === 0 ? null : children, loc: exprLoc, }; } diff --git a/compiler/forget/src/__tests__/fixtures/compiler/call.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/call.expect.md index 7af3132878..d13e956b5c 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/call.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/call.expect.md @@ -38,7 +38,7 @@ function Component(props) { } let t0; if ($[2] === Symbol.for("react.memo_cache_sentinel")) { - t0 =
; + t0 =
; $[2] = t0; } else { t0 = $[2]; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/capture-func-passed-to-jsx.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/capture-func-passed-to-jsx.expect.md index acae2e4956..7d1ac8cade 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/capture-func-passed-to-jsx.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/capture-func-passed-to-jsx.expect.md @@ -59,7 +59,7 @@ function component(a, b) { const c_7 = $[7] !== x; let t3; if (c_7) { - t3 = ; + t3 = ; $[7] = x; $[8] = t3; } else { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/capturing-function-member-expr-call.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/capturing-function-member-expr-call.expect.md index 2dc57b8057..183ad33557 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/capturing-function-member-expr-call.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/capturing-function-member-expr-call.expect.md @@ -50,7 +50,7 @@ function component(t27) { const c_5 = $[5] !== hide; let t2; if (c_4 || c_5) { - t2 = ; + t2 = ; $[4] = poke; $[5] = hide; $[6] = t2; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md index 517503efd5..82a51fb6b0 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md @@ -29,7 +29,7 @@ function component() { const c_2 = $[2] !== handler; let t1; if (c_2) { - t1 = ; + t1 = ; $[2] = handler; $[3] = t1; } else { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/conditional-on-mutable.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/conditional-on-mutable.expect.md index f80aacf62e..fb8c6fbed0 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/conditional-on-mutable.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/conditional-on-mutable.expect.md @@ -59,7 +59,7 @@ function ComponentA(props) { const c_4 = $[4] !== b; let t0; if (c_3 || c_4) { - t0 = ; + t0 = ; $[3] = a; $[4] = b; $[5] = t0; @@ -94,7 +94,7 @@ function ComponentB(props) { const c_4 = $[4] !== b; let t0; if (c_3 || c_4) { - t0 = ; + t0 = ; $[3] = a; $[4] = b; $[5] = t0; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/constructor.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/constructor.expect.md index 08b57f01d8..03806a533e 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/constructor.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/constructor.expect.md @@ -37,7 +37,7 @@ function Component(props) { } let t0; if ($[2] === Symbol.for("react.memo_cache_sentinel")) { - t0 =
; + t0 =
; $[2] = t0; } else { t0 = $[2]; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/controlled-input.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/controlled-input.expect.md index 417dcef789..cf714af29b 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/controlled-input.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/controlled-input.expect.md @@ -30,7 +30,7 @@ function component() { const c_3 = $[3] !== x; let t1; if (c_2 || c_3) { - t1 = ; + t1 = ; $[2] = handler; $[3] = x; $[4] = t1; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/escape-analysis-destructured-rest-element.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/escape-analysis-destructured-rest-element.expect.md index 14682a35a5..955cf03386 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/escape-analysis-destructured-rest-element.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/escape-analysis-destructured-rest-element.expect.md @@ -39,7 +39,7 @@ function Component(props) { const c_5 = $[5] !== d; let t0; if (c_4 || c_5) { - t0 =
; + t0 =
; $[4] = b; $[5] = d; $[6] = t0; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/independent-across-if.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/independent-across-if.expect.md index 34633c17d8..755e324210 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/independent-across-if.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/independent-across-if.expect.md @@ -82,7 +82,7 @@ function Component(props) { const c_6 = $[6] !== b; let t0; if (c_5 || c_6) { - t0 = ; + t0 = ; $[5] = a; $[6] = b; $[7] = t0; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/independent.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/independent.expect.md index 9a344bd0d9..1f0e15b143 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/independent.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/independent.expect.md @@ -63,7 +63,7 @@ function Component(props) { const c_5 = $[5] !== b; let t2; if (c_4 || c_5) { - t2 = ; + t2 = ; $[4] = a; $[5] = b; $[6] = t2; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/interdependent-across-if.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/interdependent-across-if.expect.md index 0d0f6cab93..f54421b400 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/interdependent-across-if.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/interdependent-across-if.expect.md @@ -70,7 +70,7 @@ function Component(props) { const c_6 = $[6] !== b; let t0; if (c_5 || c_6) { - t0 = ; + t0 = ; $[5] = a; $[6] = b; $[7] = t0; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/interdependent.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/interdependent.expect.md index 9c7bc4c7c3..445e5bc6dc 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/interdependent.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/interdependent.expect.md @@ -58,7 +58,7 @@ function Component(props) { const c_5 = $[5] !== b; let t0; if (c_4 || c_5) { - t0 = ; + t0 = ; $[4] = a; $[5] = b; $[6] = t0; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/jsx-member-expression.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/jsx-member-expression.expect.md index 899564d65e..215cf59dd1 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/jsx-member-expression.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/jsx-member-expression.expect.md @@ -19,7 +19,7 @@ function Component(props) { const $ = React.unstable_useMemoCache(2); let t0; if ($[0] === Symbol.for("react.memo_cache_sentinel")) { - t0 = ; + t0 = ; $[0] = t0; } else { t0 = $[0]; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/jsx-spread.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/jsx-spread.expect.md index 0dae3baf71..ae56eb3673 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/jsx-spread.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/jsx-spread.expect.md @@ -30,7 +30,7 @@ function Component(props) { const c_3 = $[3] !== t1; let t2; if (c_2 || c_3) { - t2 = ; + t2 = ; $[2] = props; $[3] = t1; $[4] = t2; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/property-assignment.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/property-assignment.expect.md index 0589203765..d6aa05601b 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/property-assignment.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/property-assignment.expect.md @@ -26,7 +26,7 @@ function Component(props) { const y = []; x.y = y; - child = ; + child = ; x.y.push(props.p0); $[0] = props.p0; $[1] = x; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/reassignment-conditional.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/reassignment-conditional.expect.md index c7552085ba..264c35876e 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/reassignment-conditional.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/reassignment-conditional.expect.md @@ -51,7 +51,7 @@ function Component(props) { const c_4 = $[4] !== y; let t1; if (c_3 || c_4) { - t1 = ; + t1 = ; $[3] = x; $[4] = y; $[5] = t1; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/reassignment.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/reassignment.expect.md index 0b3212b74d..cfd6e3b074 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/reassignment.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/reassignment.expect.md @@ -52,7 +52,7 @@ function Component(props) { const c_6 = $[6] !== y; let t1; if (c_5 || c_6) { - t1 = ; + t1 = ; $[5] = x; $[6] = y; $[7] = t1; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx-2.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx-2.expect.md index e658014990..cd3188fd7f 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx-2.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx-2.expect.md @@ -44,7 +44,7 @@ function Component(props) { } let t0; if ($[2] === Symbol.for("react.memo_cache_sentinel")) { - t0 =
; + t0 =
; $[2] = t0; } else { t0 = $[2]; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx.expect.md index e786729615..4cf158fa08 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/ssa-call-jsx.expect.md @@ -38,7 +38,7 @@ function Component(props) { } let t0; if ($[2] === Symbol.for("react.memo_cache_sentinel")) { - t0 =
; + t0 =
; $[2] = t0; } else { t0 = $[2]; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/switch-non-final-default.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/switch-non-final-default.expect.md index f34da2a525..7a88ff0bb1 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/switch-non-final-default.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/switch-non-final-default.expect.md @@ -71,7 +71,7 @@ function Component(props) { const c_4 = $[4] !== x; let t1; if (c_4) { - t1 = ; + t1 = ; $[4] = x; $[5] = t1; } else { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/switch.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/switch.expect.md index c2940b4a9c..610f317624 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/switch.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/switch.expect.md @@ -52,7 +52,7 @@ function Component(props) { const c_3 = $[3] !== x; let t0; if (c_3) { - t0 = ; + t0 = ; $[3] = x; $[4] = t0; } else { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/use-callback-simple.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/use-callback-simple.expect.md index 27e04507db..6b1fa77f5c 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/use-callback-simple.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/use-callback-simple.expect.md @@ -32,7 +32,7 @@ function component() { const c_3 = $[3] !== increment; let t1; if (c_3) { - t1 = ; + t1 = ; $[3] = increment; $[4] = t1; } else { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md index ef1baed8c5..7a15a4931d 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md @@ -27,7 +27,7 @@ function component(a) { const c_2 = $[2] !== x; let t1; if (c_2) { - t1 = ; + t1 = ; $[2] = x; $[3] = t1; } else { diff --git a/compiler/forget/src/__tests__/fixtures/disableMemoizeJsxElements/Component.expect.md b/compiler/forget/src/__tests__/fixtures/disableMemoizeJsxElements/Component.expect.md index 9a6b460671..86ed88b104 100644 --- a/compiler/forget/src/__tests__/fixtures/disableMemoizeJsxElements/Component.expect.md +++ b/compiler/forget/src/__tests__/fixtures/disableMemoizeJsxElements/Component.expect.md @@ -34,7 +34,7 @@ function Component(props) { t0 = $[1]; } const onChange = t0; - return
{}
; + return
{}
; } ```