From ad6bf1a1380ac5cf48d58a7b7969fd45b7b6a49d Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 11 Feb 2009 18:07:51 +0100 Subject: [PATCH] Implement resolvFunc. This function looks for any used functions in the current module. --- Translator.hs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Translator.hs b/Translator.hs index 5b65fa6..babd622 100644 --- a/Translator.hs +++ b/Translator.hs @@ -106,8 +106,24 @@ resolvFunc :: HsFunction -- | The function to look for -> VHDLState () -resolvFunc hsfunc = - return () +resolvFunc hsfunc = do + -- See if the function is already known + func <- getFunc hsfunc + case func of + -- Already known, do nothing + Just _ -> do + return () + -- New function, resolve it + Nothing -> do + -- Get the current module + core <- getModule + -- Find the named function + let bind = findBind (cm_binds core) name + case bind of + Nothing -> error $ "Couldn't find function " ++ name ++ " in current module." + Just b -> flattenBind b + where + name = hsFuncName hsfunc -- | Translate a top level function declaration to a HsFunction. i.e., which -- interface will be provided by this function. This function essentially -- 2.30.2