Skip to content

Conversation

@cristianoc
Copy link
Collaborator

Applies the map → list → merge pattern to references and cross-file items.

Task 5: References

New module: References.ml/.mli

  • builder (mutable) for AST processing
  • t (immutable) for solver
  • Tracks both value refs and type refs
  • PosSet for position sets

Changes:

  • Thread ~refs:References.builder through AST processing
  • addValueReference, addTypeReference use References API
  • Solver uses References.find_value_refs, References.find_type_refs
  • Deleted global ValueReferences.table and TypeReferences.table

Task 6: CrossFileItems (renamed from DelayedItems)

New module: CrossFileItems.ml/.mli

  • builder (mutable) for AST processing
  • t (immutable) for processing after merge
  • Three item types: exception_refs, optional_arg_calls, function_refs

Changes:

  • Thread ~cross_file:CrossFileItems.builder through AST processing
  • DeadException.markAsUsed adds to cross_file builder
  • DeadOptionalArgs.addReferences, addFunctionReference add to cross_file
  • Deleted global delayedItems refs from DeadException and DeadOptionalArgs

Data flow

process_cmt_file (per-file)
    → file_data { annotations; decls; refs; cross_file }

Merge phase:
    FileAnnotations.merge_all → annotations (immutable)
    Declarations.merge_all → decls (immutable)
    CrossFileItems.merge_all → cross_file (immutable)
    References builders merged into refs_builder

Process cross-file items:
    process_exception_refs → writes to refs_builder
    process_optional_args → reads decls

Freeze:
    refs_builder → refs (immutable)

Solver:
    reportDead ~annotations ~decls ~refs

Global state deleted

  • DeadCommon.ValueReferences.table
  • DeadCommon.TypeReferences.table
  • DeadException.delayedItems
  • DeadOptionalArgs.delayedItems
  • DeadOptionalArgs.functionReferences

Naming

Renamed DelayedItems → CrossFileItems because it better describes the semantic meaning: items that reference across file boundaries.

Applies the map → list → merge pattern to references and cross-file items.

## Task 5: References

New module: References.ml/.mli
- builder (mutable) for AST processing
- t (immutable) for solver
- Tracks both value refs and type refs
- PosSet for position sets

Changes:
- Thread ~refs:References.builder through AST processing
- addValueReference, addTypeReference use References API
- Solver uses References.find_value_refs, References.find_type_refs
- Deleted global ValueReferences.table and TypeReferences.table

## Task 6: CrossFileItems (renamed from DelayedItems)

New module: CrossFileItems.ml/.mli
- builder (mutable) for AST processing
- t (immutable) for processing after merge
- Three item types: exception_refs, optional_arg_calls, function_refs

Changes:
- Thread ~cross_file:CrossFileItems.builder through AST processing
- DeadException.markAsUsed adds to cross_file builder
- DeadOptionalArgs.addReferences, addFunctionReference add to cross_file
- Deleted global delayedItems refs from DeadException and DeadOptionalArgs

## Data flow

    process_cmt_file (per-file)
        → file_data { annotations; decls; refs; cross_file }

    Merge phase:
        FileAnnotations.merge_all → annotations (immutable)
        Declarations.merge_all → decls (immutable)
        CrossFileItems.merge_all → cross_file (immutable)
        References builders merged into refs_builder

    Process cross-file items:
        process_exception_refs → writes to refs_builder
        process_optional_args → reads decls

    Freeze:
        refs_builder → refs (immutable)

    Solver:
        reportDead ~annotations ~decls ~refs

## Global state deleted

- DeadCommon.ValueReferences.table
- DeadCommon.TypeReferences.table
- DeadException.delayedItems
- DeadOptionalArgs.delayedItems
- DeadOptionalArgs.functionReferences

## Naming

Renamed DelayedItems → CrossFileItems because it better describes
the semantic meaning: items that reference across file boundaries.
@cristianoc cristianoc merged commit 90726f9 into reanalyze-dce-plan Dec 8, 2025
@cristianoc cristianoc deleted the dce-task5-6-references-crossfile branch December 8, 2025 08:15
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