You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DCE: Task 7 - FileDeps pattern for file dependencies
Applies the map → list → merge pattern to file dependencies.
## New module: FileDeps.ml/.mli
- `builder` (mutable) for AST processing
- `t` (immutable) for solver
- `add_file`: Register a file as existing
- `add_dep`: Add a dependency from one file to another
- `merge_all`: Merge all builders into immutable result
- `iter_files_from_roots_to_leaves`: Pure topological ordering
## Changes
- Thread `~file_deps:FileDeps.builder` through AST processing
- `addValueReference` records cross-file dependencies to builder
- `process_cmt_file` returns `file_deps` in `file_data`
- `reportDead` takes `~file_deps:FileDeps.t` (immutable)
- Moved topological sort from DeadCommon to FileDeps (pure function)
## Global state deleted
- `Common.FileReferences.table` - replaced by per-file FileDeps builders
## Data flow
process_cmt_file (per-file)
→ file_data { ..., file_deps: builder }
Merge phase:
FileDeps builders merged for cross-file items
Freeze:
file_deps_builder → file_deps (immutable)
Solver:
reportDead ~file_deps (uses iter_files_from_roots_to_leaves)
0 commit comments