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 | 1m42s | 7s | 7s | 1m49s | 1m42s |
| Eval | 2m25s | 3m13s | 29m10s | 31m35s | 35s |
| Build | - | - | - | - | - |
| Suite | 1m42s | 3m20s | 29m53s | 31m35s | 28m14s |