summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/elm-compiler-fix-map-key.patch
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2019-10-08 19:24:34 +0200
committerMarius Bakke <mbakke@fastmail.com>2019-10-08 19:24:34 +0200
commitd1f3b333e6176a7879ab3742bbebb2a99f61a528 (patch)
tree8bd82ce68bd2534a48bf13c7256997f82dd1b3f4 /gnu/packages/patches/elm-compiler-fix-map-key.patch
parente01d384efcdaf564bbb221e43b81e087c8e2af06 (diff)
parent861907f01efb1cae7f260e8cb7b991d5034a486a (diff)
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages/patches/elm-compiler-fix-map-key.patch')
-rw-r--r--gnu/packages/patches/elm-compiler-fix-map-key.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/gnu/packages/patches/elm-compiler-fix-map-key.patch b/gnu/packages/patches/elm-compiler-fix-map-key.patch
new file mode 100644
index 0000000000..4f05ded530
--- /dev/null
+++ b/gnu/packages/patches/elm-compiler-fix-map-key.patch
@@ -0,0 +1,38 @@
+commit e3512d887df41a8162c3e361171c04beca08415b
+Author: Tom Stejskal <tom.stejskal@gmail.com>
+Date: Mon Nov 19 20:09:43 2018 +0100
+
+ Fix Map.!: given key is not an element in the map
+
+diff --git a/compiler/src/Elm/Compiler/Type/Extract.hs b/compiler/src/Elm/Compiler/Type/Extract.hs
+index 1aafe1d4..99763392 100644
+--- a/compiler/src/Elm/Compiler/Type/Extract.hs
++++ b/compiler/src/Elm/Compiler/Type/Extract.hs
+@@ -10,6 +10,7 @@ module Elm.Compiler.Type.Extract
+
+
+ import Data.Map ((!))
++import qualified Data.Map as Map
+ import qualified Data.Maybe as Maybe
+ import qualified Data.Set as Set
+
+@@ -134,11 +135,15 @@ extractUnion interfaces (Opt.Global home name) =
+ else
+ let
+ pname = toPublicName home name
+- unions = I._unions (interfaces ! home)
++ maybeUnions = I._unions <$> Map.lookup home interfaces
+ in
+- case I.toUnionInternals (unions ! name) of
+- Can.Union vars ctors _ _ ->
+- T.Union pname vars <$> traverse extractCtor ctors
++ case Map.lookup name =<< maybeUnions of
++ Just union ->
++ case I.toUnionInternals union of
++ Can.Union vars ctors _ _ ->
++ T.Union pname vars <$> traverse extractCtor ctors
++ Nothing ->
++ return $ T.Union pname [] []
+
+
+ extractCtor :: Can.Ctor -> Extractor (N.Name, [T.Type])