mirror of
https://github.com/github/semantic.git
synced 2024-11-24 08:54:07 +03:00
Use the specialized handlers for Allocator and Precise.
This commit is contained in:
parent
8cd4d8808f
commit
a438930c91
@ -2,6 +2,10 @@
|
||||
module Data.Abstract.Address.Hole
|
||||
( Hole(..)
|
||||
, toMaybe
|
||||
, runAllocator
|
||||
, handleAllocator
|
||||
, runDeref
|
||||
, handleDeref
|
||||
) where
|
||||
|
||||
import Control.Abstract
|
||||
|
@ -1,6 +1,10 @@
|
||||
{-# LANGUAGE GADTs, RankNTypes, TypeOperators, UndecidableInstances #-}
|
||||
module Data.Abstract.Address.Located
|
||||
( Located(..)
|
||||
, runAllocator
|
||||
, handleAllocator
|
||||
, runDeref
|
||||
, handleDeref
|
||||
) where
|
||||
|
||||
import Control.Abstract
|
||||
|
@ -1,6 +1,10 @@
|
||||
{-# LANGUAGE GADTs, TypeOperators, UndecidableInstances #-}
|
||||
module Data.Abstract.Address.Monovariant
|
||||
( Monovariant(..)
|
||||
, runAllocator
|
||||
, handleAllocator
|
||||
, runDeref
|
||||
, handleDeref
|
||||
) where
|
||||
|
||||
import Control.Abstract
|
||||
|
@ -1,6 +1,10 @@
|
||||
{-# LANGUAGE GADTs, TypeOperators, UndecidableInstances #-}
|
||||
module Data.Abstract.Address.Precise
|
||||
( Precise(..)
|
||||
, runAllocator
|
||||
, handleAllocator
|
||||
, runDeref
|
||||
, handleDeref
|
||||
) where
|
||||
|
||||
import Control.Abstract
|
||||
|
@ -29,10 +29,10 @@ import Analysis.Abstract.Caching
|
||||
import Analysis.Abstract.Collecting
|
||||
import Analysis.Abstract.Graph as Graph
|
||||
import Control.Abstract
|
||||
import Data.Abstract.Address.Hole
|
||||
import Data.Abstract.Address.Located
|
||||
import Data.Abstract.Address.Monovariant
|
||||
import Data.Abstract.Address.Precise
|
||||
import Data.Abstract.Address.Hole as Hole
|
||||
import Data.Abstract.Address.Located as Located
|
||||
import Data.Abstract.Address.Monovariant as Monovariant
|
||||
import Data.Abstract.Address.Precise as Precise
|
||||
import Data.Abstract.BaseError (BaseError(..))
|
||||
import Data.Abstract.Evaluatable
|
||||
import Data.Abstract.Module
|
||||
@ -117,7 +117,10 @@ runCallGraph lang includePackages modules package = do
|
||||
. providingLiveSet
|
||||
. runReader (lowerBound @(ModuleTable (NonEmpty (Module (ModuleResult (Hole (Maybe Name) (Located Monovariant)))))))
|
||||
. raiseHandler (runModules (ModuleTable.modulePaths (packageModules package)))
|
||||
extractGraph <$> runEvaluator (runGraphAnalysis (evaluate lang analyzeModule analyzeTerm (runAllocator . runDeref) Abstract.runFunction modules))
|
||||
runAddressEffects
|
||||
= Hole.runAllocator (Located.handleAllocator Monovariant.handleAllocator)
|
||||
. Hole.runDeref (Located.handleDeref Monovariant.handleDeref)
|
||||
extractGraph <$> runEvaluator (runGraphAnalysis (evaluate lang analyzeModule analyzeTerm runAddressEffects Abstract.runFunction modules))
|
||||
|
||||
runImportGraphToModuleInfos :: forall effs lang term.
|
||||
( Declarations term
|
||||
@ -184,7 +187,10 @@ runImportGraph lang (package :: Package term) f =
|
||||
. runTermEvaluator @_ @_ @(Value (Hole (Maybe Name) Precise) (ImportGraphEff (Hole (Maybe Name) Precise) effs))
|
||||
. runReader (packageInfo package)
|
||||
. runReader lowerBound
|
||||
in extractGraph <$> runEvaluator (runImportGraphAnalysis (evaluate lang analyzeModule id (runAllocator . runDeref) (Concrete.runFunction coerce coerce) (ModuleTable.toPairs (packageModules package) >>= toList . snd)))
|
||||
runAddressEffects
|
||||
= Hole.runAllocator Precise.handleAllocator
|
||||
. Hole.runDeref Precise.handleDeref
|
||||
in extractGraph <$> runEvaluator (runImportGraphAnalysis (evaluate lang analyzeModule id runAddressEffects (Concrete.runFunction coerce coerce) (ModuleTable.toPairs (packageModules package) >>= toList . snd)))
|
||||
|
||||
newtype ImportGraphEff address outerEffects a = ImportGraphEff
|
||||
{ runImportGraphEff :: Eff ( Function address (Value address (ImportGraphEff address outerEffects))
|
||||
|
@ -9,8 +9,8 @@ import Analysis.Abstract.Collecting
|
||||
import Control.Abstract
|
||||
import Control.Exception (displayException)
|
||||
import Control.Monad.Effect.Trace (runPrintingTrace)
|
||||
import Data.Abstract.Address.Monovariant
|
||||
import Data.Abstract.Address.Precise
|
||||
import Data.Abstract.Address.Monovariant as Monovariant
|
||||
import Data.Abstract.Address.Precise as Precise
|
||||
import Data.Abstract.BaseError (BaseError(..))
|
||||
import Data.Abstract.Evaluatable
|
||||
import Data.Abstract.Module
|
||||
@ -131,7 +131,7 @@ evaluateProject' (TaskConfig config logger statter) proxy parser paths = either
|
||||
(runReader (lowerBound @Span)
|
||||
(runReader (lowerBound @(ModuleTable (NonEmpty (Module (ModuleResult Precise)))))
|
||||
(raiseHandler (runModules (ModuleTable.modulePaths (packageModules package)))
|
||||
(evaluate proxy id withTermSpans (runAllocator . runDeref) (Concrete.runFunction coerce coerce) modules))))))
|
||||
(evaluate proxy id withTermSpans (Precise.runAllocator . Precise.runDeref) (Concrete.runFunction coerce coerce) modules))))))
|
||||
|
||||
|
||||
evaluateProjectWithCaching proxy parser path = runTaskWithOptions debugOptions $ do
|
||||
@ -142,7 +142,7 @@ evaluateProjectWithCaching proxy parser path = runTaskWithOptions debugOptions $
|
||||
(runReader (lowerBound @Span)
|
||||
(runReader (lowerBound @(ModuleTable (NonEmpty (Module (ModuleResult Monovariant)))))
|
||||
(raiseHandler (runModules (ModuleTable.modulePaths (packageModules package)))
|
||||
(evaluate proxy id withTermSpans (runAllocator . runDeref) Type.runFunction modules)))))
|
||||
(evaluate proxy id withTermSpans (Monovariant.runAllocator . Monovariant.runDeref) Type.runFunction modules)))))
|
||||
|
||||
|
||||
parseFile :: Parser term -> FilePath -> IO term
|
||||
|
@ -5,7 +5,7 @@ module Control.Abstract.Evaluator.Spec
|
||||
) where
|
||||
|
||||
import Control.Abstract
|
||||
import Data.Abstract.Address.Precise
|
||||
import Data.Abstract.Address.Precise as Precise
|
||||
import Data.Abstract.BaseError
|
||||
import Data.Abstract.Module
|
||||
import qualified Data.Abstract.Number as Number
|
||||
@ -43,8 +43,8 @@ evaluate
|
||||
. runValueError
|
||||
. runEnvironmentError
|
||||
. runAddressError
|
||||
. runDeref
|
||||
. runAllocator @Precise
|
||||
. Precise.runDeref
|
||||
. Precise.runAllocator
|
||||
. (>>= deref . snd)
|
||||
. runEnv lowerBound
|
||||
. runReturn
|
||||
|
Loading…
Reference in New Issue
Block a user