By: Tom Sydney Kerckhove <syd@cs-syd.eu>
#1701, add a "Redundant module qualifier" hint Type occurrences like 'Map.Map', 'Set.Set' or 'Text.Text' stutter: the qualifier's last component repeats the type name. A module may be imported twice, so the qualified import can stay and a second import can bring just the type into scope unqualified: import Data.Map (Map) import Data.Map qualified as Map The hint says so in a note, naming the module the qualifier resolves to. It fires on any type occurrence of the shape <X>.<X>, so both 'Map.Map' and 'Data.Map.Map' are flagged, in signatures, data and newtype declarations, type synonyms, instance heads and expression type annotations. Value-level occurrences are untouched. Severity is Suggestion, since whether the extra import is worth it is a matter of taste. Dropping the qualifier only compiles once the type is in scope unqualified, which HLint cannot arrange, so the hint offers no refactoring. Claude-Session: https://claude.ai/code/session_01JbL9Ex7jZ7ANs2HMeSuWgd