/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
compiler/packages/babel-plugin-react-compiler/src/HIR/ComputeUnconditionalBlocks.ts
41 строка
1 KB
lauren
[compiler] Migrate CompilerError.invariant to new CompilerDiagnostic infra (#34403)
06 сен 2025, 19:58
Не верифицирован
06 сен 2025, 19:58
474f258
Код
Авторство
О чём код?
/** * 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 {BlockId, HIRFunction, computePostDominatorTree} from '.'; import {CompilerError} from '..'; export function computeUnconditionalBlocks(fn: HIRFunction): Set<BlockId> { // Construct the set of blocks that is always reachable from the entry block. const unconditionalBlocks = new Set<BlockId>(); const dominators = computePostDominatorTree(fn, { /* * Hooks must only be in a consistent order for executions that return normally, * so we opt-in to viewing throw as a non-exit node. */ includeThrowsAsExitNode: false, }); const exit = dominators.exit; let current: BlockId | null = fn.body.entry; while (current !== null && current !== exit) { CompilerError.invariant(!unconditionalBlocks.has(current), { reason: 'Internal error: non-terminating loop in ComputeUnconditionalBlocks', description: null, details: [ { kind: 'error', loc: null, message: null, }, ], suggestions: null, }); unconditionalBlocks.add(current); current = dominators.get(current); } return unconditionalBlocks; }