| 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 | |
| 13 | mod assert_scope_instructions_within_scopes; |
| 14 | mod assert_well_formed_break_targets; |
| 15 | mod build_reactive_function; |
| 16 | pub mod codegen_reactive_function; |
| 17 | mod extract_scope_declarations_from_destructuring; |
| 18 | mod merge_reactive_scopes_that_invalidate_together; |
| 19 | pub mod print_reactive_function; |
| 20 | mod promote_used_temporaries; |
| 21 | mod propagate_early_returns; |
| 22 | mod prune_always_invalidating_scopes; |
| 23 | mod prune_hoisted_contexts; |
| 24 | mod prune_non_escaping_scopes; |
| 25 | mod prune_non_reactive_dependencies; |
| 26 | mod prune_unused_labels; |
| 27 | mod prune_unused_lvalues; |
| 28 | mod prune_unused_scopes; |
| 29 | mod rename_variables; |
| 30 | mod stabilize_block_ids; |
| 31 | pub mod visitors; |
| 32 | |
| 33 | pub use assert_scope_instructions_within_scopes::assert_scope_instructions_within_scopes; |
| 34 | pub use assert_well_formed_break_targets::assert_well_formed_break_targets; |
| 35 | pub use build_reactive_function::build_reactive_function; |
| 36 | pub use codegen_reactive_function::codegen_function; |
| 37 | pub use extract_scope_declarations_from_destructuring::extract_scope_declarations_from_destructuring; |
| 38 | pub use merge_reactive_scopes_that_invalidate_together::merge_reactive_scopes_that_invalidate_together; |
| 39 | pub use print_reactive_function::debug_reactive_function; |
| 40 | pub use promote_used_temporaries::promote_used_temporaries; |
| 41 | pub use propagate_early_returns::propagate_early_returns; |
| 42 | pub use prune_always_invalidating_scopes::prune_always_invalidating_scopes; |
| 43 | pub use prune_hoisted_contexts::prune_hoisted_contexts; |
| 44 | pub use prune_non_escaping_scopes::prune_non_escaping_scopes; |
| 45 | pub use prune_non_reactive_dependencies::prune_non_reactive_dependencies; |
| 46 | pub use prune_unused_labels::prune_unused_labels; |
| 47 | pub use prune_unused_lvalues::prune_unused_lvalues; |
| 48 | pub use prune_unused_scopes::prune_unused_scopes; |
| 49 | pub use rename_variables::rename_variables; |
| 50 | pub use stabilize_block_ids::stabilize_block_ids; |