git.iko.soy/typeable/haskell-stack-trace-plugin
on master help sign in
Merge pull request #7 from etorreborre/master

Added support for GHC 8.10

commitd18c37ab40494790dc55c506f3ebb941f64a0a13 authorShinya Yamaguchi <waddlaw@users.noreply.github.com> dateFri 21 May 2021, 14:44 (5 years ago) parent50a8d04f42e35a
3 files changed+34−13
.github/workflows/cabal.yml+2−2 haskell-stack-trace-plugin.cabal+4−4 src/StackTrace/Plugin.hs+28−7
.github/workflows/cabal.yml+2−2
@@ -17,7 +17,7 @@ jobs:
1717 runs-on: ubuntu-18.04
1818 strategy:
1919 matrix:
20− ghc: ["8.6.5", "8.8.1"]
20+ ghc: ["8.6.5", "8.8.1", "8.10.4"]
2121 cabal: ["3.0"]
2222
2323 steps:
@@ -53,4 +53,4 @@ jobs:
5353 - name: Build & Test
5454 run: |
5555 cabal v2-build --flag dev
56− cabal v2-test --flag dev
56+ cabal v2-test --flag dev
haskell-stack-trace-plugin.cabal+4−4
@@ -1,6 +1,6 @@
11cabal-version: 2.4
22name: haskell-stack-trace-plugin
3−version: 0.1.1.1
3+version: 0.1.2.0
44synopsis: haskell-stack-trace-plugin
55description:
66 This plugin allow implicitly add HasCallStack class to every top-level function for all module. Hence, we can to get completely continuous call stack.
@@ -20,7 +20,7 @@ extra-source-files:
2020 CHANGELOG.md
2121 Readme.md
2222
23−tested-with: GHC ==8.6.5 || ==8.8.1
23+tested-with: GHC ==8.6.5 || ==8.8.1 || ==8.10.4
2424
2525source-repository head
2626 type: git
@@ -32,13 +32,13 @@ flag dev
3232 default: False
3333
3434common common-opts
35− build-depends: base >=4.12 && <4.14
35+ build-depends: base >=4.12 && <4.15
3636 default-language: Haskell2010
3737
3838library
3939 import: common-opts
4040 hs-source-dirs: src
41− build-depends: ghc ^>=8.6 || ^>=8.8
41+ build-depends: ghc ^>=8.6 || ^>=8.8 || ^>=8.10
4242 exposed-modules: StackTrace.Plugin
4343
4444 if flag(dev)
src/StackTrace/Plugin.hs+28−7
@@ -1,11 +1,17 @@
11{-# LANGUAGE RankNTypes #-}
22{-# LANGUAGE OverloadedStrings #-}
3+{-# LANGUAGE CPP #-}
34module StackTrace.Plugin (plugin) where
45
56import Control.Arrow (first)
67import Data.Monoid (Any(Any, getAny))
78import GhcPlugins
9+#if __GLASGOW_HASKELL__ >= 810
10+import GHC.Hs
11+#endif
12+#if __GLASGOW_HASKELL__ < 810
813import HsSyn
14+#endif
915
1016type Traversal s t a b
1117 = forall f. Applicative f =>
@@ -28,11 +34,19 @@ parsedPlugin _ _ pm = do
2834ghcStackModuleName :: ModuleName
2935ghcStackModuleName = mkModuleName "AutoImported.GHC.Stack"
3036
37+#if __GLASGOW_HASKELL__ < 810
38+importDeclQualified :: Bool
39+importDeclQualified = True
40+#else
41+importDeclQualified :: ImportDeclQualifiedStyle
42+importDeclQualified = QualifiedPre
43+#endif
44+
3145ghcStackImport :: Located (ImportDecl (GhcPass p))
3246ghcStackImport =
3347 noLoc $
3448 (simpleImportDecl $ mkModuleName "GHC.Stack")
35− {ideclQualified = True, ideclAs = Just $ noLoc ghcStackModuleName}
49+ {ideclQualified = importDeclQualified, ideclAs = Just $ noLoc ghcStackModuleName}
3650
3751updateHsModule :: HsModule GhcPs -> HsModule GhcPs
3852updateHsModule hsm =
@@ -91,17 +105,24 @@ updateHsType :: HsType GhcPs -> (Any, HsType GhcPs)
91105updateHsType (HsQualTy xty ctxt body) =
92106 flagASTModified $ HsQualTy xty (fmap appendHSC ctxt) body
93107updateHsType ty@HsTyVar {} =
94− flagASTModified $ HsQualTy noExt (noLoc $ appendHSC []) (noLoc ty)
108+ flagASTModified $ HsQualTy xQualTy (noLoc $ appendHSC []) (noLoc ty)
95109updateHsType ty@HsAppTy {} =
96− flagASTModified $ HsQualTy noExt (noLoc $ appendHSC []) (noLoc ty)
110+ flagASTModified $ HsQualTy xQualTy (noLoc $ appendHSC []) (noLoc ty)
97111updateHsType ty@HsFunTy {} =
98− flagASTModified $ HsQualTy noExt (noLoc $ appendHSC []) (noLoc ty)
112+ flagASTModified $ HsQualTy xQualTy (noLoc $ appendHSC []) (noLoc ty)
99113updateHsType ty@HsListTy {} =
100− flagASTModified $ HsQualTy noExt (noLoc $ appendHSC []) (noLoc ty)
114+ flagASTModified $ HsQualTy xQualTy (noLoc $ appendHSC []) (noLoc ty)
101115updateHsType ty@HsTupleTy {} =
102− flagASTModified $ HsQualTy noExt (noLoc $ appendHSC []) (noLoc ty)
116+ flagASTModified $ HsQualTy xQualTy (noLoc $ appendHSC []) (noLoc ty)
103117updateHsType ty = pure ty
104118
119+#if __GLASGOW_HASKELL__ < 810
120+xQualTy = noExt
121+#else
122+xQualTy :: NoExtField
123+xQualTy = NoExtField
124+#endif
125+
105126flagASTModified :: a -> (Any, a)
106127flagASTModified a = (Any True, a)
107128
@@ -110,7 +131,7 @@ appendHSC cs = mkHSC : cs
110131
111132-- make HasCallStack => constraint
112133mkHSC :: LHsType GhcPs
113−mkHSC = noLoc $ HsTyVar noExt NotPromoted lId
134+mkHSC = noLoc $ HsTyVar xQualTy NotPromoted lId
114135
115136lId :: Located (IdP GhcPs)
116137lId = noLoc $ mkRdrQual ghcStackModuleName $ mkClsOcc "HasCallStack"