Muss GHC-mod vollständige Typen für Typen verwenden?

143

Ich versuche, das ghc-modvim-Plugin zu verwenden, um Typ- / Syntaxprüfungen usw. durchzuführen. Ich habe jedoch festgestellt, dass ghc-modin den Fehlermeldungen immer vollständige Pfadpfade verwendet werden, zum Beispiel:

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

Das macht den Bildschirm unübersichtlich und es ist sehr schwer für mich herauszufinden, wo etwas schief gelaufen ist. Zum Vergleich ist dies die Fehlermeldung für dieselbe Datei mit 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
...

Das ist viel sauberer. Gibt es eine Möglichkeit, ghc-modKurznamen für die Typen zu verwenden?

xzhu
quelle
3
Dies ist nicht das beobachtete Verhalten für mich. Passiert das noch für dich? Welche Versionen von ghcund verwenden ghc-modSie?
Dkasak
3
Haben Sie ein eigenständiges Beispiel (einschließlich Importe), das eine Ausgabe wie oben generiert? Ich glaube, ich habe eine Idee, was das Problem sein könnte, aber es ist ein bisschen schwer, nur von der Ausgabe zu unterscheiden ...
Alec

Antworten:

1

Sie können das Argument von ghc-mod an ghc übergeben als:

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

Dadurch wird das Argument -dsuppress-module-prefixesan ghc gesendet.

Kronos
quelle
0

Sie können versuchen, -dsuppress-module-prefixesals GHC-Option zu übergeben. Irgendwann hat es mir geholfen, Modulqualifizierer in Namen loszuwerden.

sergv
quelle