Move makeUniqueName and findUnscopedName into CompState.
This commit is contained in:
parent
3ab0c30589
commit
8cedbed5fc
|
@ -186,6 +186,23 @@ lookupNameOrError n err
|
||||||
Just nd -> return nd
|
Just nd -> return nd
|
||||||
Nothing -> err
|
Nothing -> err
|
||||||
|
|
||||||
|
-- | Make a name unique by appending a suffix to it.
|
||||||
|
makeUniqueName :: CSM m => String -> m String
|
||||||
|
makeUniqueName s
|
||||||
|
= do st <- get
|
||||||
|
put $ st { csNameCounter = csNameCounter st + 1 }
|
||||||
|
return $ s ++ "_u" ++ show (csNameCounter st)
|
||||||
|
|
||||||
|
-- | Find an unscoped name -- or define a new one if it doesn't already exist.
|
||||||
|
findUnscopedName :: CSM m => A.Name -> m A.Name
|
||||||
|
findUnscopedName n@(A.Name m nt s)
|
||||||
|
= do st <- get
|
||||||
|
case Map.lookup s (csUnscopedNames st) of
|
||||||
|
Just s' -> return $ A.Name m nt s'
|
||||||
|
Nothing ->
|
||||||
|
do s' <- makeUniqueName s
|
||||||
|
modify (\st -> st { csUnscopedNames = Map.insert s s' (csUnscopedNames st) })
|
||||||
|
return $ A.Name m nt s'
|
||||||
--}}}
|
--}}}
|
||||||
|
|
||||||
--{{{ pulled items
|
--{{{ pulled items
|
||||||
|
|
|
@ -371,22 +371,6 @@ findName thisN
|
||||||
then dieP (A.nameMeta thisN) $ "expected " ++ show (A.nameType thisN) ++ " (" ++ A.nameName origN ++ " is " ++ show (A.nameType origN) ++ ")"
|
then dieP (A.nameMeta thisN) $ "expected " ++ show (A.nameType thisN) ++ " (" ++ A.nameName origN ++ " is " ++ show (A.nameType origN) ++ ")"
|
||||||
else return $ thisN { A.nameName = A.nameName origN }
|
else return $ thisN { A.nameName = A.nameName origN }
|
||||||
|
|
||||||
makeUniqueName :: String -> OccParser String
|
|
||||||
makeUniqueName s
|
|
||||||
= do st <- get
|
|
||||||
put $ st { csNameCounter = csNameCounter st + 1 }
|
|
||||||
return $ s ++ "_u" ++ show (csNameCounter st)
|
|
||||||
|
|
||||||
findUnscopedName :: A.Name -> OccParser A.Name
|
|
||||||
findUnscopedName n@(A.Name m nt s)
|
|
||||||
= do st <- get
|
|
||||||
case Map.lookup s (csUnscopedNames st) of
|
|
||||||
Just s' -> return $ A.Name m nt s'
|
|
||||||
Nothing ->
|
|
||||||
do s' <- makeUniqueName s
|
|
||||||
modify (\st -> st { csUnscopedNames = Map.insert s s' (csUnscopedNames st) })
|
|
||||||
return $ A.Name m nt s'
|
|
||||||
|
|
||||||
scopeIn :: A.Name -> A.SpecType -> A.AbbrevMode -> OccParser A.Name
|
scopeIn :: A.Name -> A.SpecType -> A.AbbrevMode -> OccParser A.Name
|
||||||
scopeIn n@(A.Name m nt s) specType am
|
scopeIn n@(A.Name m nt s) specType am
|
||||||
= do st <- getState
|
= do st <- getState
|
||||||
|
|
Loading…
Reference in New Issue
Block a user