@samitouri / QOS-React-2 / commits / 5775102b85

InferTypes traverses function expressions

Joe Savona committed Jun 8, 2023 at 14:02 UTC 5775102b852ea53c53a0d1bc3349c85a735f246e
3 files changed +7 -5
compiler/forget/packages/babel-plugin-react-forget/src/Inference/AnalyseFunctions.ts
-2
@@ -16,7 +16,6 @@ import {
16 Place,
17 ReactiveScopeDependency,
18 } from "../HIR";
19 -import { inferTypes } from "../TypeInference";
19 import { logHIRFunction } from "../Utils/logger";
20 import { inferMutableRanges } from "./InferMutableRanges";
21 import inferReferenceEffects from "./InferReferenceEffects";
@@ -87,7 +86,6 @@ export default function analyseFunctions(func: HIRFunction): void {
86 }
87
88 function lower(func: HIRFunction): void {
90 - inferTypes(func);
89 analyseFunctions(func);
90 inferReferenceEffects(func, { isFunctionExpression: true });
91 inferMutableRanges(func);
compiler/forget/packages/babel-plugin-react-forget/src/TypeInference/InferTypes.ts
+6 -2
@@ -45,7 +45,7 @@ function isPrimitiveBinaryOp(op: t.BinaryExpression["operator"]): boolean {
45 }
46 }
47
48 -export default function (func: HIRFunction): void {
48 +export function inferTypes(func: HIRFunction): void {
49 const unifier = new Unifier(func.env);
50 for (const e of generate(func)) {
51 unifier.unify(e.left, e.right);
@@ -244,6 +244,11 @@ function* generateInstructionTypes(
244 break;
245 }
246
247 + case "FunctionExpression": {
248 + inferTypes(value.loweredFunc);
249 + break;
250 + }
251 +
252 case "DeclareLocal":
253 case "DeclareContext":
254 case "NewExpression":
@@ -253,7 +258,6 @@ function* generateInstructionTypes(
258 case "PropertyStore":
259 case "ComputedStore":
260 case "ComputedLoad":
256 - case "FunctionExpression":
261 case "TaggedTemplateExpression":
262 case "Await":
263 case "NextIterableOf":
compiler/forget/packages/babel-plugin-react-forget/src/TypeInference/index.ts
+1 -1
@@ -5,4 +5,4 @@
5 * LICENSE file in the root directory of this source tree.
6 */
7
8 -export { default as inferTypes } from "./InferTypes";
8 +export { inferTypes } from "./InferTypes";