ref: e1b4550f375353697edeab91345f9c1e9dbecdd5
parent: 2d0fe2526dcb98a40293f9c508dd22e33a7de27f
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Thu Nov 23 19:44:51 EST 2023
Add instantiation of parameterless context
--- a/src/MicroHs/TypeCheck.hs
+++ b/src/MicroHs/TypeCheck.hs
@@ -536,7 +536,7 @@
addConstraint :: Ident -> EConstraint -> T ()
addConstraint d ctx = do
--- traceM $ "addConstraint: " ++ msg ++ " " ++ showIdent d ++ " :: " ++ showEType ctx
+-- traceM $ "addConstraint: " ++ showIdent d ++ " :: " ++ showEType ctx
ctx' <- expandSyn ctx
TC mn n fx tt st vt ast sub m cs is es ds <- get
put $ TC mn n fx tt st vt ast sub m cs is ((d, ctx') : es) ds
@@ -2134,6 +2134,9 @@
--subsCheckRho _ e1 t1 t2 | trace ("subsCheckRho: " ++ {-showExpr e1 ++ " :: " ++ -} showEType t1 ++ " = " ++ showEType t2) False = undefinedsubsCheckRho loc exp1 sigma1@(EForall _ _) rho2 = do -- Rule SPEC
(exp1', rho1) <- tInst (exp1, sigma1)
+ subsCheckRho loc exp1' rho1 rho2
+subsCheckRho loc exp1 arho1 rho2 | Just _ <- getImplies arho1 = do
+ (exp1', rho1) <- tInst (exp1, arho1)
subsCheckRho loc exp1' rho1 rho2
subsCheckRho loc exp1 rho1 rho2 | Just (a2, r2) <- getArrow rho2 = do -- Rule FUN
(a1, r1) <- unArrow loc rho1
--
⑨