diff options
Diffstat (limited to 'source/Felix/Source')
| -rw-r--r-- | source/Felix/Source/Graph.hs | 45 |
1 files changed, 10 insertions, 35 deletions
diff --git a/source/Felix/Source/Graph.hs b/source/Felix/Source/Graph.hs index 4697f77..9c8753d 100644 --- a/source/Felix/Source/Graph.hs +++ b/source/Felix/Source/Graph.hs @@ -21,16 +21,15 @@ module Felix.Source.Graph , sourceGraphImportEdges , sourceGraphImportedBeforeImporter , buildResolvedSourceGraph - , buildResolvedSourceGraphMeasured ) where import Base import Felix.Source -import Report.Location +import Felix.Report.Location ( FileId , registerFilePathWithDisplay ) -import Syntax.Token (Located(..), gatherImports) +import Felix.Syntax.Token (Located(..), gatherImports) import Control.Monad (unless) import Control.Monad.State.Strict @@ -132,41 +131,27 @@ data GraphBuildState = GraphBuildState { buildNodes :: !(Map CanonicalPath BuildNode) , buildEdgesReversed :: ![SourceImportEdge] , buildOrderReversed :: ![SourceNode] - , buildSelectionMeasurements :: !SourceSelectionMeasurements } type GraphBuilder = ExceptT SourceError (StateT GraphBuildState IO) -initialGraphBuildState - :: SourceSelectionMeasurements - -> GraphBuildState -initialGraphBuildState selectionMeasurements = GraphBuildState +initialGraphBuildState :: GraphBuildState +initialGraphBuildState = GraphBuildState { buildNodes = mempty , buildEdgesReversed = [] , buildOrderReversed = [] - , buildSelectionMeasurements = selectionMeasurements } buildResolvedSourceGraph :: SourceMounts -> RootRequest -> IO (Either SourceError ResolvedSourceGraph) -buildResolvedSourceGraph mounts request = - fmap fst <$> buildResolvedSourceGraphMeasured mounts request - -buildResolvedSourceGraphMeasured - :: SourceMounts - -> RootRequest - -> IO - (Either - SourceError - (ResolvedSourceGraph, SourceSelectionMeasurements)) -buildResolvedSourceGraphMeasured mounts request = do - resolvedRoot <- resolveRootMeasured mounts request +buildResolvedSourceGraph mounts request = do + resolvedRoot <- resolveRoot mounts request case resolvedRoot of Left err -> pure (Left err) - Right (rootSource, rootMeasurements) -> do + Right rootSource -> do loadedRoot <- loadResolvedSource rootSource case loadedRoot of Left err -> @@ -179,7 +164,7 @@ buildResolvedSourceGraphMeasured mounts request = do mounts (sourceNodeCanonicalPath rootNode) []) - (initialGraphBuildState rootMeasurements) + initialGraphBuildState pure case result of Left err -> Left err @@ -192,13 +177,11 @@ buildResolvedSourceGraphMeasured mounts request = do "source graph has no root node") Just order -> Right - ( ResolvedSourceGraph + (ResolvedSourceGraph order (reverse (buildEdgesReversed finalState)) - , buildSelectionMeasurements - finalState ) insertFreshNode :: LoadedSource -> GraphBuilder SourceNode @@ -307,15 +290,7 @@ visitImport visitImport mounts importerNode path reference = do let importer = sourceNodeResolved importerNode importerCanonical = sourceNodeCanonicalPath importerNode - (imported, selectionMeasurements) <- - liftEitherIO - (resolveImportMeasured mounts importer reference) - modify' \state -> - state - { buildSelectionMeasurements = - buildSelectionMeasurements state - <> selectionMeasurements - } + imported <- liftEitherIO (resolveImport mounts importer reference) let importedCanonical = resolvedSourceCanonicalPath imported existing <- gets (Map.lookup importedCanonical . buildNodes) case existing of |
