alpha 1.0.13 → 1.0.14
raw patch · 2 files changed
+5/−5 lines, 2 files
Files
- alpha.cabal +2/−2
- src/Alpha.hs +3/−3
alpha.cabal view
@@ -1,12 +1,12 @@ name: alpha-version: 1.0.13+version: 1.0.14 synopsis: A compiler for the Alpha language description: Alpha is a programming language that aims at being very simple and low-level, so as to be efficient, while at the same time being able to climb in abstraction through introspection in the Lisp Way. category: Compiler-homepage: http://www.alpha-lang.info/+homepage: http://www.alpha-lang.net/ author: Marc Coiffier maintainer: marc.coiffier@gmail.com stability: alpha
src/Alpha.hs view
@@ -76,8 +76,8 @@ putStrLn "\rGoodbye !" compileProgram (language,entryName) = withInitialContext $ do langTime <- importLanguage (const $ return ()) language- progTime <- modTime entryName- when (progTime < langTime) $ tagIO ("Linking program "++entryName) $ do+ skipLink <- fileExist entryName <&&> liftM (langTime <=) (modTime entryName)+ unless skipLink $ tagIO ("Linking program "++entryName) $ do entrySym <- viewState language_ $ internSym entryName _ <- getAddressComp (outputArch ?settings) entrySym (addrs,ptrs) <- unzip $< sortBy (comparing fst) $< M.elems $< gets compAddresses@@ -108,7 +108,7 @@ where import' lang = gets language >>= \l -> ifThenElse (lang`isImport`l) (modTime $ languageFile lang) $ do node@(time,(l',_)) <- compileLanguage False lang times <- mapM import' (getImports l')- node <- if time < foldl max time times then compileLanguage True lang else return node+ node <- if any (> time) times then compileLanguage True lang else return node let (time,(l'',init)) = node l' = l''{ nameL = lang } init' <- viewing language_ $ modify (<>l') >> gets (translateInit init l')