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?


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.