diff --git a/CompState.hs b/CompState.hs index 1dd6ec8..0572d72 100644 --- a/CompState.hs +++ b/CompState.hs @@ -122,11 +122,15 @@ defineName n nd -- | Find the definition of a name. lookupName :: (CSM m, Die m) => A.Name -> m A.NameDef -lookupName n +lookupName n = lookupNameOrError n (die $ "cannot find name " ++ A.nameName n) + +lookupNameOrError :: CSM m => A.Name -> m A.NameDef -> m A.NameDef +lookupNameOrError n err = do ps <- get case Map.lookup (A.nameName n) (csNames ps) of Just nd -> return nd - Nothing -> die $ "cannot find name " ++ A.nameName n + Nothing -> err + --}}} --{{{ warnings diff --git a/ParseOccam.hs b/ParseOccam.hs index 934c040..6f45d9d 100644 --- a/ParseOccam.hs +++ b/ParseOccam.hs @@ -1218,7 +1218,7 @@ allocation p <- placement sColon eol - nd <- lookupName n + nd <- lookupNameOrError n $ dieP m ("Attempted to PLACE unknown variable: " ++ (show $ A.nameName n)) defineName n $ nd { A.ndPlacement = p } return [] "allocation"