support 9.6

This commit is contained in:
Aaron Allen 2023-03-16 21:01:13 -05:00
parent 47a232745d
commit e17edc37a1
13 changed files with 191 additions and 245 deletions

View File

@ -1,233 +1,69 @@
# This GitHub workflow config has been generated by a script via
#
# haskell-ci 'github' 'cabal.project'
#
# To regenerate the script (for example after adjusting tested-with) run
#
# haskell-ci regenerate
#
# For more information, see https://github.com/haskell-CI/haskell-ci
#
# version: 0.13.20211116
#
# REGENDATA ("0.13.20211116",["github","cabal.project"])
#
name: Haskell-CI
name: CI
on:
- push
- pull_request
jobs:
linux:
name: Haskell-CI - Linux - ${{ matrix.compiler }}
runs-on: ubuntu-18.04
timeout-minutes:
60
container:
image: buildpack-deps:bionic
continue-on-error: ${{ matrix.allow-failure }}
cabal:
name: ${{ matrix.os }} / ghc ${{ matrix.ghc }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- compiler: ghc-9.2.1
compilerKind: ghc
compilerVersion: 9.2.1
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.0.1
compilerKind: ghc
compilerVersion: 9.0.1
setup-method: hvr-ppa
allow-failure: false
- compiler: ghc-8.10.7
compilerKind: ghc
compilerVersion: 8.10.7
setup-method: ghcup
allow-failure: false
fail-fast: false
steps:
- name: apt
run: |
apt-get update
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
if [ "${{ matrix.setup-method }}" = ghcup ]; then
mkdir -p "$HOME/.ghcup/bin"
curl -sL https://downloads.haskell.org/ghcup/0.1.17.3/x86_64-linux-ghcup-0.1.17.3 > "$HOME/.ghcup/bin/ghcup"
chmod a+x "$HOME/.ghcup/bin/ghcup"
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER"
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0
else
apt-add-repository -y 'ppa:hvr/ghc'
apt-get update
apt-get install -y "$HCNAME"
mkdir -p "$HOME/.ghcup/bin"
curl -sL https://downloads.haskell.org/ghcup/0.1.17.3/x86_64-linux-ghcup-0.1.17.3 > "$HOME/.ghcup/bin/ghcup"
chmod a+x "$HOME/.ghcup/bin/ghcup"
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0
fi
env:
HCKIND: ${{ matrix.compilerKind }}
HCNAME: ${{ matrix.compiler }}
HCVER: ${{ matrix.compilerVersion }}
- name: Set PATH and environment variables
run: |
echo "$HOME/.cabal/bin" >> $GITHUB_PATH
echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
HCDIR=/opt/$HCKIND/$HCVER
if [ "${{ matrix.setup-method }}" = ghcup ]; then
HC=$HOME/.ghcup/bin/$HCKIND-$HCVER
echo "HC=$HC" >> "$GITHUB_ENV"
echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
else
HC=$HCDIR/bin/$HCKIND
echo "HC=$HC" >> "$GITHUB_ENV"
echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
fi
os: [ubuntu-latest]
cabal: ["3.10.1.0"]
ghc:
- "8.10.7"
- "9.0.2"
- "9.2.2"
- "9.4.2"
- "9.6.1"
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
echo "GHCJSARITH=0" >> "$GITHUB_ENV"
env:
HCKIND: ${{ matrix.compilerKind }}
HCNAME: ${{ matrix.compiler }}
HCVER: ${{ matrix.compilerVersion }}
- name: env
run: |
env
- name: write cabal config
run: |
mkdir -p $CABAL_DIR
cat >> $CABAL_CONFIG <<EOF
remote-build-reporting: anonymous
write-ghc-environment-files: never
remote-repo-cache: $CABAL_DIR/packages
logs-dir: $CABAL_DIR/logs
world-file: $CABAL_DIR/world
extra-prog-path: $CABAL_DIR/bin
symlink-bindir: $CABAL_DIR/bin
installdir: $CABAL_DIR/bin
build-summary: $CABAL_DIR/logs/build.log
store-dir: $CABAL_DIR/store
install-dirs user
prefix: $CABAL_DIR
repository hackage.haskell.org
url: http://hackage.haskell.org/
EOF
cat >> $CABAL_CONFIG <<EOF
program-default-options
ghc-options: $GHCJOBS +RTS -M3G -RTS
EOF
cat $CABAL_CONFIG
- name: versions
run: |
$HC --version || true
$HC --print-project-git-commit-id || true
$CABAL --version || true
- name: update cabal index
run: |
$CABAL v2-update -v
- name: install cabal-plan
run: |
mkdir -p $HOME/.cabal/bin
curl -sL https://github.com/haskell-hvr/cabal-plan/releases/download/v0.6.2.0/cabal-plan-0.6.2.0-x86_64-linux.xz > cabal-plan.xz
echo 'de73600b1836d3f55e32d80385acc055fd97f60eaa0ab68a755302685f5d81bc cabal-plan.xz' | sha256sum -c -
xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan
rm -f cabal-plan.xz
chmod a+x $HOME/.cabal/bin/cabal-plan
cabal-plan --version
- name: checkout
uses: actions/checkout@v2
with:
path: source
- name: initial cabal.project for sdist
run: |
touch cabal.project
echo "packages: $GITHUB_WORKSPACE/source/graph-trace-viz" >> cabal.project
echo "packages: $GITHUB_WORKSPACE/source/exe" >> cabal.project
echo "packages: $GITHUB_WORKSPACE/source/graph-trace-dot" >> cabal.project
echo "packages: $GITHUB_WORKSPACE/source/graph-trace" >> cabal.project
cat cabal.project
- name: sdist
run: |
mkdir -p sdist
$CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist
- name: unpack
run: |
mkdir -p unpacked
find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \;
- name: generate cabal.project
run: |
PKGDIR_graph_trace_viz="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/graph-trace-viz-[0-9.]*')"
echo "PKGDIR_graph_trace_viz=${PKGDIR_graph_trace_viz}" >> "$GITHUB_ENV"
PKGDIR_exe="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/exe-[0-9.]*')"
echo "PKGDIR_exe=${PKGDIR_exe}" >> "$GITHUB_ENV"
PKGDIR_graph_trace_dot="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/graph-trace-dot-[0-9.]*')"
echo "PKGDIR_graph_trace_dot=${PKGDIR_graph_trace_dot}" >> "$GITHUB_ENV"
PKGDIR_graph_trace="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/graph-trace-[0-9.]*')"
echo "PKGDIR_graph_trace=${PKGDIR_graph_trace}" >> "$GITHUB_ENV"
rm -f cabal.project cabal.project.local
touch cabal.project
touch cabal.project.local
echo "packages: ${PKGDIR_graph_trace_viz}" >> cabal.project
echo "packages: ${PKGDIR_exe}" >> cabal.project
echo "packages: ${PKGDIR_graph_trace_dot}" >> cabal.project
echo "packages: ${PKGDIR_graph_trace}" >> cabal.project
echo "package graph-trace-viz" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
echo "package exe" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
echo "package graph-trace-dot" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
echo "package graph-trace" >> cabal.project
echo " ghc-options: -Werror=missing-methods" >> cabal.project
cat >> cabal.project <<EOF
EOF
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(exe|graph-trace|graph-trace-dot|graph-trace-viz)$/; }' >> cabal.project.local
cat cabal.project
cat cabal.project.local
- name: dump install plan
run: |
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
cabal-plan
- name: cache
uses: actions/cache@v2
with:
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
path: ~/.cabal/store
restore-keys: ${{ runner.os }}-${{ matrix.compiler }}-
- name: install dependencies
run: |
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j2 all
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dependencies-only -j2 all
- name: build w/o tests
run: |
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
- name: build
run: |
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
- name: cabal check
run: |
cd ${PKGDIR_graph_trace_viz} || false
${CABAL} -vnormal check
cd ${PKGDIR_exe} || false
${CABAL} -vnormal check
cd ${PKGDIR_graph_trace_dot} || false
${CABAL} -vnormal check
cd ${PKGDIR_graph_trace} || false
${CABAL} -vnormal check
- name: haddock
run: |
$CABAL v2-haddock $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
- name: unconstrained build
run: |
rm -f cabal.project.local
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
steps:
- uses: actions/checkout@v3
- uses: haskell/actions/setup@v2.0
id: setup-haskell-cabal
name: Setup Haskell
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: ${{ matrix.cabal }}
- name: Update Cabal Index
run: |
cabal update
- name: Configure
run: |
cabal configure --enable-tests --enable-benchmarks --enable-documentation --test-show-details=direct --write-ghc-environment-files=always
- name: Freeze
run: |
cabal freeze
- uses: actions/cache@v3
name: Cache ~/.cabal/store
with:
path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }}
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}
- name: Install dependencies
run: |
cabal build --dependencies-only -j2 all
cabal build --enable-tests --enable-benchmarks --dependencies-only -j2 all
- name: Build Without Tests
run: |
cabal build --disable-tests --disable-benchmarks all
- name: Build
run: |
cabal build --enable-tests --enable-benchmarks all
- name: Test
run: |
cabal test --enable-tests --enable-benchmarks all
- name: Documentation
run: |
cabal haddock all

