summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndresSicardRamirez <>2013-06-10 14:49:28 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2013-06-10 14:49:28 (GMT)
commit4c69c51e1be57411b005638cd7480b1833cedd42 (patch)
tree1493a99c013ac2370d4882aa425cbdebd9c127c0
parentb6659d4ed792ed48bf2136e7a6b449d492d1cef8 (diff)
version 2.3.2.12.3.2.1
-rw-r--r--Agda.cabal17
-rw-r--r--dist/build/Agda/Syntax/Parser/Lexer.hs62
-rw-r--r--dist/build/Agda/Syntax/Parser/Parser.hs4
-rw-r--r--doc/release-notes/2-3-2-1.txt18
-rw-r--r--src/data/emacs-mode/agda2-mode.el2
-rw-r--r--src/full/Agda/Syntax/Abstract/Name.hs8
-rw-r--r--src/full/Agda/Syntax/Common.hs4
-rw-r--r--src/full/Agda/Termination/CallGraph.hs3
-rw-r--r--src/full/Agda/Termination/SparseMatrix.hs75
-rw-r--r--src/full/Agda/Utils/Pointer.hs2
10 files changed, 127 insertions, 68 deletions
diff --git a/Agda.cabal b/Agda.cabal
index d5e35bf..de6b235 100644
--- a/Agda.cabal
+++ b/Agda.cabal
@@ -1,5 +1,5 @@
name: Agda
-version: 2.3.2
+version: 2.3.2.1
cabal-version: >= 1.8
build-type: Simple
license: OtherLicense
@@ -32,7 +32,7 @@ description:
Note that the Agda library does not follow the package versioning
policy, because it is not intended to be used by third-party
packages.
-tested-with: GHC == 7.6.1
+tested-with: GHC == 7.6.3
extra-source-files: src/full/Agda/undefined.h
README
doc/release-notes/*.txt
@@ -51,7 +51,7 @@ source-repository head
source-repository this
type: darcs
location: http://code.haskell.org/Agda/
- tag: 2.3.2
+ tag: 2.3.2.1
flag epic
default: False
@@ -65,11 +65,12 @@ library
build-depends: epic >= 0.1.13 && < 0.10
if os(windows)
- build-depends: Win32 == 2.2.*
+ build-depends: Win32 >= 2.2 && < 2.4
build-depends: base >= 4.2 && < 4.7,
- mtl >= 2.0 && < 2.2,
- QuickCheck >= 2.3 && < 2.6,
+ -- mtl-2.1 contains a severe bug
+ mtl >= 2.0 && < 2.1 || >= 2.1.1 && < 2.2,
+ QuickCheck >= 2.3 && < 2.7,
haskell-src-exts >= 1.9.6 && < 1.14,
containers >= 0.1 && < 0.6,
unordered-containers == 0.2.*,
@@ -82,7 +83,7 @@ library
process >= 1.0.1.0 && < 1.2,
haskeline >= 0.6.3.2 && < 0.8,
xhtml == 3000.2.*,
- hashable >= 1.1.2.3 && < 1.2,
+ hashable >= 1.1.2.3 && < 1.3,
hashtables == 1.0.*,
geniplate >= 0.6.0.3 && < 0.7,
parallel < 3.3,
@@ -347,7 +348,7 @@ library
executable agda
hs-source-dirs: src/main
main-is: Main.hs
- build-depends: Agda == 2.3.2,
+ build-depends: Agda == 2.3.2.1,
-- Nothing is used from the following package, except
-- for the prelude.
base >= 3 && < 6
diff --git a/dist/build/Agda/Syntax/Parser/Lexer.hs b/dist/build/Agda/Syntax/Parser/Lexer.hs
index 1436d16..101c533 100644
--- a/dist/build/Agda/Syntax/Parser/Lexer.hs
+++ b/dist/build/Agda/Syntax/Parser/Lexer.hs
@@ -61,7 +61,7 @@ alex_check = AlexA# "\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7d\x00\x2d\x00\x2
alex_deflt :: AlexAddr
alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x27\x00\x29\x00\x29\x00\xff\xff\x2b\x00\x2b\x00\x2d\x00\x2d\x00\x32\x00\x32\x00\x35\x00\x35\x00\x38\x00\x38\x00\x3d\x00\x3d\x00\xff\xff\xad\x00\xad\x00\xad\x00\x8e\x00\x8e\x00\x8e\x00\x48\x00\x48\x00\x48\x00\x3e\x00\xff\xff\x3e\x00\x3e\x00\x3e\x00\xff\xff\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\x8e\x00\xff\xff\xff\xff\xad\x00\xb1\x00\xad\x00\xb1\x00\xb1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-alex_accept = listArray (0::Int,408) [[],[(AlexAccPred (alex_action_30) ( not' eof ))],[],[(AlexAcc (alex_action_33))],[],[(AlexAcc (alex_action_32))],[],[(AlexAccPred (alex_action_4) ( eof ))],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAccSkip)],[(AlexAccPred (alex_action_0) (alexRightContext 58)),(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccPred (alex_action_1) ( keepComments )),(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccPred (alex_action_5) ( inState code ))],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_9))],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_24))],[(AlexAccPred (alex_action_25) ( not' (followedBy '#') ))],[(AlexAccPred (alex_action_25) ( not' (followedBy '#') ))],[(AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof ))],[(AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )),(AlexAccSkipPred ( followedBy '\n' .||. eof )),(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_28))],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))],[(AlexAcc (alex_action_50))],[(AlexAcc (alex_action_51))],[(AlexAcc (alex_action_52))],[(AlexAcc (alex_action_53))],[(AlexAcc (alex_action_54))],[(AlexAcc (alex_action_55))],[(AlexAcc (alex_action_56))],[(AlexAcc (alex_action_57))],[(AlexAcc (alex_action_58))],[(AlexAcc (alex_action_59))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_60))],[(AlexAcc (alex_action_61))],[(AlexAcc (alex_action_62))],[(AlexAcc (alex_action_63))],[(AlexAcc (alex_action_64))],[(AlexAcc (alex_action_65))],[(AlexAcc (alex_action_66))],[(AlexAcc (alex_action_67))],[(AlexAcc (alex_action_68))],[(AlexAcc (alex_action_69))],[(AlexAcc (alex_action_70))],[(AlexAcc (alex_action_71))],[(AlexAcc (alex_action_72))],[(AlexAcc (alex_action_73))],[(AlexAcc (alex_action_74))],[(AlexAcc (alex_action_75))],[(AlexAcc (alex_action_76))],[(AlexAcc (alex_action_77))],[(AlexAcc (alex_action_78))],[(AlexAcc (alex_action_79))],[(AlexAcc (alex_action_80))],[(AlexAcc (alex_action_81))],[(AlexAcc (alex_action_82))],[(AlexAcc (alex_action_83))],[(AlexAcc (alex_action_84))],[(AlexAcc (alex_action_85))],[(AlexAcc (alex_action_86))],[(AlexAccPred (alex_action_87) (alexRightContext 59))],[(AlexAcc (alex_action_88))],[(AlexAcc (alex_action_89))],[(AlexAcc (alex_action_90))],[(AlexAcc (alex_action_91))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_92))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_93))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))],[(AlexAcc (alex_action_94))]]
+alex_accept = listArray (0::Int,408) [AlexAccNone,AlexAccPred (alex_action_30) ( not' eof )(AlexAccNone),AlexAccNone,AlexAcc (alex_action_33),AlexAccNone,AlexAcc (alex_action_32),AlexAccNone,AlexAccPred (alex_action_4) ( eof )(AlexAccNone),AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccPred (alex_action_0) (alexRightContext 58)(AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip)),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccSkip,AlexAccPred (alex_action_5) ( inState code )(AlexAccNone),AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAcc (alex_action_21),AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAcc (alex_action_24),AlexAccPred (alex_action_25) ( not' (followedBy '#') )(AlexAccNone),AlexAccPred (alex_action_25) ( not' (followedBy '#') )(AlexAccNone),AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred (alex_action_26) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc (alex_action_94))),AlexAcc (alex_action_28),AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_39),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_44),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58),AlexAcc (alex_action_59),AlexAcc (alex_action_60),AlexAcc (alex_action_60),AlexAcc (alex_action_60),AlexAcc (alex_action_61),AlexAcc (alex_action_62),AlexAcc (alex_action_63),AlexAcc (alex_action_64),AlexAcc (alex_action_65),AlexAcc (alex_action_66),AlexAcc (alex_action_67),AlexAcc (alex_action_68),AlexAcc (alex_action_69),AlexAcc (alex_action_70),AlexAcc (alex_action_71),AlexAcc (alex_action_72),AlexAcc (alex_action_73),AlexAcc (alex_action_74),AlexAcc (alex_action_75),AlexAcc (alex_action_76),AlexAcc (alex_action_77),AlexAcc (alex_action_78),AlexAcc (alex_action_79),AlexAcc (alex_action_80),AlexAcc (alex_action_81),AlexAcc (alex_action_82),AlexAcc (alex_action_83),AlexAcc (alex_action_84),AlexAcc (alex_action_85),AlexAcc (alex_action_86),AlexAccPred (alex_action_87) (alexRightContext 59)(AlexAccNone),AlexAcc (alex_action_88),AlexAcc (alex_action_89),AlexAcc (alex_action_90),AlexAcc (alex_action_91),AlexAcc (alex_action_92),AlexAcc (alex_action_92),AlexAcc (alex_action_92),AlexAcc (alex_action_92),AlexAcc (alex_action_92),AlexAcc (alex_action_93),AlexAcc (alex_action_93),AlexAcc (alex_action_93),AlexAcc (alex_action_93),AlexAcc (alex_action_93),AlexAcc (alex_action_93),AlexAcc (alex_action_93),AlexAcc (alex_action_93),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94),AlexAcc (alex_action_94)]
{-# LINE 212 "src/full/Agda/Syntax/Parser/Lexer.x" #-}
@@ -237,7 +237,7 @@ alex_action_94 = identifier
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command line>" #-}
+{-# LINE 1 "<command-line>" #-}
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- -----------------------------------------------------------------------------
-- ALEX TEMPLATE
@@ -248,9 +248,9 @@ alex_action_94 = identifier
-- -----------------------------------------------------------------------------
-- INTERNALS and main scanner engine
-{-# LINE 37 "templates/GenericTemplate.hs" #-}
+{-# LINE 35 "templates/GenericTemplate.hs" #-}
-{-# LINE 47 "templates/GenericTemplate.hs" #-}
+{-# LINE 45 "templates/GenericTemplate.hs" #-}
data AlexAddr = AlexA# Addr#
@@ -281,14 +281,14 @@ alexIndexInt32OffAddr (AlexA# arr) off =
#ifdef WORDS_BIGENDIAN
narrow32Int# i
where
- !i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
+ i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
(b2 `uncheckedShiftL#` 16#) `or#`
(b1 `uncheckedShiftL#` 8#) `or#` b0)
- !b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
- !b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
- !b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
- !b0 = int2Word# (ord# (indexCharOffAddr# arr off'))
- !off' = off *# 4#
+ b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
+ b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
+ b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
+ b0 = int2Word# (ord# (indexCharOffAddr# arr off'))
+ off' = off *# 4#
#else
indexInt32OffAddr# arr off
#endif
@@ -363,35 +363,40 @@ alex_scan_tkn user orig_input len input s last_acc =
- let
- (base) = alexIndexInt32OffAddr alex_base s
- ((I# (ord_c))) = fromIntegral c
- (offset) = (base +# ord_c)
- (check) = alexIndexInt16OffAddr alex_check offset
+ case fromIntegral c of { (I# (ord_c)) ->
+ let
+ base = alexIndexInt32OffAddr alex_base s
+ offset = (base +# ord_c)
+ check = alexIndexInt16OffAddr alex_check offset
- (new_s) = if (offset >=# 0#) && (check ==# ord_c)
+ new_s = if (offset >=# 0#) && (check ==# ord_c)
then alexIndexInt16OffAddr alex_table offset
else alexIndexInt16OffAddr alex_deflt s
in
- case new_s of
+ case new_s of
-1# -> (new_acc, input)
-- on an error, we want to keep the input *before* the
-- character that failed, not after.
_ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
-- note that the length is increased ONLY if this is the 1st byte in a char encoding)
new_input new_s new_acc
-
+ }
where
- check_accs [] = last_acc
- check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))
- check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len))
- check_accs (AlexAccPred a predx : rest)
+ check_accs (AlexAccNone) = last_acc
+ check_accs (AlexAcc a ) = AlexLastAcc a input (I# (len))
+ check_accs (AlexAccSkip) = AlexLastSkip input (I# (len))
+
+ check_accs (AlexAccPred a predx rest)
| predx user orig_input (I# (len)) input
= AlexLastAcc a input (I# (len))
- check_accs (AlexAccSkipPred predx : rest)
+ | otherwise
+ = check_accs rest
+ check_accs (AlexAccSkipPred predx rest)
| predx user orig_input (I# (len)) input
= AlexLastSkip input (I# (len))
- check_accs (_ : rest) = check_accs rest
+ | otherwise
+ = check_accs rest
+
data AlexLastAcc a
= AlexNone
@@ -404,10 +409,12 @@ instance Functor AlexLastAcc where
fmap f (AlexLastSkip x y) = AlexLastSkip x y
data AlexAcc a user
- = AlexAcc a
+ = AlexAccNone
+ | AlexAcc a
| AlexAccSkip
- | AlexAccPred a (AlexAccPred user)
- | AlexAccSkipPred (AlexAccPred user)
+
+ | AlexAccPred a (AlexAccPred user) (AlexAcc a user)
+ | AlexAccSkipPred (AlexAccPred user) (AlexAcc a user)
type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
@@ -434,5 +441,6 @@ alexRightContext (I# (sc)) user _ _ input =
-- match when checking the right context, just
-- the first match will do.
+
-- used by wrappers
iUnbox (I# (i)) = i
diff --git a/dist/build/Agda/Syntax/Parser/Parser.hs b/dist/build/Agda/Syntax/Parser/Parser.hs
index 0a4f0a2..920e056 100644
--- a/dist/build/Agda/Syntax/Parser/Parser.hs
+++ b/dist/build/Agda/Syntax/Parser/Parser.hs
@@ -51,7 +51,7 @@ import Agda.Utils.Tuple
import qualified Data.Array as Happy_Data_Array
import qualified GHC.Exts as Happy_GHC_Exts
--- parser produced by Happy Version 1.18.8
+-- parser produced by Happy Version 1.18.10
newtype HappyAbsSyn t10 t11 t12 t30 t33 t36 t37 t38 t42 t43 t70 = HappyAbsSyn HappyAny
#if __GLASGOW_HASKELL__ >= 607
@@ -5044,7 +5044,7 @@ tests = runTests "Agda.Syntax.Parser.Parser"
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "templates/GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command line>" #-}
+{-# LINE 1 "<command-line>" #-}
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp
diff --git a/doc/release-notes/2-3-2-1.txt b/doc/release-notes/2-3-2-1.txt
new file mode 100644
index 0000000..a8b646f
--- /dev/null
+++ b/doc/release-notes/2-3-2-1.txt
@@ -0,0 +1,18 @@
+------------------------------------------------------------------------
+-- Release notes for Agda 2 version 2.3.2.1
+------------------------------------------------------------------------
+
+Important changes since 2.3.2:
+
+Installation
+============
+
+* Made it possible to compile Agda with more recent versions of
+ hashable, QuickCheck and Win32.
+
+* Excluded mtl-2.1.
+
+Type checking
+=============
+
+* Fixed bug in the termination checker (issue 754).
diff --git a/src/data/emacs-mode/agda2-mode.el b/src/data/emacs-mode/agda2-mode.el
index b4ed667..edc22ff 100644
--- a/src/data/emacs-mode/agda2-mode.el
+++ b/src/data/emacs-mode/agda2-mode.el
@@ -10,7 +10,7 @@
;;; Code:
-(defvar agda2-version "2.3.2"
+(defvar agda2-version "2.3.2.1"
"The version of the Agda mode.
Note that the same version of the Agda executable must be used.")
diff --git a/src/full/Agda/Syntax/Abstract/Name.hs b/src/full/Agda/Syntax/Abstract/Name.hs
index 03ad29b..31a0f3c 100644
--- a/src/full/Agda/Syntax/Abstract/Name.hs
+++ b/src/full/Agda/Syntax/Abstract/Name.hs
@@ -239,8 +239,8 @@ instance Show Name where
show x = show (nameConcrete x) -- ++ "|" ++ show (nameId x)
instance Hashable Name where
- {-# INLINE hash #-}
- hash = hash . nameId
+ {-# INLINE hashWithSalt #-}
+ hashWithSalt salt = (hashWithSalt salt) . nameId
instance Show QName where
show q = concat $ intersperse "." $ map show $ qnameToList q
@@ -255,8 +255,8 @@ instance Ord QName where
compare = compare `on` qnameName
instance Hashable QName where
- {-# INLINE hash #-}
- hash = hash . qnameName
+ {-# INLINE hashWithSalt #-}
+ hashWithSalt salt = (hashWithSalt salt) . qnameName
instance HasRange Name where
getRange = getRange . nameConcrete
diff --git a/src/full/Agda/Syntax/Common.hs b/src/full/Agda/Syntax/Common.hs
index 6c9e357..40dff4d 100644
--- a/src/full/Agda/Syntax/Common.hs
+++ b/src/full/Agda/Syntax/Common.hs
@@ -272,8 +272,8 @@ instance Enum NameId where
fromEnum (NameId n _) = fromIntegral n
instance Hashable NameId where
- {-# INLINE hash #-}
- hash (NameId n m) = hash (n, m)
+ {-# INLINE hashWithSalt #-}
+ hashWithSalt salt (NameId n m) = hashWithSalt salt (n, m)
newtype Constr a = Constr a
diff --git a/src/full/Agda/Termination/CallGraph.hs b/src/full/Agda/Termination/CallGraph.hs
index dc1b072..46db0cb 100644
--- a/src/full/Agda/Termination/CallGraph.hs
+++ b/src/full/Agda/Termination/CallGraph.hs
@@ -213,7 +213,8 @@ This makes order multiplication associative.
-}
collapse :: (?cutoff :: Int) => Matrix Integer Order -> Order
-collapse m = case (toLists (Matrix.transpose m)) of
+collapse m = -- if not $ Matrix.matrixInvariant m then __IMPOSSIBLE__ else
+ case toLists $ Matrix.transpose m of
[] -> __IMPOSSIBLE__ -- This can never happen if order matrices are generated by the smart constructor
m' -> foldl1 (.*.) $ map (foldl1 maxO) m'
diff --git a/src/full/Agda/Termination/SparseMatrix.hs b/src/full/Agda/Termination/SparseMatrix.hs
index 06b28cd..fe651f9 100644
--- a/src/full/Agda/Termination/SparseMatrix.hs
+++ b/src/full/Agda/Termination/SparseMatrix.hs
@@ -40,8 +40,10 @@ module Agda.Termination.SparseMatrix
import Data.Array
import qualified Data.List as List
-import Agda.Utils.Pretty hiding (isEmpty)
+import Data.Maybe
import Data.Monoid
+
+import Agda.Utils.Pretty hiding (isEmpty)
import Agda.Utils.QuickCheck
import Agda.Utils.TestHelpers
import Agda.Termination.Semiring (HasZero(..), SemiRing, Semiring)
@@ -129,12 +131,12 @@ strictlySorted (MIx i j) ((MIx i' j', b) : l) =
(i < i' || i == i' && j < j' ) && strictlySorted (MIx i' j') b
-}
-instance (Ord i, Integral i, Enum i, Show i, Show b, HasZero b) => Show (Matrix i b) where
+instance (Ord i, Integral i, Enum i, Ix i, Show i, Show b, HasZero b) => Show (Matrix i b) where
showsPrec _ m =
showString "Agda.Termination.Matrix.fromLists " . shows (size m) .
showString " " . shows (toLists m)
-instance (Show i, Integral i, HasZero b, Pretty b) =>
+instance (Show i, Integral i, Ix i, HasZero b, Pretty b) =>
Pretty (Matrix i b) where
pretty = vcat . map (hsep . map pretty) . toLists
@@ -142,7 +144,7 @@ instance (Arbitrary i, Num i, Integral i, Arbitrary b, HasZero b)
=> Arbitrary (Matrix i b) where
arbitrary = matrix =<< arbitrary
-instance (Show i, Ord i, Integral i, Enum i, CoArbitrary b, HasZero b) => CoArbitrary (Matrix i b) where
+instance (Show i, Ord i, Integral i, Enum i, Ix i, CoArbitrary b, HasZero b) => CoArbitrary (Matrix i b) where
coarbitrary m = coarbitrary (toLists m)
@@ -214,18 +216,20 @@ blowUpSparseVec zero n l = aux 1 l
| otherwise = zero : aux (i+1) []
aux i ((j,b):l) | i <= n && j == i = b : aux (succ i) l
aux i ((j,b):l) | i <= n && j >= i = zero : aux (succ i) ((j,b):l)
- aux i l = error $ "blowUpSparseVec (n = " ++ show n ++ ") aux i=" ++ show i ++ " j=" ++ show (fst (head l)) ++ " length l = " ++ show (length l)
--- __IMPOSSIBLE__
+ aux i l = __IMPOSSIBLE__
+ -- error $ "blowUpSparseVec (n = " ++ show n ++ ") aux i=" ++ show i ++ " j=" ++ show (fst (head l)) ++ " length l = " ++ show (length l)
-- | Converts a matrix to a list of row lists.
-toLists :: (Show i, Ord i, Integral i, Enum i, HasZero b) => Matrix i b -> [[b]]
-toLists m = blowUpSparseVec emptyRow (rows sz) $
- map (\ (i,r) -> (i, blowUpSparseVec zeroElement (cols sz) r)) $ toSparseRows m
--- [ [ maybe zeroElement id $ lookup (MIx { row = r, col = c }) (unM m)
--- | c <- [1 .. cols sz] ] | r <- [1 .. rows sz] ]
- where sz = size m
- emptyRow = take (fromIntegral (cols sz)) $ repeat zeroElement
+toLists :: (Show i, Ord i, Integral i, Enum i, Ix i, HasZero b) => Matrix i b -> [[b]]
+toLists m = -- if not $ matrixInvariant m then __IMPOSSIBLE__ else
+ blowUpSparseVec emptyRow nr $
+ map (\ (i,r) -> (i, blowUpSparseVec zeroElement nc r)) $ toSparseRows m
+ where
+ sz = size m
+ nr = rows sz
+ nc = cols sz
+ emptyRow = take (fromIntegral nc) $ repeat zeroElement
prop_fromLists_toLists :: TM -> Bool
prop_fromLists_toLists m = fromLists (size m) (toLists m) == m
@@ -276,12 +280,24 @@ transpose m = M { size = transposeSize (size m)
, unM = List.sortBy (\ (i,a) (j,b) -> compare i j) $
map (\(MIx i j, b) -> (MIx j i, b)) $ unM m }
+prop_transpose :: TM -> Bool
+prop_transpose m = matrixInvariant m' && m == transpose m'
+ where m' = transpose m
+
-- | @'add' (+) m1 m2@ adds @m1@ and @m2@. Uses @(+)@ to add values.
--
--- Precondition: @'size' m1 == 'size' m2@.
+-- No longer precondition: @'size' m1 == 'size' m2@.
add :: (Ord i) => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
-add plus m1 m2 = M (size m1) $ mergeAssocWith plus (unM m1) (unM m2)
+add plus m1 m2 = M (supSize m1 m2) $ mergeAssocWith plus (unM m1) (unM m2)
+
+-- | Compute the matrix size of the union of two matrices.
+supSize m1 m2 = Size { rows = r, cols = c }
+ where
+ sz1 = size m1
+ sz2 = size m2
+ r = max (rows sz1) (rows sz2)
+ c = max (cols sz1) (cols sz2)
-- | assoc list union
mergeAssocWith :: (Ord i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)]
@@ -295,10 +311,18 @@ mergeAssocWith f l@((i,a):l') m@((j,b):m')
-- | @'intersectWith' f m1 m2@ build the pointwise conjunction @m1@ and @m2@.
-- Uses @f@ to combine non-zero values.
--
--- Precondition: @'size' m1 == 'size' m2@.
+-- No longer precondition: @'size' m1 == 'size' m2@.
intersectWith :: (Ord i) => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
-intersectWith f m1 m2 = M (size m1) $ interAssocWith f (unM m1) (unM m2)
+intersectWith f m1 m2 = M (infSize m1 m2) $ interAssocWith f (unM m1) (unM m2)
+
+-- | Compute the matrix size of the intersection of two matrices.
+infSize m1 m2 = Size { rows = r, cols = c }
+ where
+ sz1 = size m1
+ sz2 = size m2
+ r = min (rows sz1) (rows sz2)
+ c = min (cols sz1) (cols sz2)
-- | assoc list intersection
interAssocWith :: (Ord i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)]
@@ -353,12 +377,18 @@ prop_mul sz =
-- | @'diagonal' m@ extracts the diagonal of @m@.
--
--- Precondition: @'square' m@.
+-- No longer precondition: @'square' m@.
diagonal :: (Show i, Enum i, Num i, Ix i, HasZero b) => Matrix i b -> Array i b
-diagonal m = listArray (1, rows sz) $ blowUpSparseVec zeroElement (rows sz) $
- map (\ ((MIx i j),b) -> (i,b)) $ filter (\ ((MIx i j),b) -> i==j) (unM m)
- where sz = size m
+diagonal m = -- if r /= c then __IMPOSSIBLE__ else -- works also for non-square
+ listArray (1, n) $ blowUpSparseVec zeroElement n $
+ mapMaybe (\ ((MIx i j),b) -> if i==j then Just (i,b) else Nothing) $ unM m
+-- map (\ ((MIx i j),b) -> (i,b)) $ filter (\ ((MIx i j),b) -> i==j) (unM m)
+ where
+ sz = size m
+ r = rows sz
+ c = cols sz
+ n = max r c
prop_diagonal =
forAll natural $ \n ->
@@ -416,7 +446,8 @@ zipWith f m1 m2
tests :: IO Bool
tests = runTests "Agda.Termination.Matrix"
- [ quickCheck' prop_Arbitrary_Size
+ [ quickCheck' prop_transpose
+ , quickCheck' prop_Arbitrary_Size
, quickCheck' prop_Arbitrary_Matrix
, quickCheck' prop_Arbitrary_MIx
, quickCheck' prop_fromIndexList
diff --git a/src/full/Agda/Utils/Pointer.hs b/src/full/Agda/Utils/Pointer.hs
index 2d281d3..0887006 100644
--- a/src/full/Agda/Utils/Pointer.hs
+++ b/src/full/Agda/Utils/Pointer.hs
@@ -71,7 +71,7 @@ instance Ord (Ptr a) where
compare = compare `on` ptrTag
instance Hashable (Ptr a) where
- hash = hash . ptrTag
+ hashWithSalt salt = (hashWithSalt salt) . ptrTag
instance NFData (Ptr a) where