Czy GHC-mod musi używać pełnych nazw typów?

143

Próbuję użyć ghc-modwtyczki vim do sprawdzania typu / składni itp. Jednak odkryłem, że ghc-modzawsze używa pełnych ścieżek typów w komunikatach o błędach, na przykład:

test.hs|71 col 13 error| Couldn't match type Data.Text.Internal.Text                                                                                   
||                with ‘[GHC.Types.Char]’
|| Expected type: containers-0.5.6.2:Data.Map.Base.Map
||                  [GHC.Types.Char]
||                  ([(integer-gmp-1.0.0.0:GHC.Integer.Type.Integer,
||                     integer-gmp-1.0.0.0:GHC.Integer.Type.Integer)],
||                   containers-0.5.6.2:Data.Set.Base.Set
||                     integer-gmp-1.0.0.0:GHC.Integer.Type.Integer)
||   Actual type: containers-0.5.6.2:Data.Map.Base.Map
||                  Data.Text.Internal.Text
||                  ([(integer-gmp-1.0.0.0:GHC.Integer.Type.Integer,
||                     integer-gmp-1.0.0.0:GHC.Integer.Type.Integer)],
||                   containers-0.5.6.2:Data.Set.Base.Set
||                     integer-gmp-1.0.0.0:GHC.Integer.Type.Integer)
|| In the second argument of containers-0.5.6.2:Data.Map.Base.map’, namely
||   zippedMap
|| In the second argument of ‘(GHC.Base.$)’, namely
||   containers-0.5.6.2:Data.Map.Base.map
...

co zaśmieca ekran i bardzo trudno mi się dowiedzieć, gdzie poszło źle. Dla porównania jest to komunikat o błędzie dla tego samego pliku przy użyciu ghci:

test.hs:71:13:
    Couldn't match type T.Text with ‘[Char]’
    Expected type: M.Map [Char] ([(Integer, Integer)], S.Set Integer)
      Actual type: M.Map T.Text ([(Integer, Integer)], S.Set Integer)
    In the second argument of M.map’, namely zippedMap
    In the second argument of ‘($)’, namely
      M.map
...

który jest znacznie czystszy. Czy istnieje sposób na ghc-modużywanie krótkich nazw typów?

xzhu
źródło
3
To nie jest obserwowane dla mnie zachowanie. Czy to się nadal dzieje dla Ciebie? Których wersji ghci ghc-modużywasz?
dkasak
3
Czy masz samodzielny przykład (w tym import), który generuje wyniki podobne do powyższego? Myślę, że mam pojęcie w czym może być problem, ale trochę trudno to stwierdzić tylko po wyjściu ...
Alec

Odpowiedzi:

1

Możesz przekazać argument do ghc z ghc-mod jako:

$ ghc-mod lint *.hs -g -dsuppress-module-prefixes

To wyśle ​​argument -dsuppress-module-prefixesdo ghc.

Kronos
źródło
0

Możesz spróbować przekazać -dsuppress-module-prefixesjako opcję GHC. W pewnym momencie pomogło mi to pozbyć się kwalifikatorów modułów w nazwach.

sergv
źródło