git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix #671
commit0cb37f1bedc3014ed1c288d8c8e32add5e70dcc0 authorPhil Freeman <paf31@cantab.net> dateMon 3 Nov 2014, 12:40 (12 years ago) parentaf0492a
3 files changed+39−1
examples/passing/MutRec2.purs+17 examples/passing/MutRec3.purs+17 src/Language/PureScript/TypeChecker.hs+5−1
examples/passing/MutRec2.pursnew file+17
@@ -0,0 +1,17 @@
1+module Main where
2+
3+data A = A B
4+
5+data B = B A
6+
7+foreign import data S :: *
8+
9+f :: A -> S
10+f a = case a of A b -> g b
11+
12+g b = case b of B a -> f a
13+
14+showN :: A -> S
15+showN a = f a
16+
17+main = Debug.Trace.trace "Done"
examples/passing/MutRec3.pursnew file+17
@@ -0,0 +1,17 @@
1+module Main where
2+
3+data A = A B
4+
5+data B = B A
6+
7+foreign import data S :: *
8+
9+f a = case a of A b -> g b
10+
11+g :: B -> S
12+g b = case b of B a -> f a
13+
14+showN :: A -> S
15+showN a = f a
16+
17+main = Debug.Trace.trace "Done"
src/Language/PureScript/TypeChecker.hs+5−1
@@ -183,7 +183,11 @@ typeCheckAll mainModuleName moduleName exps = go
183183 forM_ (map (\(ident, _, _) -> ident) vals) $ \name ->
184184 valueIsNotDefined moduleName name
185185 tys <- typesOf mainModuleName moduleName $ map (\(ident, _, ty) -> (ident, ty)) vals
186− vals' <- forM (zipWith (\(name, nameKind, _) (_, (val, ty)) -> (name, val, nameKind, ty)) vals tys) $ \(name, val, nameKind, ty) -> do
186+ vals' <- forM [ (name, val, nameKind, ty)
187+ | (name, nameKind, _) <- vals
188+ , (name', (val, ty)) <- tys
189+ , name == name'
190+ ] $ \(name, val, nameKind, ty) -> do
187191 addValue moduleName name ty nameKind
188192 return (name, nameKind, val)
189193 return $ BindingGroupDeclaration vals'