Added support for pattern matching on ints. Might need a lookover.
This commit is contained in:
parent
18e0a92fe0
commit
6749650223
7 changed files with 157 additions and 64 deletions
|
|
@ -3,6 +3,7 @@
|
|||
module Renamer (module Renamer) where
|
||||
|
||||
import Auxiliary (mapAccumM)
|
||||
import Control.Monad (foldM)
|
||||
import Control.Monad.State (MonadState, State, evalState, gets,
|
||||
modify)
|
||||
import Data.Map (Map)
|
||||
|
|
@ -68,6 +69,14 @@ renameExp old_names = \case
|
|||
(new_names, e') <- renameExp old_names e
|
||||
pure (new_names, EAnn e' t)
|
||||
|
||||
ECase e cs t -> do
|
||||
(new_names, e') <- renameExp old_names e
|
||||
(new_names', cs') <- foldM (\(names, stack) (CaseMatch c exp) -> do
|
||||
(nm,exp') <- renameExp names exp
|
||||
pure (nm,CaseMatch c exp' : stack)
|
||||
) (new_names, []) cs
|
||||
pure (new_names', ECase e' cs' t)
|
||||
|
||||
-- | Create a new name and add it to name environment.
|
||||
newName :: Names -> Ident -> Rn (Names, Ident)
|
||||
newName env old_name = do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue