Skip to content

Conversation

@cristianoc
Copy link
Collaborator

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)

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)
@cristianoc cristianoc merged commit feb98a0 into reanalyze-dce-plan Dec 8, 2025
@cristianoc cristianoc deleted the dce-task7-file-deps branch December 8, 2025 08:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants