@@ -118,6 +118,9 @@ unifyTypes t1 t2 = rethrow (\e -> "Error unifying type " ++ prettyPrintType t1 +
118118 unifyTypes' r1 r2@RCons{} = unifyRows r1 r2
119119 unifyTypes' r1@REmpty r2 = unifyRows r1 r2
120120 unifyTypes' r1 r2@REmpty = unifyRows r1 r2
121+ unifyTypes' t@(ConstrainedType _ _) _ = throwError $ "Attempted to unify a constrained type " ++ prettyPrintType t ++
122+ " with another type."
123+ unifyTypes' t3 t4@(ConstrainedType _ _) = unifyTypes' t4 t3
121124 unifyTypes' t3 t4 = throwError $ "Cannot unify " ++ prettyPrintType t3 ++ " with " ++ prettyPrintType t4 ++ "."
122125
123126-- |
@@ -321,7 +324,7 @@ escapeCheck value ty = do
321324 let allUnknowns = findAllTypes value
322325 forM_ allUnknowns $ \t -> do
323326 let unsolvedUnknowns = nub . unknowns $ subst $? t
324− guardWith "Escape check fails" $ null $ unsolvedUnknowns \\ visibleUnknowns
327+ guardWith "An unsolved type variable disappeared during type checking." $ null $ unsolvedUnknowns \\ visibleUnknowns
325328
326329-- |
327330-- Find all type annotations occuring inside a value