mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-27 06:43:19 +08:00
lower-exprs.ts had grown to 17.1k lines, and its import block and the big branches of lowerExprInner were edited by about half of all changes to it, so concurrent changes conflicted there. Its declarations move, as is, into files under frontend/lowering/expressions/: identifiers, property-access, typeof, element-access, binary, relational, narrowing, updates and array-literals. lowerExprInner's identifier, property-access and typeof branches become functions of their own in those files, called from the branch. Helpers move with their only users; helpers shared across files stay in lower-exprs.ts, which re-exports every moved name it exported, so other modules' imports are unchanged. The move changes no behavior: the zero-cost gate compiles the benchmarks, the self-hosted compiler and the corpus to identical IR, LLVM and executables.