From: Matthijs Kooijman Date: Wed, 11 Feb 2009 17:07:51 +0000 (+0100) Subject: Implement resolvFunc. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=ad6bf1a1380ac5cf48d58a7b7969fd45b7b6a49d;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git Implement resolvFunc. This function looks for any used functions in the current module. --- 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