summaryrefslogtreecommitdiff
path: root/source/Felix/Source
diff options
context:
space:
mode:
Diffstat (limited to 'source/Felix/Source')
-rw-r--r--source/Felix/Source/Graph.hs45
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