8
import {NodePath} from '@babel/traverse';
9
import * as t from '@babel/types';
10
import prettyFormat from 'pretty-format';
11
-import {Logger, ProgramContext} from '.';
11
+import {CompilerOutputMode, Logger, ProgramContext} from '.';
12
import {
13
HIRFunction,
14
ReactiveFunction,
24
pruneUnusedLabelsHIR,
25
} from '../HIR';
26
import {
27
- CompilerMode,
27
Environment,
28
EnvironmentConfig,
29
ReactFunctionType,
119
>,
120
config: EnvironmentConfig,
121
fnType: ReactFunctionType,
123
- mode: CompilerMode,
122
+ mode: CompilerOutputMode,
123
programContext: ProgramContext,
124
logger: Logger | null,
125
filename: string | null,
169
validateUseMemo(hir).unwrap();
170
171
if (
173
- env.isInferredMemoEnabled &&
172
+ env.enableDropManualMemoization &&
173
!env.config.enablePreserveExistingManualUseMemo &&
174
!env.config.disableMemoizationForDebugging &&
175
!env.config.enableChangeDetectionForDebugging
205
inferTypes(hir);
206
log({kind: 'hir', name: 'InferTypes', value: hir});
207
209
- if (env.isInferredMemoEnabled) {
208
+ if (env.enableValidations) {
209
if (env.config.validateHooksUsage) {
210
validateHooksUsage(hir).unwrap();
211
}
231
232
const mutabilityAliasingErrors = inferMutationAliasingEffects(hir);
233
log({kind: 'hir', name: 'InferMutationAliasingEffects', value: hir});
235
- if (env.isInferredMemoEnabled) {
234
+ if (env.enableValidations) {
235
if (mutabilityAliasingErrors.isErr()) {
236
throw mutabilityAliasingErrors.unwrapErr();
237
}
238
}
239
241
- if (env.config.enableOptimizeForSSR) {
240
+ if (env.outputMode === 'ssr') {
241
optimizeForSSR(hir);
242
log({kind: 'hir', name: 'OptimizeForSSR', value: hir});
243
}
258
isFunctionExpression: false,
259
});
260
log({kind: 'hir', name: 'InferMutationAliasingRanges', value: hir});
262
- if (env.isInferredMemoEnabled) {
261
+ if (env.enableValidations) {
262
if (mutabilityAliasingRangeErrors.isErr()) {
263
throw mutabilityAliasingRangeErrors.unwrapErr();
264
}
265
validateLocalsNotReassignedAfterRender(hir);
266
}
267
269
- if (env.isInferredMemoEnabled) {
268
+ if (env.enableValidations) {
269
if (env.config.assertValidMutableRanges) {
270
assertValidMutableRanges(hir);
271
}
309
value: hir,
310
});
311
313
- if (env.isInferredMemoEnabled) {
314
- if (env.config.validateStaticComponents) {
315
- env.logErrors(validateStaticComponents(hir));
316
- }
312
+ if (env.enableValidations && env.config.validateStaticComponents) {
313
+ env.logErrors(validateStaticComponents(hir));
314
+ }
315
316
+ if (env.enableMemoization) {
317
/**
318
* Only create reactive scopes (which directly map to generated memo blocks)
319
* if inferred memoization is enabled. This makes all later passes which
320
* transform reactive-scope labeled instructions no-ops.
321
*/
323
- if (!env.config.enableOptimizeForSSR) {
324
- inferReactiveScopeVariables(hir);
325
- log({kind: 'hir', name: 'InferReactiveScopeVariables', value: hir});
326
- }
322
+ inferReactiveScopeVariables(hir);
323
+ log({kind: 'hir', name: 'InferReactiveScopeVariables', value: hir});
324
}
325
326
const fbtOperands = memoizeFbtAndMacroOperandsInSameScope(hir);
585
>,
586
config: EnvironmentConfig,
587
fnType: ReactFunctionType,
591
- mode: CompilerMode,
588
+ mode: CompilerOutputMode,
589
programContext: ProgramContext,
590
logger: Logger | null,
591
filename: string | null,