View File

@ -1,5 +0,0 @@
# Revision history for DebugPlugin
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.

View File

@ -1,5 +1,9 @@
# Revision history for graph-trace-viz
## 0.1.1.3 -- 2023-03-16
* Support GHC 9.4.x and 9.6.x
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.

View File

@ -1,6 +1,6 @@
cabal-version: 2.4
name: graph-trace-dot
version: 0.1.1.2
version: 0.1.1.3
-- A short (one-line) description of the package.
synopsis:
@ -26,7 +26,7 @@ maintainer: aaronallen8455@gmail.com
copyright: Copyright (C) 2022 Aaron Allen
category: tooling, debug, development, graph, plugin
extra-source-files: CHANGELOG.md
tested-with: GHC==9.2.1, GHC==9.0.1, GHC==9.0.2, GHC==8.10.7
tested-with: GHC==9.6.1, GHC==9.4.4, GHC==9.2.1, GHC==9.0.1, GHC==9.0.2, GHC==8.10.7
library
default-language: Haskell2010

View File

@ -1,5 +1,9 @@
# Revision history for graph-trace-viz
## 0.1.1.1 -- 2023-03-16
* Support GHC 9.4.x and 9.6.x
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.

View File

@ -1,6 +1,6 @@
cabal-version: 2.4
name: graph-trace-viz
version: 0.1.1.0
version: 0.1.1.1
synopsis:
Converts a graph-trace log into an HTML document
@ -26,7 +26,7 @@ maintainer: aaronallen8455@gmail.com
copyright: Copyright (C) 2022 Aaron Allen
category: tooling, debug, development, graph, plugin
extra-source-files: CHANGELOG.md, extras/*.html
tested-with: GHC==9.2.1, GHC==9.0.1, GHC==9.0.2, GHC==8.10.7
tested-with: GHC==9.6.1, GHC==9.4.4, GHC==9.2.1, GHC==9.0.1, GHC==9.0.2, GHC==8.10.7
executable graph-trace-viz
main-is: Main.hs

View File

@ -1,5 +1,9 @@
# Revision history for graph-trace
## 0.1.0.2 -- 2023-03-16
* Support GHC 9.4.x and 9.6.x
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.

View File

@ -1,6 +1,6 @@
cabal-version: 2.4
name: graph-trace
version: 0.1.0.1
version: 0.1.0.2
synopsis:
Trace the call graph of a program
@ -25,7 +25,7 @@ maintainer: aaronallen8455@gmail.com
copyright: Copyright (C) 2022 Aaron Allen
category: tooling, debug, development, graph, plugin
extra-source-files: CHANGELOG.md
tested-with: GHC==9.2.1, GHC==9.0.1, GHC==9.0.2, GHC==8.10.7
tested-with: GHC==9.6.1, GHC==9.4.4, GHC==9.2.1, GHC==9.0.1, GHC==9.0.2, GHC==8.10.7
library
default-language: Haskell2010
@ -39,7 +39,7 @@ library
Graph.Trace.Internal.Predicates
Graph.Trace.Internal.RuntimeRep
build-depends: base >= 4.9 && < 5
, ghc >= 8.0.0 && < 9.4.0
, ghc >= 8.0.0 && < 9.7.0
, ghc-prim
, ghc-boot
, containers

View File

@ -1,4 +1,5 @@
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE CPP #-}
module Graph.Trace
( plugin
, module DT
@ -31,7 +32,11 @@ findImportedModule :: String -> Ghc.TcM Ghc.Module
findImportedModule moduleName = do
hscEnv <- Ghc.getTopEnv
result <- liftIO $
#if MIN_VERSION_ghc(9,4,0)
Ghc.findImportedModule hscEnv (Ghc.mkModuleName moduleName) Ghc.NoPkgQual
#else
Ghc.findImportedModule hscEnv (Ghc.mkModuleName moduleName) Nothing
#endif
case result of
Ghc.Found _ m -> pure m
_ -> error $ "unable to find module: " <> moduleName

View File

@ -19,7 +19,70 @@ module Graph.Trace.Internal.GhcFacade
, pattern L'
) where
#if MIN_VERSION_ghc(9,2,0)
#if MIN_VERSION_ghc(9,6,0)
import GHC.Builtin.Names as Ghc
import GHC.Builtin.Types as Ghc
import GHC.Core.Class as Ghc
import GHC.Core.Make as Ghc
import GHC.Core.Type as Ghc
import GHC.Data.Bag as Ghc
import qualified GHC.Data.EnumSet as EnumSet
import GHC.Data.FastString as Ghc
import GHC.Driver.Plugins as Ghc hiding (TcPlugin, DefaultingPlugin)
import GHC.Driver.Session as Ghc
import GHC.Hs as Ghc hiding (FunDep)
import GHC.Iface.Env as Ghc
import GHC.LanguageExtensions as Ghc hiding (UnicodeSyntax)
import GHC.Rename.Expr as Ghc
import GHC.Tc.Types as Ghc
import GHC.Tc.Types.Constraint as Ghc
import GHC.Tc.Types.Evidence as Ghc
import GHC.Tc.Types.Origin as Ghc
import GHC.Tc.Utils.Monad as Ghc
import GHC.ThToHs as Ghc
import GHC.Types.Basic as Ghc
import GHC.Types.Fixity as Ghc
import GHC.Types.Name as Ghc hiding (varName)
import GHC.Types.PkgQual as Ghc
import GHC.Types.SrcLoc as Ghc
import GHC.Types.Unique.Supply as Ghc
import GHC.Unit.Finder as Ghc
import GHC.Unit.Types as Ghc
import GHC.Utils.Outputable as Ghc
#elif MIN_VERSION_ghc(9,4,0)
import GHC.Builtin.Names as Ghc
import GHC.Builtin.Types as Ghc
import GHC.Core.Class as Ghc
import GHC.Core.Make as Ghc
import GHC.Core.Type as Ghc
import GHC.Data.Bag as Ghc
import qualified GHC.Data.EnumSet as EnumSet
import GHC.Data.FastString as Ghc
import GHC.Driver.Plugins as Ghc hiding (TcPlugin, DefaultingPlugin)
import GHC.Driver.Session as Ghc
import GHC.Hs as Ghc hiding (FunDep)
import GHC.Iface.Env as Ghc
import GHC.LanguageExtensions as Ghc hiding (UnicodeSyntax)
import GHC.Rename.Expr as Ghc
import GHC.Tc.Types as Ghc
import GHC.Tc.Types.Constraint as Ghc
import GHC.Tc.Types.Evidence as Ghc
import GHC.Tc.Types.Origin as Ghc
import GHC.Tc.Utils.Monad as Ghc
import GHC.ThToHs as Ghc
import GHC.Types.Basic as Ghc
import GHC.Types.Fixity as Ghc
import GHC.Types.Name as Ghc hiding (varName)
import GHC.Types.PkgQual as Ghc
import GHC.Types.SrcLoc as Ghc
import GHC.Types.Unique.Supply as Ghc
import GHC.Unit.Finder as Ghc
import GHC.Unit.Module.Name as Ghc
import GHC.Unit.Types as Ghc
import GHC.Utils.Outputable as Ghc
#elif MIN_VERSION_ghc(9,2,0)
import GHC.Builtin.Names as Ghc
import GHC.Builtin.Types as Ghc
import GHC.Core.Class as Ghc
@ -128,7 +191,14 @@ pattern FunBind'
, fun_id'
, fun_matches'
} =
#if MIN_VERSION_ghc(9,0,0)
#if MIN_VERSION_ghc(9,6,0)
FunBind fun_ext' fun_id' fun_matches'
pattern FunBind'
:: XFunBind GhcRn GhcRn
-> LIdP GhcRn
-> MatchGroup GhcRn (LHsExpr GhcRn)
-> HsBindLR GhcRn GhcRn
#elif MIN_VERSION_ghc(9,0,0)
FunBind fun_ext' fun_id' fun_matches' []
pattern FunBind'
:: XFunBind GhcRn GhcRn
@ -210,7 +280,13 @@ pattern HsQualTy'
-> Maybe (LHsContext GhcRn)
-> LHsType GhcRn
-> HsType GhcRn
#if MIN_VERSION_ghc(9,2,0)
#if MIN_VERSION_ghc(9,4,0)
pattern HsQualTy' x lctx body
<- HsQualTy x (Just -> lctx) body
where
HsQualTy' x Nothing body = HsQualTy x (noLocA []) body
HsQualTy' x (Just lctx) body = HsQualTy x lctx body
#elif MIN_VERSION_ghc(9,2,0)
pattern HsQualTy' x lctx body
= HsQualTy x lctx body
#else

View File

@ -107,7 +107,7 @@ modifyBinding
(Ghc.HsBindLR Ghc.GhcRn Ghc.GhcRn)
modifyBinding nameMap debugNames
bnd@Ghc.FunBind { Ghc.fun_id = Ghc.L' loc name
, Ghc.fun_matches = mg@(Ghc.MG _ alts _) }
, Ghc.fun_matches = mg@(Ghc.MG { Ghc.mg_alts = alts }) }
| Just (mUserKey, prop) <- M.lookup name nameMap
= do
let key = case mUserKey of
@ -131,7 +131,11 @@ modifyBinding nameMap _
collectName = \case
Ghc.VarPat _ (Ghc.unLoc -> name)
| M.member name nameMap -> S.singleton name
#if MIN_VERSION_ghc(9,6,0)
Ghc.AsPat _ (Ghc.unLoc -> name) _ _
#else
Ghc.AsPat _ (Ghc.unLoc -> name) _
#endif
| M.member name nameMap -> S.singleton name
_ -> mempty
vars = Syb.everything (<>) (Syb.mkQ mempty collectName) pat
@ -154,7 +158,12 @@ mkWhereBinding whereBindName whereBindExpr =
, Ghc.fun_id' = Ghc.noLocA' whereBindName
, Ghc.fun_matches' =
Ghc.MG
#if MIN_VERSION_ghc(9,6,0)
{ Ghc.mg_ext = Ghc.Generated
#else
{ Ghc.mg_ext = Ghc.NoExtField
, Ghc.mg_origin = Ghc.Generated
#endif
, Ghc.mg_alts = Ghc.noLocA'
[Ghc.noLocA' Ghc.Match
{ Ghc.m_ext = Ghc.emptyEpAnn
@ -167,7 +176,12 @@ mkWhereBinding whereBindName whereBindExpr =
, Ghc.m_grhss = Ghc.GRHSs
{ Ghc.grhssExt = Ghc.emptyComments'
, Ghc.grhssGRHSs =
[ Ghc.noLoc $ Ghc.GRHS
[
#if MIN_VERSION_ghc(9,4,0)
Ghc.noLocA $ Ghc.GRHS
#else
Ghc.noLoc $ Ghc.GRHS
#endif
Ghc.emptyEpAnn
[]
whereBindExpr
@ -177,7 +191,6 @@ mkWhereBinding whereBindName whereBindExpr =
}
}
]
, Ghc.mg_origin = Ghc.Generated
}
}
@ -418,8 +431,13 @@ updateDebugIPInGRHS whereBindName (Ghc.GRHS x guards body)
Ghc.HsIPBinds Ghc.emptyEpAnn $
Ghc.IPBinds Ghc.NoExtField
[ Ghc.noLocA' $ Ghc.IPBind
#if MIN_VERSION_ghc(9,4,0)
Ghc.NoExtField
(Ghc.noLocA' $ Ghc.HsIPName "_debug_ip")
#else
Ghc.emptyEpAnn
(Left . Ghc.noLoc $ Ghc.HsIPName "_debug_ip")
#endif
(Ghc.noLocA' . Ghc.HsVar Ghc.NoExtField
$ Ghc.noLocA' whereBindName
)

View File

@ -1,4 +1,5 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE CPP #-}
module Graph.Trace.Internal.Solver
( tcPlugin
) where
@ -11,6 +12,9 @@ tcPlugin =
{ Ghc.tcPluginInit = pure ()
, Ghc.tcPluginStop = \_ -> pure ()
, Ghc.tcPluginSolve = const tcPluginSolver
#if MIN_VERSION_ghc(9,4,0)
, Ghc.tcPluginRewrite = mempty
#endif
}
debuggerIpKey :: Ghc.FastString

View File

@ -4,7 +4,7 @@ with import <nixpkgs> { inherit system; };
mkShell {
buildInputs = [
haskell.compiler.ghc921
haskell.compiler.ghc924
cabal-install
graphviz
];