[SAOC 2025] Separate Semantic Routines from AST Nodes Weekly Update #6

Mohamed El Shorbagy mohrizq895 at gmail.com
Mon Oct 27 17:59:23 UTC 2025


# Summary of Progress (October 20 - October 27)

This week is a continuation of the work done to break the 
dependency of `dmd/mtype.d` on semantic functions. `mtype.d` (as 
we speak) is essentially dependent on three semantic files: 
`dsymbolsem`, `enumsem`, and `typesem`. The first two are almost 
trivial (one function is imported from each) and they have 
already been eliminated in the following PRs:
- (Merged) [Move `Type.hasInvariant` to 
`typesem`](https://github.com/dlang/dmd/pull/22018).
- (Merged) [Move `Type.hasVoidInitPointers` to 
`typesem`](https://github.com/dlang/dmd/pull/22023).
- (Merged) [Move `Type.alignment` to 
`typesem`](https://github.com/dlang/dmd/pull/22024)
- (Open) [Break semantic dependency of `mtype` on 
`dsymbolsem`](https://github.com/dlang/dmd/pull/22031)
- (Open) [Break semantic dependency of `mtype` on 
`enumsem`](https://github.com/dlang/dmd/pull/22032).

The final dependency (on `typesem`) is tricky not in the 
complexity of the refactoring but in the number of changes 
needed. The work has already started with moving the static 
function `Type._init` to `typesem` (see [Merged 
PR](https://github.com/dlang/dmd/pull/22025)) and I should 
continue eliminating the rest of imports over the course of the 
next week or so.


More information about the Digitalmars-d mailing list