Skip to content

Commit d1cdc98

Browse files
committed
Fix meet check when ForAll is on right
1 parent 51914cc commit d1cdc98

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

examples/passing/IfThenElseMaybe.purs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module Main where
22

33
data 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

79
main = Debug.Trace.trace "Done"

src/Language/PureScript/TypeChecker/Types.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1131,7 +1131,9 @@ subsumes' val ty1 ty2 = do
11311131
-- TODO: handle constrained types
11321132
--
11331133
meet :: 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
11351137
meet e1 e2 t1 (ForAll ident t2 _) = do
11361138
t2' <- replaceVarWithUnknown ident t2
11371139
meet e1 e2 t1 t2'

0 commit comments

Comments
 (0)