GHC-mod doit-il utiliser des noms complets pour les types?

143

J'essaie d'utiliser le ghc-modplugin vim pour faire la vérification de type / syntaxe, etc. Cependant, j'ai trouvé que cela ghc-modutilise toujours des chemins complets de types dans les messages d'erreur, par exemple:

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
...

ce qui encombre l'écran et il m'est très difficile de savoir où s'est passé. À titre de comparaison, voici le message d'erreur pour le même fichier en utilisant 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
...

ce qui est beaucoup plus propre. Existe-t-il un moyen d' ghc-modutiliser des noms courts pour les types?

xzhu
la source
3
Ce n'est pas le comportement observé pour moi. Cela se passe-t-il encore pour vous? Quelles versions de ghcet ghc-modutilisez-vous?
dkasak
3
Avez-vous un exemple autonome (importations incluses) qui génère une sortie comme ci-dessus? Je pense que j'ai une idée de ce que pourrait être le problème, mais c'est un peu difficile à dire uniquement à partir de la sortie ...
Alec

Réponses:

1

Vous pouvez passer l'argument à ghc depuis ghc-mod comme:

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

Cela enverra l'argument -dsuppress-module-prefixesà ghc.

Kronos
la source
0

Vous pouvez essayer de passer -dsuppress-module-prefixescomme une option GHC. À un moment donné, cela m'a aidé à me débarrasser des qualificatifs de module dans les noms.

sergv
la source