Skip to main content

react_compiler_reactive_scopes/
lib.rs

1// Copyright (c) Meta Platforms, Inc. and affiliates.
2//
3// This source code is licensed under the MIT license found in the
4// LICENSE file in the root directory of this source tree.
5
6//! Reactive scope passes for the React Compiler.
7//!
8//! Converts the HIR CFG into a tree-structured `ReactiveFunction` and runs
9//! scope-related transformation passes (pruning, merging, renaming, etc.).
10//!
11//! Corresponds to `src/ReactiveScopes/` in the TypeScript compiler.
12
13mod assert_scope_instructions_within_scopes;
14mod assert_well_formed_break_targets;
15mod build_reactive_function;
16pub mod codegen_reactive_function;
17mod extract_scope_declarations_from_destructuring;
18mod merge_reactive_scopes_that_invalidate_together;
19pub mod print_reactive_function;
20mod promote_used_temporaries;
21mod propagate_early_returns;
22mod prune_always_invalidating_scopes;
23mod prune_hoisted_contexts;
24mod prune_non_escaping_scopes;
25mod prune_non_reactive_dependencies;
26mod prune_unused_labels;
27mod prune_unused_lvalues;
28mod prune_unused_scopes;
29mod rename_variables;
30mod stabilize_block_ids;
31pub mod visitors;
32
33pub use assert_scope_instructions_within_scopes::assert_scope_instructions_within_scopes;
34pub use assert_well_formed_break_targets::assert_well_formed_break_targets;
35pub use build_reactive_function::build_reactive_function;
36pub use codegen_reactive_function::codegen_function;
37pub use extract_scope_declarations_from_destructuring::extract_scope_declarations_from_destructuring;
38pub use merge_reactive_scopes_that_invalidate_together::merge_reactive_scopes_that_invalidate_together;
39pub use print_reactive_function::debug_reactive_function;
40pub use promote_used_temporaries::promote_used_temporaries;
41pub use propagate_early_returns::propagate_early_returns;
42pub use prune_always_invalidating_scopes::prune_always_invalidating_scopes;
43pub use prune_hoisted_contexts::prune_hoisted_contexts;
44pub use prune_non_escaping_scopes::prune_non_escaping_scopes;
45pub use prune_non_reactive_dependencies::prune_non_reactive_dependencies;
46pub use prune_unused_labels::prune_unused_labels;
47pub use prune_unused_lvalues::prune_unused_lvalues;
48pub use prune_unused_scopes::prune_unused_scopes;
49pub use rename_variables::rename_variables;
50pub use stabilize_block_ids::stabilize_block_ids;