Skip to content

Commit fcbf73f

Browse files
committed
refactor(codegen): extract Codecs as an injected component (layered DI, step 1)
First step of converting codegen passes to DI'd classes. The JSON-codec + event/ web-dispatch emitters are a clean leaf (no recursion into expression/statement gen), so they become `class JsonCodecs implements Codecs`, injected into XiCodegen and threaded into genAll. Shared expr-building helpers (jsonEncodeExpr/ jsonDecodeExpr/arrElemCtype) stay free. Acyclic graph confirmed: expr passes never call statements, so ExpressionGen <- StatementGen <- orchestrator is the next steps. Self-hosting fixpoint byte-identical.
1 parent b4f6575 commit fcbf73f

5 files changed

Lines changed: 244 additions & 225 deletions

File tree

compiler/contracts/codecs.xi

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Codecs — JSON (de)serialization + event/web dispatch generation. A leaf
2+
// codegen component (no recursion into expression/statement gen). Implemented by
3+
// JsonCodecs (impl/codegen/codecs.xi); resolved by genAll.
4+
interface Codecs {
5+
mapper genEventCodecs(prog: Program) -> String
6+
mapper genEventFwd(prog: Program) -> String
7+
mapper genEventDispatch(prog: Program) -> String
8+
mapper genWebDispatch(prog: Program) -> String
9+
}

0 commit comments

Comments
 (0)