@@ -582,18 +582,14 @@ containsTypeSynonyms = everythingOnTypes (||) go where
582checkProperties :: [(String, Expr)] -> Type -> Bool -> UnifyT Type Check [(String, Expr)]
582checkProperties :: [(String, Expr)] -> Type -> Bool -> UnifyT Type Check [(String, Expr)]
583checkProperties ps row lax = let (ts, r') = rowToList row in go ps ts r' where
583checkProperties ps row lax = let (ts, r') = rowToList row in go ps ts r' where
584 go [] [] REmpty = return []
584 go [] [] REmpty = return []
585− go [] [] u@(TUnknown _) = do u =?= REmpty
585+ go [] [] u@(TUnknown _)
587+ | otherwise = do u =?= REmpty
586− return []
588+ return []
587 go [] [] Skolem{} | lax = return []
589 go [] [] Skolem{} | lax = return []
588 go [] ((p, _): _) _ | lax = return []
590 go [] ((p, _): _) _ | lax = return []
589 | otherwise = throwError $ mkErrorStack ("Object does not have property " ++ p) (Just (ExprError (ObjectLiteral ps)))
591 | otherwise = throwError $ mkErrorStack ("Object does not have property " ++ p) (Just (ExprError (ObjectLiteral ps)))
590 go ((p,_):_) [] REmpty = throwError $ mkErrorStack ("Property " ++ p ++ " is not present in closed object type " ++ prettyPrintRow row) (Just (ExprError (ObjectLiteral ps)))
592 go ((p,_):_) [] REmpty = throwError $ mkErrorStack ("Property " ++ p ++ " is not present in closed object type " ++ prettyPrintRow row) (Just (ExprError (ObjectLiteral ps)))
591− go ((p,v):ps') [] u@(TUnknown _) = do
592− v'@(TypedValue _ _ ty) <- infer v
594− u =?= RCons p ty rest
595− ps'' <- go ps' [] rest
596− return $ (p, v') : ps''
597 go ((p,v):ps') ts r =
593 go ((p,v):ps') ts r =
598 case lookup p ts of
594 case lookup p ts of
599 Nothing -> do
595 Nothing -> do