on master help sign in
Take correct file path, even if module name is not given
commitdd8843f8e41cbdb59ae26a55266f87487573fa9d authorEvan Czaplicki <info@elm-lang.org> dateThu 1 Aug 2013, 17:22 (13 years ago) parent8e54751
2 files changed+9−10
compiler/Compiler.hs+3−3 compiler/Initialize.hs+6−7
compiler/Compiler.hs+3−3
@@ -19,7 +19,7 @@ import qualified Data.ByteString.Lazy.Char8 as BS
1919import qualified Metadata.Prelude as Prelude
2020import qualified Transform.Canonicalize as Canonical
2121import SourceSyntax.Module
22−import Initialize (buildFromSource, getSortedModuleNames, Interfaces)
22+import Initialize (buildFromSource, getSortedDependencies)
2323import Generate.JavaScript (jsModule)
2424import Generate.Html (createHtml, JSStyle(..), JSSource(..))
2525import Paths_Elm
@@ -153,7 +153,7 @@ getRuntime flags =
153153build :: Flags -> FilePath -> IO ()
154154build flags rootFile = do
155155 let noPrelude = no_prelude flags
156− files <- if make flags then getSortedModuleNames noPrelude rootFile else return [rootFile]
156+ files <- if make flags then getSortedDependencies noPrelude rootFile else return [rootFile]
157157 let ifaces = if noPrelude then Map.empty else Prelude.interfaces
158158 interfaces <- buildFiles flags (length files) ifaces files
159159 js <- foldM appendToOutput "" files
@@ -185,6 +185,6 @@ buildFiles :: Flags -> Int -> Interfaces -> [FilePath] -> IO Interfaces
185185buildFiles _ _ interfaces [] = return interfaces
186186buildFiles flags numModules interfaces (filePath:rest) = do
187187 interface <- buildFile flags (numModules - length rest) numModules interfaces filePath
188− let moduleName = List.intercalate "." (splitDirectories (dropExtensions filePath))
188+ let moduleName = List.intercalate "." . splitDirectories $ dropExtensions filePath
189189 interfaces' = Map.insert moduleName interface interfaces
190190 buildFiles flags numModules interfaces' rest
compiler/Initialize.hs+6−7
@@ -1,4 +1,4 @@
1−module Initialize (buildFromSource, getSortedModuleNames, Interfaces) where
1+module Initialize (buildFromSource, getSortedDependencies) where
22
33import Data.Data
44import Control.Monad.State
@@ -56,11 +56,11 @@ buildFromSource noPrelude interfaces source =
5656 return $ metaModule { types = types, exports = exports' }
5757
5858
59−getSortedModuleNames :: Bool -> FilePath -> IO [String]
60−getSortedModuleNames noPrelude root =
59+getSortedDependencies :: Bool -> FilePath -> IO [String]
60+getSortedDependencies noPrelude root =
6161 sortDeps =<< readDeps noPrelude root
6262
63−type Deps = (String, [String])
63+type Deps = (FilePath, String, [String])
6464
6565sortDeps :: [Deps] -> IO [String]
6666sortDeps depends =
@@ -68,8 +68,7 @@ sortDeps depends =
6868 then return (concat sccs)
6969 else print msg >> mapM print mistakes >> exitFailure
7070 where
71− graph = map (\(name, deps) -> (toFilePath name, name, deps)) depends
72− sccs = map Graph.flattenSCC $ Graph.stronglyConnComp graph
71+ sccs = map Graph.flattenSCC $ Graph.stronglyConnComp depends
7372
7473 mistakes = filter (\scc -> length scc > 1) sccs
7574 msg = "A cyclical module dependency or was detected in: "
@@ -93,7 +92,7 @@ readDeps noPrelude root = evalStateT (go root) Set.empty
9392 newDeps = Set.difference (Set.filter (not . isNative) realDeps) seen
9493 put (Set.insert name (Set.union newDeps seen))
9594 rest <- mapM (go . toFilePath) (Set.toList newDeps)
96− return ((name, Set.toList realDeps) : concat rest)
95+ return ((makeRelative "." root, name, Set.toList realDeps) : concat rest)
9796
9897
9998isNative name = List.isPrefixOf "Native." name