git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix meet check when ForAll is on right
commitd1cdc986799ceb1eb72ce2e72de3b016009aef07 authorPhil Freeman <paf31@cantab.net> dateWed 17 Sep 2014, 17:15 (12 years ago) parent51914cc
2 files changed+6−2
examples/passing/IfThenElseMaybe.purs+3−1 src/Language/PureScript/TypeChecker/Types.hs+3−1
examples/passing/IfThenElseMaybe.purs+3−1
@@ -2,6 +2,8 @@ module Main where
22
33data Maybe a = Nothing | Just a
44
5−test = if true then Just 10 else Nothing
5+test1 = if true then Just 10 else Nothing
6+
7+test2 = if true then Nothing else Just 10
68
79main = Debug.Trace.trace "Done"
src/Language/PureScript/TypeChecker/Types.hs+3−1
@@ -1131,7 +1131,9 @@ subsumes' val ty1 ty2 = do
11311131-- TODO: handle constrained types
11321132--
11331133meet :: Expr -> Expr -> Type -> Type -> UnifyT Type Check (Expr, Expr, Type)
1134−meet e1 e2 t1@(ForAll _ _ _) t2 = meet e1 e2 t1 t2
1134+meet e1 e2 (ForAll ident t1 _) t2 = do
1135+ t1' <- replaceVarWithUnknown ident t1
1136+ meet e1 e2 t1' t2
11351137meet e1 e2 t1 (ForAll ident t2 _) = do
11361138 t2' <- replaceVarWithUnknown ident t2
11371139 meet e1 e2 t1 t2'