From 3883eb9507d29ac36410d6808f5332fa85b8438c Mon Sep 17 00:00:00 2001 From: Sathya Gunasekaran Date: Fri, 23 Jun 2023 14:55:59 +0530 Subject: [PATCH] [playground] Make all options configurable --- .../playground/components/Editor/index.tsx | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/compiler/forget/apps/playground/components/Editor/index.tsx b/compiler/forget/apps/playground/components/Editor/index.tsx index 5c7767452c..d7ce01a218 100644 --- a/compiler/forget/apps/playground/components/Editor/index.tsx +++ b/compiler/forget/apps/playground/components/Editor/index.tsx @@ -129,6 +129,11 @@ function compile(source: string): CompilerOutput { let validateRefAccessDuringRender = true; let enableEmitFreeze = null; let enableOptimizeFunctionExpressions = false; + let inlineUseMemo = true; + let validateHooksUsage = true; + let enableFunctionCallSignatureOptimizations = true; + let validateFrozenLambdas = true; + let assertValidMutableRanges = true; if (firstLine.includes("@memoizeJsxElements false")) { memoizeJsxElements = false; } @@ -153,22 +158,36 @@ function compile(source: string): CompilerOutput { importSpecifierName: "makeReadOnly", }; } - + if (firstLine.includes("@inlineUseMemo false")) { + inlineUseMemo = false; + } + if (firstLine.includes("@enableFunctionCallSignatureOptimizations false")) { + enableFunctionCallSignatureOptimizations = false; + } + if (firstLine.includes("@validateHooksUsage false")) { + validateHooksUsage = false; + } + if (firstLine.includes("@validateFrozenLambdas false")) { + validateHooksUsage = false; + } + if (firstLine.includes("@assertValidMutableRanges false")) { + assertValidMutableRanges = false; + } for (const fn of parseFunctions(source)) { for (const result of run(fn, { customHooks: new Map([...COMMON_HOOKS]), enableAssumeHooksFollowRulesOfReact, - enableFunctionCallSignatureOptimizations: true, + enableFunctionCallSignatureOptimizations, disableAllMemoization, enableTreatHooksAsFunctions, - inlineUseMemo: true, + inlineUseMemo, memoizeJsxElements, - validateHooksUsage: true, + validateHooksUsage, validateRefAccessDuringRender, - validateFrozenLambdas: true, + validateFrozenLambdas, enableEmitFreeze, enableOptimizeFunctionExpressions, - assertValidMutableRanges: true, + assertValidMutableRanges, })) { const fnName = fn.node.id?.name ?? null; switch (result.kind) {