@samitouri / QOS-React-2 / commits / 836211a549

Prep for destructuring, factor out lowerIdentifier()

Joe Savona committed Dec 20, 2022 at 16:57 UTC 836211a549e4928645eac0fb4261509f8947dff3
1 file changed +28 -20
compiler/forget/src/HIR/BuildHIR.ts
+28 -20
@@ -723,7 +723,7 @@ function lowerExpression(
723 switch (exprNode.type) {
724 case "Identifier": {
725 const expr = exprPath as NodePath<t.Identifier>;
726 - return lowerLVal(builder, expr);
726 + return lowerIdentifier(builder, expr);
727 }
728 case "NullLiteral": {
729 return {
@@ -1285,30 +1285,38 @@ function lowerExpressionToVoid(
1285 });
1286 }
1287
1288 +function lowerIdentifier(
1289 + builder: HIRBuilder,
1290 + exprPath: NodePath<t.Identifier>
1291 +): Place {
1292 + const exprNode = exprPath.node;
1293 + const exprLoc = exprNode.loc ?? GeneratedSource;
1294 + const binding =
1295 + exprPath.scope.getBindingIdentifier(exprNode.name) ??
1296 + getOrAddGlobal(exprNode.name);
1297 + invariant(
1298 + binding != null,
1299 + `Expected to find a binding for variable '%s'`,
1300 + exprNode.name
1301 + );
1302 + const identifier = builder.resolveIdentifier(binding);
1303 + const place: Place = {
1304 + kind: "Identifier",
1305 + identifier: identifier,
1306 + memberPath: null,
1307 + effect: Effect.Unknown,
1308 + loc: exprLoc,
1309 + };
1310 + return place;
1311 +}
1312 +
1313 function lowerLVal(builder: HIRBuilder, exprPath: NodePath<t.LVal>): Place {
1314 const exprNode = exprPath.node;
1315 const exprLoc = exprNode.loc ?? GeneratedSource;
1316 switch (exprNode.type) {
1317 case "Identifier": {
1293 - // const expr = exprPath as NodePath<t.Identifier>;
1294 - // const name: string = expr.get("name");
1295 - const binding =
1296 - exprPath.scope.getBindingIdentifier(exprNode.name) ??
1297 - getOrAddGlobal(exprNode.name);
1298 - invariant(
1299 - binding != null,
1300 - `Expected to find a binding for variable '%s'`,
1301 - exprNode.name
1302 - );
1303 - const identifier = builder.resolveIdentifier(binding);
1304 - const place: Place = {
1305 - kind: "Identifier",
1306 - identifier: identifier,
1307 - memberPath: null,
1308 - effect: Effect.Unknown,
1309 - loc: exprLoc,
1310 - };
1311 - return place;
1318 + const expr = exprPath as NodePath<t.Identifier>;
1319 + return lowerIdentifier(builder, expr);
1320 }
1321 case "MemberExpression": {
1322 const expr = exprPath as NodePath<t.MemberExpression>;