summaryrefslogtreecommitdiff
path: root/src/Parser/Core.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Parser/Core.hs')
-rw-r--r--src/Parser/Core.hs16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/Parser/Core.hs b/src/Parser/Core.hs
index cd4031a..1b049c8 100644
--- a/src/Parser/Core.hs
+++ b/src/Parser/Core.hs
@@ -106,12 +106,8 @@ lookupVarExpr off sline name = do
case etype of
ExprTypePrim (Proxy :: Proxy a) -> return $ SomeExpr $ (Variable sline fqn :: Expr a)
ExprTypeConstr1 _ -> return $ SomeExpr $ (Undefined "incomplete type" :: Expr DynamicType)
- ExprTypeVar tvar -> return $ SomeExpr $ DynVariable tvar sline fqn
ExprTypeFunction args (_ :: Proxy a) -> return $ SomeExpr $ (FunVariable args sline fqn :: Expr (FunctionType a))
- stype -> do
- tvar <- newTypeVar
- modify $ \s -> s { testTypeUnif = M.insert tvar stype $ testTypeUnif s }
- return $ SomeExpr $ DynVariable tvar sline fqn
+ stype -> return $ SomeExpr $ DynVariable stype sline fqn
lookupScalarVarExpr :: Int -> SourceLine -> VarName -> TestParser SomeExpr
lookupScalarVarExpr off sline name = do
@@ -119,13 +115,9 @@ lookupScalarVarExpr off sline name = do
case etype of
ExprTypePrim (Proxy :: Proxy a) -> return $ SomeExpr $ (Variable sline fqn :: Expr a)
ExprTypeConstr1 _ -> return $ SomeExpr $ (Undefined "incomplete type" :: Expr DynamicType)
- ExprTypeVar tvar -> return $ SomeExpr $ DynVariable tvar sline fqn
ExprTypeFunction args (pa :: Proxy a) -> do
SomeExpr <$> unifyExpr off pa (FunVariable args sline fqn :: Expr (FunctionType a))
- stype -> do
- tvar <- newTypeVar
- modify $ \s -> s { testTypeUnif = M.insert tvar stype $ testTypeUnif s }
- return $ SomeExpr $ DynVariable tvar sline fqn
+ stype -> return $ SomeExpr $ DynVariable stype sline fqn
unify :: Int -> SomeExprType -> SomeExprType -> TestParser SomeExprType
unify _ (ExprTypeVar aname) (ExprTypeVar bname) | aname == bname = do
@@ -214,9 +206,9 @@ unifyExpr off pa expr = if
| Just (Refl :: a :~: b) <- eqT
-> return expr
- | DynVariable tvar sline name <- expr
+ | DynVariable stype sline name <- expr
-> do
- _ <- unify off (ExprTypePrim (Proxy :: Proxy a)) (ExprTypeVar tvar)
+ _ <- unify off (ExprTypePrim (Proxy :: Proxy a)) stype
return $ Variable sline name
| HideType expr' <- expr