By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Self-weed: report unused configured roots, root-instances and root-modules Weeder now reports configured `roots` patterns, `root-instances` entries and `root-modules` patterns that match no identifiers, treating stale configuration as a weed in its own right (issue #154). A `roots` pattern is only considered unused when it matches no identifier Weeder is aware of at all (`allDeclarations`), not merely no outputable declaration -- so a root naming a real type or constructor is not flagged just because `unused-types` happens to be disabled. Only entries the user explicitly set are reported; defaults are left alone, since flagging an unconfigured default as unused is not actionable. When `type-class-roots` is set, `root-instances` is ignored entirely and so is never reported. To name the offending entry in the output, compiled patterns now carry their source string (`CompiledRegex`), and `ConfigType` records whether each root section was explicitly configured. Adds a SelfWeeding integration test. No existing golden output changes.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
| Config | 45s | 4s | 4s | 49s | 45s |
| Eval | 1m07s | 10m07s | 12m37s | 13m45s | 17s |
| Build | - | - | - | - | - |
| Suite | 45s | 10m11s | 12m59s | 13m45s | 3m33s |