From a84c4722a3774bb64e3e3616c16264d09c991378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 25 Apr 2026 13:10:13 +0200 Subject: Keep type info in HideType to support non-primitive types --- src/Parser/Core.hs | 3 ++- src/Parser/Expr.hs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/Parser') diff --git a/src/Parser/Core.hs b/src/Parser/Core.hs index 4c49ead..e1a4035 100644 --- a/src/Parser/Core.hs +++ b/src/Parser/Core.hs @@ -219,7 +219,8 @@ unifyExpr off pa expr = if _ <- unify off (ExprTypePrim (Proxy :: Proxy a)) stype return $ Variable sline name - | HideType expr' <- expr + | HideType (ExprTypePrim (_ :: Proxy b'')) (expr' :: Expr b') <- expr + , Just (Refl :: b'' :~: b') <- eqT -> do unifyExpr off pa expr' diff --git a/src/Parser/Expr.hs b/src/Parser/Expr.hs index 8d1fe03..3716c80 100644 --- a/src/Parser/Expr.hs +++ b/src/Parser/Expr.hs @@ -194,7 +194,7 @@ list = label "list" $ do return $ SomeExpr $ TypeLambda tvar (ExprTypeApp (ExprTypeConstr1 (Proxy :: Proxy [])) [ ExprTypeVar tvar ]) $ \case - (ExprTypePrim (Proxy :: Proxy a)) -> HideType $ Pure ([] :: [ a ]) + (ExprTypePrim (Proxy :: Proxy a)) -> HideType (ExprTypePrim (Proxy @[ a ])) $ Pure ([] :: [ a ]) _ -> Undefined "incomplete type" ,do SomeExpr x <- someExpr -- cgit v1.2.3