[playground] Make all options configurable
Sathya Gunasekaran committed
Jun 23, 2023 at 14:55 UTC
3883eb9507d29ac36410d6808f5332fa85b8438c
1 file changed
+25
-6
compiler/forget/apps/playground/components/Editor/index.tsx
+25
-6
@@ -129,6 +129,11 @@ function compile(source: string): CompilerOutput {
129
let validateRefAccessDuringRender = true;
130
let enableEmitFreeze = null;
131
let enableOptimizeFunctionExpressions = false;
132
+ let inlineUseMemo = true;
133
+ let validateHooksUsage = true;
134
+ let enableFunctionCallSignatureOptimizations = true;
135
+ let validateFrozenLambdas = true;
136
+ let assertValidMutableRanges = true;
137
if (firstLine.includes("@memoizeJsxElements false")) {
138
memoizeJsxElements = false;
139
}
@@ -153,22 +158,36 @@ function compile(source: string): CompilerOutput {
158
importSpecifierName: "makeReadOnly",
159
};
160
}
156
-
161
+ if (firstLine.includes("@inlineUseMemo false")) {
162
+ inlineUseMemo = false;
163
+ }
164
+ if (firstLine.includes("@enableFunctionCallSignatureOptimizations false")) {
165
+ enableFunctionCallSignatureOptimizations = false;
166
+ }
167
+ if (firstLine.includes("@validateHooksUsage false")) {
168
+ validateHooksUsage = false;
169
+ }
170
+ if (firstLine.includes("@validateFrozenLambdas false")) {
171
+ validateHooksUsage = false;
172
+ }
173
+ if (firstLine.includes("@assertValidMutableRanges false")) {
174
+ assertValidMutableRanges = false;
175
+ }
176
for (const fn of parseFunctions(source)) {
177
for (const result of run(fn, {
178
customHooks: new Map([...COMMON_HOOKS]),
179
enableAssumeHooksFollowRulesOfReact,
161
- enableFunctionCallSignatureOptimizations: true,
180
+ enableFunctionCallSignatureOptimizations,
181
disableAllMemoization,
182
enableTreatHooksAsFunctions,
164
- inlineUseMemo: true,
183
+ inlineUseMemo,
184
memoizeJsxElements,
166
- validateHooksUsage: true,
185
+ validateHooksUsage,
186
validateRefAccessDuringRender,
168
- validateFrozenLambdas: true,
187
+ validateFrozenLambdas,
188
enableEmitFreeze,
189
enableOptimizeFunctionExpressions,
171
- assertValidMutableRanges: true,
190
+ assertValidMutableRanges,
191
})) {
192
const fnName = fn.node.id?.name ?? null;
193
switch (result.kind) {