From 47e9a2b8a5d2161324edfbd2f805227e88fb4313 Mon Sep 17 00:00:00 2001 From: Mofei Zhang Date: Mon, 22 May 2023 19:37:53 -0400 Subject: [PATCH] [FeatureFlag] add enableTreatHooksAsFunctions --- compiler/forget/src/HIR/Environment.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/compiler/forget/src/HIR/Environment.ts b/compiler/forget/src/HIR/Environment.ts index acf1343de4..e60e9e4b66 100644 --- a/compiler/forget/src/HIR/Environment.ts +++ b/compiler/forget/src/HIR/Environment.ts @@ -80,6 +80,16 @@ export type EnvironmentConfig = Partial<{ * Defaults to false */ enableAssumeHooksFollowRulesOfReact: boolean; + + /** + * When enabled, the compiler treats hooks as normal typed functions for + * type and effect inference. + * Enabling this may change inference to have a higher confidence level + * and create more bailouts (e.g. for mutable effects to immutable values). + * + * Defaults to false + */ + enableTreatHooksAsFunctions: boolean; }>; export class Environment { @@ -90,6 +100,7 @@ export class Environment { validateHooksUsage: boolean; enableFunctionCallSignatureOptimizations: boolean; enableAssumeHooksFollowRulesOfReact: boolean; + enableTreatHooksAsFunctions: boolean; #contextIdentifiers: Set; constructor( @@ -118,6 +129,8 @@ export class Environment { config?.enableFunctionCallSignatureOptimizations ?? false; this.enableAssumeHooksFollowRulesOfReact = config?.enableAssumeHooksFollowRulesOfReact ?? false; + this.enableTreatHooksAsFunctions = + config?.enableTreatHooksAsFunctions ?? false; this.#contextIdentifiers = contextIdentifiers; }