@@ -254,7 +254,7 @@ infer' (Literal (ObjectLiteral ps)) = do
254 ensureNoDuplicateProperties ps
254 ensureNoDuplicateProperties ps
255 ts <- traverse (infer . snd) ps
255 ts <- traverse (infer . snd) ps
256 let fields = zipWith (\name (TypedValue _ _ t) -> (name, t)) (map fst ps) ts
256 let fields = zipWith (\name (TypedValue _ _ t) -> (name, t)) (map fst ps) ts
257− ty = TypeApp tyObject $ rowFromList (fields, REmpty)
257+ ty = TypeApp tyRecord $ rowFromList (fields, REmpty)
258 return $ TypedValue True (Literal (ObjectLiteral (zip (map fst ps) ts))) ty
258 return $ TypedValue True (Literal (ObjectLiteral (zip (map fst ps) ts))) ty
259infer' (ObjectUpdate o ps) = do
259infer' (ObjectUpdate o ps) = do
260 ensureNoDuplicateProperties ps
260 ensureNoDuplicateProperties ps
@@ -262,13 +262,13 @@ infer' (ObjectUpdate o ps) = do
262 newVals <- zipWith (\(name, _) t -> (name, t)) ps <$> traverse (infer . snd) ps
262 newVals <- zipWith (\(name, _) t -> (name, t)) ps <$> traverse (infer . snd) ps
263 let newTys = map (\(name, TypedValue _ _ ty) -> (name, ty)) newVals
263 let newTys = map (\(name, TypedValue _ _ ty) -> (name, ty)) newVals
264 oldTys <- zip (map fst ps) <$> replicateM (length ps) freshType
264 oldTys <- zip (map fst ps) <$> replicateM (length ps) freshType
265− let oldTy = TypeApp tyObject $ rowFromList (oldTys, row)
265+ let oldTy = TypeApp tyRecord $ rowFromList (oldTys, row)
266 o' <- TypedValue True <$> check o oldTy <*> pure oldTy
266 o' <- TypedValue True <$> check o oldTy <*> pure oldTy
267− return $ TypedValue True (ObjectUpdate o' newVals) $ TypeApp tyObject $ rowFromList (newTys, row)
267+ return $ TypedValue True (ObjectUpdate o' newVals) $ TypeApp tyRecord $ rowFromList (newTys, row)
268infer' (Accessor prop val) = rethrow (addHint (ErrorCheckingAccessor val prop)) $ do
268infer' (Accessor prop val) = rethrow (addHint (ErrorCheckingAccessor val prop)) $ do
269 field <- freshType
269 field <- freshType
270 rest <- freshType
270 rest <- freshType
271− typed <- check val (TypeApp tyObject (RCons prop field rest))
271+ typed <- check val (TypeApp tyRecord (RCons prop field rest))
272 return $ TypedValue True (Accessor prop typed) field
272 return $ TypedValue True (Accessor prop typed) field
273infer' (Abs (Left arg) ret) = do
273infer' (Abs (Left arg) ret) = do
274 ty <- freshType
274 ty <- freshType
@@ -402,7 +402,7 @@ inferBinder val (LiteralBinder (ObjectLiteral props)) = do
402 row <- freshType
402 row <- freshType
403 rest <- freshType
403 rest <- freshType
404 m1 <- inferRowProperties row rest props
404 m1 <- inferRowProperties row rest props
405− unifyTypes val (TypeApp tyObject row)
405+ unifyTypes val (TypeApp tyRecord row)
406 return m1
406 return m1
408 inferRowProperties :: Type -> Type -> [(String, Binder)] -> m (M.Map Ident Type)
408 inferRowProperties :: Type -> Type -> [(String, Binder)] -> m (M.Map Ident Type)
@@ -616,26 +616,26 @@ check' (IfThenElse cond th el) ty = do
616 th' <- check th ty
616 th' <- check th ty
617 el' <- check el ty
617 el' <- check el ty
618 return $ TypedValue True (IfThenElse cond' th' el') ty
618 return $ TypedValue True (IfThenElse cond' th' el') ty
619−check' e@(Literal (ObjectLiteral ps)) t@(TypeApp obj row) | obj == tyObject = do
619+check' e@(Literal (ObjectLiteral ps)) t@(TypeApp obj row) | obj == tyRecord = do
620 ensureNoDuplicateProperties ps
620 ensureNoDuplicateProperties ps
621 ps' <- checkProperties e ps row False
621 ps' <- checkProperties e ps row False
622 return $ TypedValue True (Literal (ObjectLiteral ps')) t
622 return $ TypedValue True (Literal (ObjectLiteral ps')) t
623check' (TypeClassDictionaryConstructorApp name ps) t = do
623check' (TypeClassDictionaryConstructorApp name ps) t = do
624 ps' <- check' ps t
624 ps' <- check' ps t
625 return $ TypedValue True (TypeClassDictionaryConstructorApp name ps') t
625 return $ TypedValue True (TypeClassDictionaryConstructorApp name ps') t
626−check' e@(ObjectUpdate obj ps) t@(TypeApp o row) | o == tyObject = do
626+check' e@(ObjectUpdate obj ps) t@(TypeApp o row) | o == tyRecord = do
627 ensureNoDuplicateProperties ps
627 ensureNoDuplicateProperties ps
628 -- We need to be careful to avoid duplicate labels here.
628 -- We need to be careful to avoid duplicate labels here.
629 -- We check _obj_ against the type _t_ with the types in _ps_ replaced with unknowns.
629 -- We check _obj_ against the type _t_ with the types in _ps_ replaced with unknowns.
630 let (propsToCheck, rest) = rowToList row
630 let (propsToCheck, rest) = rowToList row
631 (removedProps, remainingProps) = partition (\(p, _) -> p `elem` map fst ps) propsToCheck
631 (removedProps, remainingProps) = partition (\(p, _) -> p `elem` map fst ps) propsToCheck
632 us <- zip (map fst removedProps) <$> replicateM (length ps) freshType
632 us <- zip (map fst removedProps) <$> replicateM (length ps) freshType
633− obj' <- check obj (TypeApp tyObject (rowFromList (us ++ remainingProps, rest)))
633+ obj' <- check obj (TypeApp tyRecord (rowFromList (us ++ remainingProps, rest)))
634 ps' <- checkProperties e ps row True
634 ps' <- checkProperties e ps row True
635 return $ TypedValue True (ObjectUpdate obj' ps') t
635 return $ TypedValue True (ObjectUpdate obj' ps') t
636check' (Accessor prop val) ty = rethrow (addHint (ErrorCheckingAccessor val prop)) $ do
636check' (Accessor prop val) ty = rethrow (addHint (ErrorCheckingAccessor val prop)) $ do
637 rest <- freshType
637 rest <- freshType
638− val' <- check val (TypeApp tyObject (RCons prop ty rest))
638+ val' <- check val (TypeApp tyRecord (RCons prop ty rest))
639 return $ TypedValue True (Accessor prop val') ty
639 return $ TypedValue True (Accessor prop val') ty
640check' v@(Constructor c) ty = do
640check' v@(Constructor c) ty = do
641 env <- getEnv
641 env <- getEnv
@@ -698,7 +698,7 @@ checkProperties expr ps row lax = let (ts, r') = rowToList row in go ps ts r' wh
698 v' <- check v ty
698 v' <- check v ty
699 ps'' <- go ps' (delete (p, ty) ts) r
699 ps'' <- go ps' (delete (p, ty) ts) r
700 return $ (p, v') : ps''
700 return $ (p, v') : ps''
701− go _ _ _ = throwError . errorMessage $ ExprDoesNotHaveType expr (TypeApp tyObject row)
701+ go _ _ _ = throwError . errorMessage $ ExprDoesNotHaveType expr (TypeApp tyRecord row)
703-- | Check the type of a function application, rethrowing errors to provide a better error message
703-- | Check the type of a function application, rethrowing errors to provide a better error message
704checkFunctionApplication ::
704checkFunctionApplication ::