on develop help sign in
Merge pull request #454 from reflex-frp/try-backport-ghc-10
ca187bbJohn Ericson
.github/workflows/haskell.ymlnew file+41
@@ -0,0 +1,41 @@
1+name: github-action
2+
3+on: [push, pull_request]
4+
5+jobs:
6+ build:
7+ strategy:
8+ matrix:
9+ ghc: ['8.4.4', '8.6.5', '8.8.4', '8.10.2']
10+ os: ['ubuntu-latest', 'macos-latest']
11+ runs-on: ${{ matrix.os }}
12+
13+ name: GHC ${{ matrix.ghc }} on ${{ matrix.os }}
14+ steps:
15+ - uses: actions/checkout@v2
16+ - uses: actions/setup-haskell@v1
17+ with:
18+ ghc-version: ${{ matrix.ghc }}
19+ - name: Cache
20+ uses: actions/cache@v1
21+ env:
22+ cache-name: cache-cabal
23+ with:
24+ path: ~/.cabal
25+ key: ${{ runner.os }}-${{ matrix.ghc }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/cabal.project') }}
26+ restore-keys: |
27+ ${{ runner.os }}-${{ matrix.ghc }}-build-${{ env.cache-name }}-
28+ ${{ runner.os }}-${{ matrix.ghc }}-build-
29+ ${{ runner.os }}-${{ matrix.ghc }}-
30+ ${{ runner.os }}
31+
32+ - name: Install dependencies
33+ run: |
34+ cabal update
35+ cabal build --only-dependencies --enable-tests --enable-benchmarks
36+ - name: Build
37+ run: cabal build --enable-tests --enable-benchmarks all
38+ - name: Run tests
39+ run: cabal test all
40+ - name: Build Docs
41+ run: cabal haddock
.travis.ymldeleted−177
@@ -1,177 +0,0 @@
1−# This Travis job script has been generated by a script via
2−#
3−# haskell-ci '--config=cabal.haskell-ci' 'cabal.project'
4−#
5−# For more information, see https://github.com/haskell-CI/haskell-ci
6−#
7−# version: 0.3.20190814
8−#
9−language: c
10−dist: xenial
11−sudo: required
12−git:
13− # whether to recursively clone submodules
14− submodules: false
15−cache:
16− directories:
17− - $HOME/.cabal/packages
18− - $HOME/.cabal/store
19−before_cache:
20− - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
21− # remove files that are regenerated by 'cabal update'
22− - rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
23− - rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
24− - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
25− - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
26− - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
27− - rm -rfv $CABALHOME/packages/head.hackage
28−matrix:
29− include:
30− - compiler: ghcjs-8.4
31− addons: {"apt":{"sources":["hvr-ghc"],"packages":["cabal-install-3.0"]}}
32− - compiler: ghc-8.8.1
33− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.8.1","cabal-install-3.0"]}}
34− - compiler: ghc-8.6.5
35− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-2.4"]}}
36− - compiler: ghc-8.4.4
37− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.4.4","cabal-install-2.4"]}}
38− - compiler: ghc-8.2.2
39− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.2.2","cabal-install-2.4"]}}
40− - compiler: ghc-8.0.2
41− addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.0.2","cabal-install-2.4"]}}
42−before_install:
43− - |
44− if [ "$TRAVIS_OS_NAME" = "linux" ]; then
45− sudo add-apt-repository -y ppa:hvr/ghcjs;
46− curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
47− sudo apt-add-repository 'https://deb.nodesource.com/node_8.x xenial main'
48− sudo apt-get update;
49− sudo apt-get install $CC cabal-install-3.0 nodejs;
50− fi
51− - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
52− - WITHCOMPILER="-w $HC"
53− - |
54− if echo $CC | grep -q ghcjs; then
55− GHCJS=true
56− HC=${HC}js
57− WITHCOMPILER="--ghcjs ${WITHCOMPILER}js"
58− else
59− GHCJS=false;
60− fi
61− - if $GHCJS ; then sudo apt-get install -y ghc-8.4.4 ; fi
62− - if $GHCJS ; then PATH="/opt/ghc/8.4.4/bin:$PATH" ; fi
63− - HCPKG="$HC-pkg"
64− - unset CC
65− - CABAL=/opt/ghc/bin/cabal
66− - CABALHOME=$HOME/.cabal
67− - export PATH="$CABALHOME/bin:$PATH"
68− - TOP=$(pwd)
69− - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"
70− - echo $HCNUMVER
71− - CABAL="$CABAL -vnormal+nowrap+markoutput"
72− - set -o pipefail
73− - |
74− echo 'function blue(s) { printf "\033[0;34m" s "\033[0m " }' >> .colorful.awk
75− echo 'BEGIN { state = "output"; }' >> .colorful.awk
76− echo '/^-----BEGIN CABAL OUTPUT-----$/ { state = "cabal" }' >> .colorful.awk
77− echo '/^-----END CABAL OUTPUT-----$/ { state = "output" }' >> .colorful.awk
78− echo '!/^(-----BEGIN CABAL OUTPUT-----|-----END CABAL OUTPUT-----)/ {' >> .colorful.awk
79− echo ' if (state == "cabal") {' >> .colorful.awk
80− echo ' print blue($0)' >> .colorful.awk
81− echo ' } else {' >> .colorful.awk
82− echo ' print $0' >> .colorful.awk
83− echo ' }' >> .colorful.awk
84− echo '}' >> .colorful.awk
85− - cat .colorful.awk
86− - |
87− color_cabal_output () {
88− awk -f $TOP/.colorful.awk
89− }
90− - echo text | color_cabal_output
91−install:
92− - ${CABAL} --version
93− - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
94− - node --version
95− - echo $GHCJS
96− - TEST=--enable-tests
97− - BENCH=--enable-benchmarks
98− - BENCH=--disable-benchmarks
99− - HEADHACKAGE=false
100− - rm -f $CABALHOME/config
101− - |
102− echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
103− echo "remote-build-reporting: anonymous" >> $CABALHOME/config
104− echo "write-ghc-environment-files: always" >> $CABALHOME/config
105− echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
106− echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
107− echo "world-file: $CABALHOME/world" >> $CABALHOME/config
108− echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
109− echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
110− echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
111− echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
112− echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
113− echo "install-dirs user" >> $CABALHOME/config
114− echo " prefix: $CABALHOME" >> $CABALHOME/config
115− echo "repository hackage.haskell.org" >> $CABALHOME/config
116− echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
117− - cat $CABALHOME/config
118− - rm -fv cabal.project cabal.project.local cabal.project.freeze
119− - travis_retry ${CABAL} v2-update -v
120− - if $GHCJS ; then (cd /tmp && ${CABAL} v2-install -w ghc-8.4.4 happy) ; fi
121− # Generate cabal.project
122− - rm -rf cabal.project cabal.project.local cabal.project.freeze
123− - touch cabal.project
124− - |
125− echo "packages: ." >> cabal.project
126− - |
127− - cat cabal.project || true
128− - cat cabal.project.local || true
129− - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
130− - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output
131− - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
132− - rm cabal.project.freeze
133−script:
134− - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
135− # Packaging...
136− - ${CABAL} v2-sdist all | color_cabal_output
137− # Unpacking...
138− - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
139− - cd ${DISTDIR} || false
140− - find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \;
141− - find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm '{}' \;
142− - PKGDIR_reflex="$(find . -maxdepth 1 -type d -regex '.*/reflex-[0-9.]*')"
143− # Generate cabal.project
144− - rm -rf cabal.project cabal.project.local cabal.project.freeze
145− - touch cabal.project
146− - |
147− echo "packages: ${PKGDIR_reflex}" >> cabal.project
148− - |
149− - cat cabal.project || true
150− - cat cabal.project.local || true
151− # Building...
152− # this builds all libraries and executables (without tests/benchmarks)
153− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
154− # Building with tests and benchmarks...
155− # build & run tests, build benchmarks
156− - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
157− # Testing...
158− - if ! $GHCJS ; then ${CABAL} v2-test $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output ; fi
159− # cabal check...
160− - (cd ${PKGDIR_reflex} && ${CABAL} -vnormal check)
161− # haddock...
162− - if ! $GHCJS ; then ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output ; fi
163− # Constraint sets
164− - rm -rf cabal.project.local
165− # Constraint set no-th
166− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='reflex -use-template-haskell' all | color_cabal_output
167− # Constraint set old-these
168− - if $GHCJS || ! $GHCJS && [ $HCNUMVER -lt 80800 ] ; then ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='these <1' all | color_cabal_output ; fi
169− # Constraint set old-witherable
170− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='witherable <0.3.2' all | color_cabal_output
171− # Constraint set debug-propagation
172− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='reflex +debug-propagation' all | color_cabal_output
173− # Constraint set debug-cycles
174− - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='reflex +debug-cycles' all | color_cabal_output
175−
176−# REGENDATA ["--config=cabal.haskell-ci","cabal.project"]
177−# EOF
ChangeLog.md+6
@@ -1,5 +1,11 @@
1# Revision history for reflex
1# Revision history for reflex
2
2
3+## 0.7.1.1
4+
5+* Add support for GHC 8.10
6+* Extend some dependency version bounds
7+* Fix HLint 3 test
8+
3## 0.7.1.0
9## 0.7.1.0
4
10
5* ([#413](https://github.com/reflex-frp/reflex/pull/413), [#417](https://github.com/reflex-frp/reflex/pull/417)) Add `Reflex.Host.Headless` module which provides `runHeadlessApp` as an easy way to run a Reflex network in a "headless" environment.
11* ([#413](https://github.com/reflex-frp/reflex/pull/413), [#417](https://github.com/reflex-frp/reflex/pull/417)) Add `Reflex.Host.Headless` module which provides `runHeadlessApp` as an easy way to run a Reflex network in a "headless" environment.
README.md+1−1
@@ -1,6 +1,6 @@
1## [Reflex](https://reflex-frp.org/)
1## [Reflex](https://reflex-frp.org/)
2
2
3−[![Hackage](https://img.shields.io/hackage/v/reflex.svg)](http://hackage.haskell.org/package/reflex)
3+[![Haskell](https://img.shields.io/badge/language-Haskell-orange.svg)](https://haskell.org) [![Hackage](https://img.shields.io/hackage/v/reflex.svg)](https://hackage.haskell.org/package/reflex) [![Hackage CI](https://matrix.hackage.haskell.org/api/v2/packages/reflex/badge)](https://matrix.hackage.haskell.org/#/package/reflex) [![BSD3 License](https://img.shields.io/badge/license-BSD3-blue.svg)](https://github.com/reflex-frp/reflex/blob/master/LICENSE)
4
4
5### Practical Functional Reactive Programming
5### Practical Functional Reactive Programming
6
6
cabal.project.freezedeleted−2
@@ -1,2 +0,0 @@
1−constraints: any.text < 1.2.4.0
2− , hlint < 2.2.6 || > 2.2.6
reflex.cabal+17−13
@@ -1,5 +1,5 @@
1Name: reflex
1Name: reflex
2−Version: 0.7.1.0
2+Version: 0.7.1.1
3Synopsis: Higher-order Functional Reactive Programming
3Synopsis: Higher-order Functional Reactive Programming
4Description: Reflex is a high-performance, deterministic, higher-order Functional Reactive Programming system
4Description: Reflex is a high-performance, deterministic, higher-order Functional Reactive Programming system
5License: BSD3
5License: BSD3
@@ -18,8 +18,8 @@ extra-source-files:
18 ChangeLog.md
18 ChangeLog.md
19
19
20tested-with:
20tested-with:
21− GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1,
21+ GHC ==8.4.4 || ==8.6.5 || ==8.8.1 || ==8.10.2,
22− GHCJS ==8.4
22+ GHCJS ==8.6
23
23
24flag use-reflex-optimizer
24flag use-reflex-optimizer
25 description: Use the GHC plugin Reflex.Optimizer on some of the modules in the package. This is still experimental.
25 description: Use the GHC plugin Reflex.Optimizer on some of the modules in the package. This is still experimental.
@@ -61,21 +61,22 @@ library
61 hs-source-dirs: src
61 hs-source-dirs: src
62 build-depends:
62 build-depends:
63 MemoTrie == 0.6.*,
63 MemoTrie == 0.6.*,
64− base >= 4.9 && < 4.14,
64+ base >= 4.11 && < 4.15,
65 bifunctors >= 5.2 && < 5.6,
65 bifunctors >= 5.2 && < 5.6,
66 comonad >= 5.0.4 && < 5.1,
66 comonad >= 5.0.4 && < 5.1,
67 constraints-extras >= 0.3 && < 0.4,
67 constraints-extras >= 0.3 && < 0.4,
68 containers >= 0.6 && < 0.7,
68 containers >= 0.6 && < 0.7,
69 data-default >= 0.5 && < 0.8,
69 data-default >= 0.5 && < 0.8,
70− dependent-map >= 0.3 && < 0.4,
70+ dependent-map >= 0.3 && < 0.5,
71 exception-transformers == 0.4.*,
71 exception-transformers == 0.4.*,
72 lens >= 4.7 && < 5,
72 lens >= 4.7 && < 5,
73+ mmorph >= 1.0 && < 1.2,
73 monad-control >= 1.0.1 && < 1.1,
74 monad-control >= 1.0.1 && < 1.1,
74 mtl >= 2.1 && < 2.3,
75 mtl >= 2.1 && < 2.3,
75 patch >= 0.0.1 && < 0.1,
76 patch >= 0.0.1 && < 0.1,
76− prim-uniq >= 0.1.0.1 && < 0.2,
77+ prim-uniq >= 0.1.0.1 && < 0.3,
77 primitive >= 0.5 && < 0.8,
78 primitive >= 0.5 && < 0.8,
78− profunctors >= 5.3 && < 5.6,
79+ profunctors >= 5.3 && < 5.7,
79 random == 1.1.*,
80 random == 1.1.*,
80 ref-tf == 0.4.*,
81 ref-tf == 0.4.*,
81 reflection == 2.1.*,
82 reflection == 2.1.*,
@@ -85,10 +86,10 @@ library
85 time >= 1.4 && < 1.10,
86 time >= 1.4 && < 1.10,
86 transformers >= 0.5.6.0 && < 0.6,
87 transformers >= 0.5.6.0 && < 0.6,
87 unbounded-delays >= 0.1.0.0 && < 0.2,
88 unbounded-delays >= 0.1.0.0 && < 0.2,
88− witherable >= 0.3 && < 0.3.2
89+ witherable >= 0.3 && < 0.4
89
90
90 if flag(split-these)
91 if flag(split-these)
91− build-depends: these >= 1 && <1.1,
92+ build-depends: these >= 1 && <1.2,
92 semialign >=1 && <1.2,
93 semialign >=1 && <1.2,
93 monoidal-containers >= 0.6 && < 0.7
94 monoidal-containers >= 0.6 && < 0.7
94 else
95 else
@@ -170,10 +171,10 @@ library
170 if flag(use-template-haskell)
171 if flag(use-template-haskell)
171 cpp-options: -DUSE_TEMPLATE_HASKELL
172 cpp-options: -DUSE_TEMPLATE_HASKELL
172 build-depends:
173 build-depends:
173− dependent-sum >= 0.6 && < 0.7,
174+ dependent-sum >= 0.6 && < 0.8,
174− haskell-src-exts >= 1.16 && < 1.23,
175+ haskell-src-exts >= 1.16 && < 1.24,
175 haskell-src-meta >= 0.6 && < 0.9,
176 haskell-src-meta >= 0.6 && < 0.9,
176− template-haskell >= 2.9 && < 2.16
177+ template-haskell >= 2.9 && < 2.17
177 exposed-modules:
178 exposed-modules:
178 Reflex.Dynamic.TH
179 Reflex.Dynamic.TH
179 other-extensions: TemplateHaskell
180 other-extensions: TemplateHaskell
@@ -244,7 +245,10 @@ test-suite hlint
244 , directory
245 , directory
245 , filepath
246 , filepath
246 , filemanip
247 , filemanip
248+ if impl(ghc >= 8.8)
249+ build-depends: hlint >= 3
250+ else
247− , hlint (< 2.1 || >= 2.2.2) && < 3
251+ build-depends: hlint (< 2.1 || >= 2.2.2) && < 3
248 if impl(ghcjs)
252 if impl(ghcjs)
249 buildable: False
253 buildable: False
250
254
src/Reflex/Adjustable/Class.hs+2−1
@@ -30,7 +30,8 @@ module Reflex.Adjustable.Class
30
30
31import Control.Monad.Identity
31import Control.Monad.Identity
32import Control.Monad.Reader
32import Control.Monad.Reader
33−import Data.Dependent.Map (DMap, GCompare (..))
33+import Data.Dependent.Map (DMap)
34+import Data.GADT.Compare (GCompare(..))
34import qualified Data.Dependent.Map as DMap
35import qualified Data.Dependent.Map as DMap
35import Data.Functor.Constant
36import Data.Functor.Constant
36import Data.Functor.Misc
37import Data.Functor.Misc
src/Reflex/Class.hs+2−1
@@ -196,7 +196,8 @@ import Data.Align
196import Data.Bifunctor
196import Data.Bifunctor
197import Data.Coerce
197import Data.Coerce
198import Data.Default
198import Data.Default
199−import Data.Dependent.Map (DMap, DSum (..))
199+import Data.Dependent.Map (DMap)
200+import Data.Dependent.Sum (DSum (..))
200import qualified Data.Dependent.Map as DMap
201import qualified Data.Dependent.Map as DMap
201import Data.Functor.Compose
202import Data.Functor.Compose
202import Data.Functor.Product
203import Data.Functor.Product
src/Reflex/EventWriter/Base.hs+2−1
@@ -39,8 +39,9 @@ import Control.Monad.Primitive
39import Control.Monad.Reader
39import Control.Monad.Reader
40import Control.Monad.Ref
40import Control.Monad.Ref
41import Control.Monad.State.Strict
41import Control.Monad.State.Strict
42−import Data.Dependent.Map (DMap, DSum (..))
42+import Data.Dependent.Map (DMap)
43import qualified Data.Dependent.Map as DMap
43import qualified Data.Dependent.Map as DMap
44+import Data.Dependent.Sum (DSum (..))
44import Data.Functor.Compose
45import Data.Functor.Compose
45import Data.Functor.Misc
46import Data.Functor.Misc
46import Data.GADT.Compare (GCompare (..), GEq (..), GOrdering (..))
47import Data.GADT.Compare (GCompare (..), GEq (..), GOrdering (..))
src/Reflex/PerformEvent/Class.hs−1
@@ -8,7 +8,6 @@
8{-# LANGUAGE RankNTypes #-}
8{-# LANGUAGE RankNTypes #-}
9{-# LANGUAGE ScopedTypeVariables #-}
9{-# LANGUAGE ScopedTypeVariables #-}
10{-# LANGUAGE TypeFamilies #-}
10{-# LANGUAGE TypeFamilies #-}
11−{-# LANGUAGE TypeOperators #-}
12{-# LANGUAGE UndecidableInstances #-}
11{-# LANGUAGE UndecidableInstances #-}
13#ifdef USE_REFLEX_OPTIMIZER
12#ifdef USE_REFLEX_OPTIMIZER
14{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
13{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
src/Reflex/PostBuild/Base.hs−1
@@ -9,7 +9,6 @@
9{-# LANGUAGE RecursiveDo #-}
9{-# LANGUAGE RecursiveDo #-}
10{-# LANGUAGE ScopedTypeVariables #-}
10{-# LANGUAGE ScopedTypeVariables #-}
11{-# LANGUAGE TypeFamilies #-}
11{-# LANGUAGE TypeFamilies #-}
12−{-# LANGUAGE TypeOperators #-}
13{-# LANGUAGE UndecidableInstances #-}
12{-# LANGUAGE UndecidableInstances #-}
14#ifdef USE_REFLEX_OPTIMIZER
13#ifdef USE_REFLEX_OPTIMIZER
15{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
14{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
src/Reflex/PostBuild/Class.hs−1
@@ -6,7 +6,6 @@
6{-# LANGUAGE FunctionalDependencies #-}
6{-# LANGUAGE FunctionalDependencies #-}
7{-# LANGUAGE ScopedTypeVariables #-}
7{-# LANGUAGE ScopedTypeVariables #-}
8{-# LANGUAGE TypeFamilies #-}
8{-# LANGUAGE TypeFamilies #-}
9−{-# LANGUAGE TypeOperators #-}
10{-# LANGUAGE UndecidableInstances #-}
9{-# LANGUAGE UndecidableInstances #-}
11#ifdef USE_REFLEX_OPTIMIZER
10#ifdef USE_REFLEX_OPTIMIZER
12{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
11{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
src/Reflex/Profiled.hs+3−2
@@ -28,7 +28,8 @@ import Control.Monad.Ref
28import Control.Monad.State.Strict (StateT, execStateT, modify)
28import Control.Monad.State.Strict (StateT, execStateT, modify)
29import Data.Bifunctor
29import Data.Bifunctor
30import Data.Coerce
30import Data.Coerce
31−import Data.Dependent.Map (DMap, GCompare)
31+import Data.Dependent.Map (DMap)
32+import Data.GADT.Compare (GCompare)
32import Data.FastMutableIntMap
33import Data.FastMutableIntMap
33import Data.IORef
34import Data.IORef
34import Data.List
35import Data.List
@@ -146,7 +147,7 @@ instance Reflex t => Reflex (ProfiledTimeline t) where
146 pushCheap f (Event_Profiled e) = coerce $ pushCheap (coerce f) $ profileEvent e
147 pushCheap f (Event_Profiled e) = coerce $ pushCheap (coerce f) $ profileEvent e
147 pull = Behavior_Profiled . pull . coerce
148 pull = Behavior_Profiled . pull . coerce
148 fanG (Event_Profiled e) = EventSelectorG $ coerce $ selectG (fanG $ profileEvent e)
149 fanG (Event_Profiled e) = EventSelectorG $ coerce $ selectG (fanG $ profileEvent e)
149− mergeG :: forall (k :: z -> *) q v. GCompare k
150+ mergeG :: forall z (k :: z -> *) q v. GCompare k
150 => (forall a. q a -> Event (ProfiledTimeline t) (v a))
151 => (forall a. q a -> Event (ProfiledTimeline t) (v a))
151 -> DMap k q -> Event (ProfiledTimeline t) (DMap k v)
152 -> DMap k q -> Event (ProfiledTimeline t) (DMap k v)
152 mergeG nt = Event_Profiled #. mergeG (coerce nt)
153 mergeG nt = Event_Profiled #. mergeG (coerce nt)
src/Reflex/Pure.hs+2−1
@@ -32,7 +32,8 @@ module Reflex.Pure
32 ) where
32 ) where
33
33
34import Control.Monad
34import Control.Monad
35−import Data.Dependent.Map (DMap, GCompare)
35+import Data.Dependent.Map (DMap)
36+import Data.GADT.Compare (GCompare)
36import qualified Data.Dependent.Map as DMap
37import qualified Data.Dependent.Map as DMap
37import Data.IntMap (IntMap)
38import Data.IntMap (IntMap)
38import qualified Data.IntMap as IntMap
39import qualified Data.IntMap as IntMap
src/Reflex/Query/Base.hs+5−3
@@ -27,11 +27,13 @@ import Control.Monad.Reader
27import Control.Monad.Ref
27import Control.Monad.Ref
28import Control.Monad.State.Strict
28import Control.Monad.State.Strict
29import Data.Align
29import Data.Align
30−import Data.Dependent.Map (DMap, DSum (..))
30+import Data.Dependent.Map (DMap)
31import qualified Data.Dependent.Map as DMap
31import qualified Data.Dependent.Map as DMap
32+import Data.Dependent.Sum (DSum(..))
32import Data.Foldable
33import Data.Foldable
33import Data.Functor.Compose
34import Data.Functor.Compose
34import Data.Functor.Misc
35import Data.Functor.Misc
36+import Data.GADT.Compare (GCompare)
35import Data.IntMap (IntMap)
37import Data.IntMap (IntMap)
36import qualified Data.IntMap as IntMap
38import qualified Data.IntMap as IntMap
37import Data.Map (Map)
39import Data.Map (Map)
@@ -135,7 +137,7 @@ instance (Reflex t, MonadFix m, Group q, Additive q, Query q, Eq q, MonadHold t
135 tellQueryIncremental $ unsafeBuildIncremental (fold <$> mapM sampleBs liftedBs0) qpatch
137 tellQueryIncremental $ unsafeBuildIncremental (fold <$> mapM sampleBs liftedBs0) qpatch
136 return (liftedResult0, liftedResult')
138 return (liftedResult0, liftedResult')
137
139
138− traverseDMapWithKeyWithAdjust :: forall (k :: * -> *) v v'. (DMap.GCompare k) => (forall a. k a -> v a -> QueryT t q m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> QueryT t q m (DMap k v', Event t (PatchDMap k v'))
140+ traverseDMapWithKeyWithAdjust :: forall (k :: * -> *) v v'. (GCompare k) => (forall a. k a -> v a -> QueryT t q m (v' a)) -> DMap k v -> Event t (PatchDMap k v) -> QueryT t q m (DMap k v', Event t (PatchDMap k v'))
139 traverseDMapWithKeyWithAdjust f dm0 dm' = do
141 traverseDMapWithKeyWithAdjust f dm0 dm' = do
140 let f' :: forall a. k a -> v a -> EventWriterT t q (ReaderT (Dynamic t (QueryResult q)) m) (Compose (QueryTLoweredResult t q) v' a)
142 let f' :: forall a. k a -> v a -> EventWriterT t q (ReaderT (Dynamic t (QueryResult q)) m) (Compose (QueryTLoweredResult t q) v' a)
141 f' k v = fmap (Compose . QueryTLoweredResult) $ flip runStateT [] $ unQueryT $ f k v
143 f' k v = fmap (Compose . QueryTLoweredResult) $ flip runStateT [] $ unQueryT $ f k v
@@ -180,7 +182,7 @@ instance (Reflex t, MonadFix m, Group q, Additive q, Query q, Eq q, MonadHold t
180 tellQueryIncremental $ unsafeBuildIncremental (fold <$> mapM sampleBs liftedBs0) qpatch
182 tellQueryIncremental $ unsafeBuildIncremental (fold <$> mapM sampleBs liftedBs0) qpatch
181 return (liftedResult0, liftedResult')
183 return (liftedResult0, liftedResult')
182
184
183− traverseDMapWithKeyWithAdjustWithMove :: forall (k :: * -> *) v v'. (DMap.GCompare k) => (forall a. k a -> v a -> QueryT t q m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> QueryT t q m (DMap k v', Event t (PatchDMapWithMove k v'))
185+ traverseDMapWithKeyWithAdjustWithMove :: forall (k :: * -> *) v v'. (GCompare k) => (forall a. k a -> v a -> QueryT t q m (v' a)) -> DMap k v -> Event t (PatchDMapWithMove k v) -> QueryT t q m (DMap k v', Event t (PatchDMapWithMove k v'))
184 traverseDMapWithKeyWithAdjustWithMove f dm0 dm' = do
186 traverseDMapWithKeyWithAdjustWithMove f dm0 dm' = do
185 let f' :: forall a. k a -> v a -> EventWriterT t q (ReaderT (Dynamic t (QueryResult q)) m) (Compose (QueryTLoweredResult t q) v' a)
187 let f' :: forall a. k a -> v a -> EventWriterT t q (ReaderT (Dynamic t (QueryResult q)) m) (Compose (QueryTLoweredResult t q) v' a)
186 f' k v = fmap (Compose . QueryTLoweredResult) $ flip runStateT [] $ unQueryT $ f k v
188 f' k v = fmap (Compose . QueryTLoweredResult) $ flip runStateT [] $ unQueryT $ f k v
src/Reflex/Requester/Base.hs+2−1
@@ -55,8 +55,9 @@ import Control.Monad.Ref
55import Control.Monad.State.Strict
55import Control.Monad.State.Strict
56import Data.Bits
56import Data.Bits
57import Data.Coerce
57import Data.Coerce
58−import Data.Dependent.Map (DMap, DSum (..))
58+import Data.Dependent.Map (DMap)
59import qualified Data.Dependent.Map as DMap
59import qualified Data.Dependent.Map as DMap
60+import Data.Dependent.Sum (DSum (..))
60import Data.Functor.Compose
61import Data.Functor.Compose
61import Data.Functor.Misc
62import Data.Functor.Misc
62import Data.IntMap.Strict (IntMap)
63import Data.IntMap.Strict (IntMap)
src/Reflex/Spider/Internal.hs+4−3
@@ -9,7 +9,6 @@
9{-# LANGUAGE GADTs #-}
9{-# LANGUAGE GADTs #-}
10{-# LANGUAGE GeneralizedNewtypeDeriving #-}
10{-# LANGUAGE GeneralizedNewtypeDeriving #-}
11{-# LANGUAGE LambdaCase #-}
11{-# LANGUAGE LambdaCase #-}
12−{-# LANGUAGE MultiWayIf #-}
13{-# LANGUAGE RankNTypes #-}
12{-# LANGUAGE RankNTypes #-}
14{-# LANGUAGE RoleAnnotations #-}
13{-# LANGUAGE RoleAnnotations #-}
15{-# LANGUAGE ScopedTypeVariables #-}
14{-# LANGUAGE ScopedTypeVariables #-}
@@ -20,6 +19,7 @@
20{-# LANGUAGE DeriveFunctor #-}
19{-# LANGUAGE DeriveFunctor #-}
21{-# LANGUAGE StandaloneDeriving #-}
20{-# LANGUAGE StandaloneDeriving #-}
22{-# LANGUAGE InstanceSigs #-}
21{-# LANGUAGE InstanceSigs #-}
22+{-# LANGUAGE MultiWayIf #-}
23
23
24#ifdef USE_REFLEX_OPTIMIZER
24#ifdef USE_REFLEX_OPTIMIZER
25{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
25{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
@@ -46,8 +46,9 @@ import Control.Monad.Fail (MonadFail)
46import qualified Control.Monad.Fail as MonadFail
46import qualified Control.Monad.Fail as MonadFail
47import Data.Align
47import Data.Align
48import Data.Coerce
48import Data.Coerce
49−import Data.Dependent.Map (DMap, DSum (..))
49+import Data.Dependent.Map (DMap)
50import qualified Data.Dependent.Map as DMap
50import qualified Data.Dependent.Map as DMap
51+import Data.Dependent.Sum (DSum (..))
51import Data.FastMutableIntMap (FastMutableIntMap, PatchIntMap (..))
52import Data.FastMutableIntMap (FastMutableIntMap, PatchIntMap (..))
52import qualified Data.FastMutableIntMap as FastMutableIntMap
53import qualified Data.FastMutableIntMap as FastMutableIntMap
53import Data.Foldable hiding (concat, elem, sequence_)
54import Data.Foldable hiding (concat, elem, sequence_)
@@ -2739,7 +2740,7 @@ instance HasSpiderTimeline x => R.Reflex (SpiderTimeline x) where
2739 fanG e = R.EventSelectorG $ SpiderEvent . selectG (fanG (unSpiderEvent e))
2740 fanG e = R.EventSelectorG $ SpiderEvent . selectG (fanG (unSpiderEvent e))
2740 {-# INLINABLE mergeG #-}
2741 {-# INLINABLE mergeG #-}
2741 mergeG
2742 mergeG
2742− :: forall (k :: k2 -> *) q (v :: k2 -> *). GCompare k
2743+ :: forall k2 (k :: k2 -> *) q (v :: k2 -> *). GCompare k
2743 => (forall a. q a -> R.Event (SpiderTimeline x) (v a))
2744 => (forall a. q a -> R.Event (SpiderTimeline x) (v a))
2744 -> DMap k q
2745 -> DMap k q
2745 -> R.Event (SpiderTimeline x) (DMap k v)
2746 -> R.Event (SpiderTimeline x) (DMap k v)
test/GC.hs+1
@@ -18,6 +18,7 @@ import Data.GADT.Compare
18import Data.IORef
18import Data.IORef
19import Data.Semigroup
19import Data.Semigroup
20import Data.These
20import Data.These
21+import Data.Type.Equality ((:~:)(Refl))
21
22
22import Data.Functor.Misc
23import Data.Functor.Misc
23import Data.Patch
24import Data.Patch
test/Reflex/Test/CrossImpl.hs+1−1
@@ -26,7 +26,7 @@ import qualified Reflex.Profiled as Prof
26import Control.Arrow (second, (&&&))
26import Control.Arrow (second, (&&&))
27import Control.Monad.Identity hiding (forM, forM_, mapM, mapM_, sequence, sequence_)
27import Control.Monad.Identity hiding (forM, forM_, mapM, mapM_, sequence, sequence_)
28import Control.Monad.State.Strict hiding (forM, forM_, mapM, mapM_, sequence, sequence_)
28import Control.Monad.State.Strict hiding (forM, forM_, mapM, mapM_, sequence, sequence_)
29−import Data.Dependent.Map (DSum (..))
29+import Data.Dependent.Sum (DSum (..))
30import Data.Foldable
30import Data.Foldable
31import Data.Map.Strict (Map)
31import Data.Map.Strict (Map)
32import qualified Data.Map.Strict as Map
32import qualified Data.Map.Strict as Map
test/hlint.hs+2−1
@@ -1,7 +1,7 @@
1module Main where
1module Main where
2
2
3import Control.Monad
3import Control.Monad
4−import Language.Haskell.HLint3 (hlint)
4+import Language.Haskell.HLint (hlint)
5import System.Directory
5import System.Directory
6import System.Exit (exitFailure, exitSuccess)
6import System.Exit (exitFailure, exitSuccess)
7import System.FilePath
7import System.FilePath
@@ -22,6 +22,7 @@ main = do
22 , "--ignore=Use unless"
22 , "--ignore=Use unless"
23 , "--ignore=Reduce duplication"
23 , "--ignore=Reduce duplication"
24 , "--cpp-define=USE_TEMPLATE_HASKELL"
24 , "--cpp-define=USE_TEMPLATE_HASKELL"
25+ , "--cpp-define=DEBUG"
25 , "--ignore=Use tuple-section"
26 , "--ignore=Use tuple-section"
26 ]
27 ]
27 recurseInto = and <$> sequence
28 recurseInto = and <$> sequence