ref: 4300473e0bd6b60de9724b537c1060842d42ed5d
parent: 46673fc845c588c477b815ce6e3fd2ca195493eb
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Sun Oct 13 16:04:39 EDT 2024
Some more fixes for Mhs.Builtin
--- a/lib/Data/Functor/Identity.hs
+++ b/lib/Data/Functor/Identity.hs
@@ -11,7 +11,7 @@
import Data.Functor
import Data.Int
import Data.Ord
-import Data.Records
+import Data.Records -- needed since we don't import Mhs.Builtin
import Text.Show
newtype Identity a = Identity { runIdentity :: a }
--- a/lib/Mhs/Builtin.hs
+++ b/lib/Mhs/Builtin.hs
@@ -23,8 +23,9 @@
import Data.Function((.))
import Data.Ord(Ord(..), Ordering(..))
import Data.Num(Num(fromInteger))
+import Data.Proxy(Proxy(..))
import Data.Semigroup(Semigroup(..))
import Data.String(IsString(..))
-import Data.Records(HasField(..), SetField(..))
+import Data.Records(HasField(..), SetField(..), composeSet)
import {-# SOURCE #-} Data.Typeable(Typeable(..), mkTyConApp, mkTyCon)
import Text.Show(Show(..), showString, showParen)
--- a/lib/System/IO/Error.hs
+++ b/lib/System/IO/Error.hs
@@ -79,7 +79,7 @@
import Data.Int
import Data.List
import Data.Maybe
-import Data.Records
+import Data.Records -- needed since we don't import Mhs.Builtin
import Data.String
import Data.Typeable
import System.IO
--- a/mhs/MHSPrelude.hs
+++ b/mhs/MHSPrelude.hs
@@ -62,7 +62,7 @@
import Data.Ord(Ord(..), Ordering(..))
import Data.Ratio(Rational)
import Data.Real(Real(..), realToFrac)
-import Data.Records -- XXX redo this somehow
+import Data.Records -- needed for data types with fields
import Data.String(IsString(..), lines, unlines, words, unwords)
import Data.Tuple(()(..), fst, snd, curry, uncurry)
import Data.Word(Word)
--- a/src/MicroHs/TypeCheck.hs
+++ b/src/MicroHs/TypeCheck.hs
@@ -1768,7 +1768,7 @@
eSetFields :: EField -> Expr -> Expr
eSetFields (EField is e) r =
let loc = getSLoc is
- eCompose = EVar $ mkIdentSLoc loc "composeSet"
+ eCompose = EVar $ mkBuiltin loc "composeSet"
has = map eHasField $ init is
set1 = eSetField (last is)
set = foldr (EApp . EApp eCompose) set1 has
@@ -1777,19 +1777,19 @@
eHasField :: Ident -> Expr
eHasField i = EApp (EVar ihas) (eProxy i)
- where ihas = mkIdentSLoc (getSLoc i) "hasField"
+ where ihas = mkBuiltin (getSLoc i) "hasField"
eSetField :: Ident -> Expr
eSetField i = EApp (EVar iset) (eProxy i)
- where iset = mkIdentSLoc (getSLoc i) "setField"
+ where iset = mkBuiltin (getSLoc i) "setField"
eGetField :: Ident -> Expr
eGetField i = EApp (EVar iget) (eProxy i)
- where iget = mkIdentSLoc (getSLoc i) "getField"
+ where iget = mkBuiltin (getSLoc i) "getField"
eProxy :: Ident -> Expr
eProxy i = ESign proxy (EApp proxy (ELit loc (LStr (unIdent i))))
- where proxy = EVar $ mkIdentSLoc loc "Proxy"
+ where proxy = EVar $ mkBuiltin loc "Proxy"
loc = getSLoc i
dsEField :: Expr -> EField -> T [EField]
@@ -2083,7 +2083,7 @@
tcPat :: Expected -> EPat -> T EPatRet
tcPat mt ae =
let loc = getSLoc ae
- lit = tcPat mt (EViewPat (EApp (EVar (mkIdentSLoc loc "==")) ae) (EVar (mkIdentSLoc loc "True")))
+ lit = tcPat mt (EViewPat (EApp (EVar (mkBuiltin loc "==")) ae) (EVar (mkBuiltin loc "True")))
isNeg (EVar i) = i == mkIdent "negate"
isNeg _ = False
in
--
⑨