The library for web and native user interfaces.
Rename promoteTemporary helpers
Renames the helpers for promoting temporaries to named identifiers, per feedback earlier in the stack.
Joe Savona committed
Mar 6, 2024 at 11:16 UTC
e7fcc4e6a8116e1fde722b383dc7ad54e550a55a
7 files changed
+26
-32
compiler/packages/babel-plugin-react-forget/src/HIR/BuildHIR.ts
+6
-6
@@ -44,7 +44,7 @@ import {
44
Type,
45
makeInstructionId,
46
makeType,
47
- promoteTemporaryToNamedIdentifier,
47
+ promoteTemporary,
48
} from "./HIR";
49
import HIRBuilder, { Bindings } from "./HIRBuilder";
50
import { BuiltInArrayId } from "./ObjectShape";
@@ -1216,7 +1216,7 @@ function lowerStatement(
1216
reactive: false,
1217
loc: handlerBindingPath.node.loc ?? GeneratedSource,
1218
};
1219
- promoteTemporaryToNamedIdentifier(place.identifier);
1219
+ promoteTemporary(place.identifier);
1220
lowerValueToTemporary(builder, {
1221
kind: "DeclareLocal",
1222
lvalue: {
@@ -3422,7 +3422,7 @@ function lowerAssignment(
3422
builder,
3423
element.node.loc ?? GeneratedSource
3424
);
3425
- promoteTemporaryToNamedIdentifier(temp.identifier);
3425
+ promoteTemporary(temp.identifier);
3426
items.push({
3427
kind: "Spread",
3428
place: { ...temp },
@@ -3450,7 +3450,7 @@ function lowerAssignment(
3450
builder,
3451
element.node.loc ?? GeneratedSource
3452
);
3453
- promoteTemporaryToNamedIdentifier(temp.identifier);
3453
+ promoteTemporary(temp.identifier);
3454
items.push({ ...temp });
3455
followups.push({ place: temp, path: element as NodePath<t.LVal> }); // TODO remove type cast
3456
}
@@ -3521,7 +3521,7 @@ function lowerAssignment(
3521
builder,
3522
property.node.loc ?? GeneratedSource
3523
);
3524
- promoteTemporaryToNamedIdentifier(temp.identifier);
3524
+ promoteTemporary(temp.identifier);
3525
properties.push({
3526
kind: "Spread",
3527
place: { ...temp },
@@ -3602,7 +3602,7 @@ function lowerAssignment(
3602
builder,
3603
element.node.loc ?? GeneratedSource
3604
);
3605
- promoteTemporaryToNamedIdentifier(temp.identifier);
3605
+ promoteTemporary(temp.identifier);
3606
properties.push({
3607
kind: "ObjectProperty",
3608
type: "property",
compiler/packages/babel-plugin-react-forget/src/HIR/HIR.ts
+2
-6
@@ -1004,9 +1004,7 @@ export function makeIdentifierName(name: string): ValidatedIdentifier {
1004
/**
1005
* Given an unnamed identifier, promote it to a named identifier.
1006
*/
1007
-export function promoteTemporaryToNamedIdentifier(
1008
- identifier: Identifier
1009
-): void {
1007
+export function promoteTemporary(identifier: Identifier): void {
1008
CompilerError.invariant(identifier.name === null, {
1009
reason: `Expected a temporary (unnamed) identifier`,
1010
loc: GeneratedSource,
@@ -1027,9 +1025,7 @@ export function isPromotedTemporary(name: string): boolean {
1025
* Given an unnamed identifier, promote it to a named identifier, distinguishing
1026
* it as a value that needs to be capitalized since it appears in JSX element tag position
1027
*/
1030
-export function promoteTemporaryJsxTagToNamedIdentifier(
1031
- identifier: Identifier
1032
-): void {
1028
+export function promoteTemporaryJsxTag(identifier: Identifier): void {
1029
CompilerError.invariant(identifier.name === null, {
1030
reason: `Expected a temporary (unnamed) identifier`,
1031
loc: GeneratedSource,
compiler/packages/babel-plugin-react-forget/src/Inference/InlineImmediatelyInvokedFunctionExpressions.ts
+2
-2
@@ -20,7 +20,7 @@ import {
20
Place,
21
makeInstructionId,
22
makeType,
23
- promoteTemporaryToNamedIdentifier,
23
+ promoteTemporary,
24
reversePostorderBlocks,
25
} from "../HIR";
26
import { markInstructionIds, markPredecessors } from "../HIR/HIRBuilder";
@@ -159,7 +159,7 @@ export function inlineImmediatelyInvokedFunctionExpressions(
159
declareTemporary(fn.env, block, result);
160
161
// Promote the temporary with a name as we require this to persist
162
- promoteTemporaryToNamedIdentifier(result.identifier);
162
+ promoteTemporary(result.identifier);
163
164
/*
165
* Rewrite blocks from the lambda to replace any `return` with a
compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/CodegenReactiveFunction.ts
+2
-4
@@ -2060,13 +2060,11 @@ function codegenPlace(cx: Context, place: Place): t.Expression | t.JSXText {
2060
}
2061
2062
function convertIdentifier(identifier: Identifier): t.Identifier {
2063
- if (identifier.name !== null) {
2064
- return t.identifier(identifier.name.value);
2065
- }
2066
- CompilerError.invariant(false, {
2063
+ CompilerError.invariant(identifier.name !== null, {
2064
reason: `Expected temporaries to be promoted to named identifiers in an earlier pass`,
2065
loc: GeneratedSource,
2066
description: `identifier ${identifier.id} is unnamed`,
2067
suggestions: null,
2068
});
2069
+ return t.identifier(identifier.name.value);
2070
}
compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/ExtractScopeDeclarationsFromDestructuring.ts
+2
-2
@@ -15,7 +15,7 @@ import {
15
ReactiveInstruction,
16
ReactiveScopeBlock,
17
ReactiveStatement,
18
- promoteTemporaryToNamedIdentifier,
18
+ promoteTemporary,
19
} from "../HIR";
20
import { eachPatternOperand, mapPatternOperands } from "../HIR/visitors";
21
import {
@@ -159,7 +159,7 @@ function transformDestructuring(
159
name: null, // overwritten below
160
},
161
};
162
- promoteTemporaryToNamedIdentifier(temporary.identifier);
162
+ promoteTemporary(temporary.identifier);
163
renamed.set(place, temporary);
164
return temporary;
165
});
compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/PromoteUsedTemporaries.ts
+10
-10
@@ -15,8 +15,8 @@ import {
15
ReactiveFunction,
16
ReactiveScopeBlock,
17
ReactiveValue,
18
- promoteTemporaryJsxTagToNamedIdentifier,
19
- promoteTemporaryToNamedIdentifier,
18
+ promoteTemporary,
19
+ promoteTemporaryJsxTag,
20
} from "../HIR/HIR";
21
import { ReactiveFunctionVisitor, visitReactiveFunction } from "./visitors";
22
@@ -29,7 +29,7 @@ class Visitor extends ReactiveFunctionVisitor<VisitorState> {
29
for (const dep of block.scope.dependencies) {
30
const { identifier } = dep;
31
if (identifier.name == null) {
32
- promoteTemporary(identifier, state);
32
+ promoteIdentifier(identifier, state);
33
}
34
}
35
/*
@@ -41,14 +41,14 @@ class Visitor extends ReactiveFunctionVisitor<VisitorState> {
41
*/
42
for (const [, declaration] of block.scope.declarations) {
43
if (declaration.identifier.name == null) {
44
- promoteTemporary(declaration.identifier, state);
44
+ promoteIdentifier(declaration.identifier, state);
45
}
46
}
47
}
48
49
override visitParam(place: Place, state: VisitorState): void {
50
if (place.identifier.name === null) {
51
- promoteTemporary(place.identifier, state);
51
+ promoteIdentifier(place.identifier, state);
52
}
53
}
54
@@ -72,7 +72,7 @@ class Visitor extends ReactiveFunctionVisitor<VisitorState> {
72
for (const operand of fn.params) {
73
const place = operand.kind === "Identifier" ? operand : operand.place;
74
if (place.identifier.name === null) {
75
- promoteTemporary(place.identifier, state);
75
+ promoteIdentifier(place.identifier, state);
76
}
77
}
78
visitReactiveFunction(fn, this, state);
@@ -102,13 +102,13 @@ export function promoteUsedTemporaries(fn: ReactiveFunction): void {
102
for (const operand of fn.params) {
103
const place = operand.kind === "Identifier" ? operand : operand.place;
104
if (place.identifier.name === null) {
105
- promoteTemporary(place.identifier, state);
105
+ promoteIdentifier(place.identifier, state);
106
}
107
}
108
visitReactiveFunction(fn, new Visitor(), state);
109
}
110
111
-function promoteTemporary(identifier: Identifier, state: VisitorState): void {
111
+function promoteIdentifier(identifier: Identifier, state: VisitorState): void {
112
CompilerError.invariant(identifier.name === null, {
113
reason:
114
"promoteTemporary: Expected to be called only for temporary variables",
@@ -117,8 +117,8 @@ function promoteTemporary(identifier: Identifier, state: VisitorState): void {
117
suggestions: null,
118
});
119
if (state.tags.has(identifier.id)) {
120
- promoteTemporaryJsxTagToNamedIdentifier(identifier);
120
+ promoteTemporaryJsxTag(identifier);
121
} else {
122
- promoteTemporaryToNamedIdentifier(identifier);
122
+ promoteTemporary(identifier);
123
}
124
}
compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/PropagateEarlyReturns.ts
+2
-2
@@ -16,7 +16,7 @@ import {
16
ReactiveStatement,
17
ReactiveTerminalStatement,
18
makeInstructionId,
19
- promoteTemporaryToNamedIdentifier,
19
+ promoteTemporary,
20
} from "../HIR";
21
import { createTemporaryPlace } from "../HIR/HIRBuilder";
22
import { EARLY_RETURN_SENTINEL } from "./CodegenReactiveFunction";
@@ -275,7 +275,7 @@ class Transform extends ReactiveFunctionTransform<State> {
275
earlyReturnValue = state.earlyReturnValue;
276
} else {
277
const identifier = createTemporaryPlace(this.env).identifier;
278
- promoteTemporaryToNamedIdentifier(identifier);
278
+ promoteTemporary(identifier);
279
earlyReturnValue = {
280
label: this.env.nextBlockId,
281
loc,