Fixed a couple of problems with the implicit mobility system
This commit is contained in:
parent
703bfe1afe
commit
589a6380fb
|
@ -201,6 +201,7 @@ subscriptType sub A.Infer
|
|||
= return $ A.Infer
|
||||
subscriptType sub t@(A.UserDataType _)
|
||||
= resolveUserType (findMeta sub) t >>= subscriptType sub
|
||||
subscriptType sub (A.Mobile t) = subscriptType sub t
|
||||
subscriptType (A.SubscriptFromFor m _ _ count) (A.Array (_:ds) t)
|
||||
= return $ A.Array (dimensionFromExpr count : ds) t
|
||||
subscriptType (A.SubscriptFrom m _ base) (A.Array (d:ds) t)
|
||||
|
|
|
@ -306,10 +306,11 @@ inferDeref = pass "Infer mobile dereferences" [] [] recurse
|
|||
|
||||
doProcess :: Transform A.Process
|
||||
doProcess (A.ProcCall m n as)
|
||||
= do A.Proc _ _ fs _ <- specTypeOfName n
|
||||
= do as' <- recurse as
|
||||
A.Proc _ _ fs _ <- specTypeOfName n
|
||||
ts <- mapM astTypeOf fs
|
||||
as' <- mapM (uncurry $ unify m) (zip ts as)
|
||||
return $ A.ProcCall m n as'
|
||||
as'' <- mapM (uncurry $ unify m) (zip ts as')
|
||||
return $ A.ProcCall m n as''
|
||||
doProcess (A.IntrinsicProcCall m n as)
|
||||
= do let Just amtns = lookup n intrinsicProcs
|
||||
as' <- mapM (uncurry $ unify m) (zip (map mid amtns) as)
|
||||
|
|
Loading…
Reference in New Issue
Block a user