2025-12-21 12:49:53 +09:00
|
|
|
|
//! EdgeCFG Fragment API(Phase 264: 入口SSOT)
|
|
|
|
|
|
//!
|
|
|
|
|
|
//! # コア概念
|
|
|
|
|
|
//! - [`ExitKind`]: 脱出種別(一次概念)
|
|
|
|
|
|
//! - [`EdgeStub`]: 未配線エッジ
|
|
|
|
|
|
//! - [`Frag`]: CFG断片
|
|
|
|
|
|
//! - [`compose`]: 合成関数群(Phase 264: TODO実装、pub(crate))
|
|
|
|
|
|
//!
|
|
|
|
|
|
//! # 設計原則
|
|
|
|
|
|
//! - ExitKind を一次概念にし、pattern番号は「形の認識」までに縮退
|
|
|
|
|
|
//! - 値の合流は EdgeCFG の block params + edge-args で表す(PHI/推測/メタに逃げない)
|
|
|
|
|
|
//! - Fail-Fast: verify で不変条件を早期検証
|
|
|
|
|
|
//!
|
|
|
|
|
|
//! # 関連文書
|
|
|
|
|
|
//! - 北極星設計: `docs/development/current/main/design/edgecfg-fragments.md`
|
|
|
|
|
|
//! - EdgeCFG 基盤: `docs/development/current/main/design/join-explicit-cfg-construction.md`
|
|
|
|
|
|
|
|
|
|
|
|
pub mod exit_kind;
|
|
|
|
|
|
pub mod edge_stub;
|
|
|
|
|
|
pub mod frag;
|
|
|
|
|
|
pub mod compose;
|
|
|
|
|
|
pub mod verify;
|
2025-12-21 17:20:48 +09:00
|
|
|
|
pub mod emit; // Phase 266: 追加
|
2025-12-21 20:33:11 +09:00
|
|
|
|
pub mod branch_stub; // Phase 267 P0: 追加
|
2025-12-21 12:49:53 +09:00
|
|
|
|
|
|
|
|
|
|
// 公開型(安定)
|
|
|
|
|
|
pub use exit_kind::ExitKind;
|
|
|
|
|
|
pub use edge_stub::EdgeStub;
|
|
|
|
|
|
pub use frag::Frag;
|
2025-12-21 20:33:11 +09:00
|
|
|
|
pub use branch_stub::BranchStub; // Phase 267 P0: 追加
|
2025-12-21 12:49:53 +09:00
|
|
|
|
|
|
|
|
|
|
// 合成関数(Phase 264: crate内のみ公開、Phase 265+でpub化)
|
|
|
|
|
|
pub(crate) use compose::{seq, if_, loop_, cleanup};
|
|
|
|
|
|
|
|
|
|
|
|
// 検証関数
|
|
|
|
|
|
pub use verify::verify_frag_invariants;
|
2025-12-23 00:11:20 +09:00
|
|
|
|
// Phase 266: strict 版追加
|
2025-12-21 17:20:48 +09:00
|
|
|
|
|
2025-12-21 20:33:11 +09:00
|
|
|
|
// Phase 267 P0: wires + branches → MIR terminator 変換
|
2025-12-23 00:11:20 +09:00
|
|
|
|
pub use emit::emit_frag;
|