Skip to content

Conversation

@cristianoc
Copy link
Collaborator

This completes Task 8 of the DCE refactor plan, making the analysis phase return an immutable AnalysisResult.t instead of logging directly.

Key changes:

  • Add AnalysisResult module with immutable result type and issue constructors
  • makeDeadIssue: pure function to create dead code issues
  • Decl.report: returns issue list (includes dead module + dead value issues)
  • DeadOptionalArgs.check: returns issue list instead of logging
  • DeadModules.checkModuleDead: returns issue option instead of logging
  • reportDead: returns AnalysisResult.t, caller logs issues

Architecture after this change:
merged_view (immutable) │ ▼ reportDead (pure function) │ ▼ AnalysisResult.t (immutable) │ ▼ report (side effects here only)

Note: Optional args and incorrect annotation issues are still logged inline during resolveRecursiveRefs. A future task could collect these as well.

This completes Tasks 8 and 8b of the DCE refactor plan, making the analysis
phase fully pure - returning an immutable AnalysisResult.t with no inline logging.

Key changes:
- Add AnalysisResult module with immutable result type and issue constructors
- makeDeadIssue: pure function to create dead code issues
- Decl.report: returns issue list (includes dead module + dead value issues)
- DeadOptionalArgs.check: returns issue list instead of logging
- DeadModules.checkModuleDead: returns issue option instead of logging
- reportDead: returns AnalysisResult.t, caller logs issues
- resolveRecursiveRefs: collects all issues (optional args, incorrect annotations)
  via ~issues ref instead of logging inline

Architecture after this change:
  merged_view (immutable)
      │
      ▼
  reportDead (pure function, no logging)
      │
      ▼
  AnalysisResult.t (immutable)
      │
      ▼
  report (all side effects here)
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