/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import { ReactiveFunction, ReactiveScopeBlock, ReactiveStatement, } from '../HIR/HIR'; import { ReactiveFunctionTransform, Transformed, visitReactiveFunction, } from './visitors'; /* * Removes *all* reactive scopes. Intended for experimentation only, to allow * accurately removing memoization using the compiler pipeline to get a baseline * for performance of a product without memoization applied. */ export function pruneAllReactiveScopes(fn: ReactiveFunction): void { visitReactiveFunction(fn, new Transform(), undefined); } class Transform extends ReactiveFunctionTransform { override transformScope( scopeBlock: ReactiveScopeBlock, state: void, ): Transformed { this.visitScope(scopeBlock, state); return {kind: 'replace-many', value: scopeBlock.instructions}; } }