mirror of
https://github.com/github/semantic.git
synced 2024-11-28 10:15:55 +03:00
WIP
This commit is contained in:
parent
40a8e6d418
commit
f401f75303
@ -5,6 +5,16 @@ jobs: $ncpus
|
|||||||
package semantic
|
package semantic
|
||||||
ghc-options: +RTS -A128m -n2m -RTS
|
ghc-options: +RTS -A128m -n2m -RTS
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/fused-effects/fused-effects.git
|
||||||
|
tag: fa8694da51698d1f0a7176816550457ae1067497
|
||||||
|
|
||||||
|
source-repository-package
|
||||||
|
type: git
|
||||||
|
location: https://github.com/fused-effects/fused-effects-exceptions.git
|
||||||
|
tag: 57b1dc8b5deadbe741ce22398d836a14dbba7577
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
location: https://github.com/joshvera/proto3-suite.git
|
location: https://github.com/joshvera/proto3-suite.git
|
||||||
|
@ -40,7 +40,7 @@ library
|
|||||||
, containers ^>= 0.6
|
, containers ^>= 0.6
|
||||||
, directory ^>= 1.3
|
, directory ^>= 1.3
|
||||||
, filepath ^>= 1.4
|
, filepath ^>= 1.4
|
||||||
, fused-effects ^>= 0.4
|
, fused-effects ^>= 0.5
|
||||||
, haskeline ^>= 0.7.5
|
, haskeline ^>= 0.7.5
|
||||||
, parsers ^>= 0.12.10
|
, parsers ^>= 0.12.10
|
||||||
, prettyprinter ^>= 1.2.1
|
, prettyprinter ^>= 1.2.1
|
||||||
|
@ -55,8 +55,8 @@ common dependencies
|
|||||||
, fastsum ^>= 0.1.1.0
|
, fastsum ^>= 0.1.1.0
|
||||||
, filepath ^>= 1.4.2.1
|
, filepath ^>= 1.4.2.1
|
||||||
, free ^>= 5.1
|
, free ^>= 5.1
|
||||||
, fused-effects ^>= 0.4.0.0
|
, fused-effects ^>= 0.5.0.0
|
||||||
, fused-effects-exceptions ^>= 0.1.1.0
|
, fused-effects-exceptions ^>= 0.2.0.0
|
||||||
, hashable ^>= 1.2.7.0
|
, hashable ^>= 1.2.7.0
|
||||||
, tree-sitter ^>= 0.1.0.0
|
, tree-sitter ^>= 0.1.0.0
|
||||||
, mtl ^>= 2.2.2
|
, mtl ^>= 2.2.2
|
||||||
|
@ -420,7 +420,7 @@ reachable roots heap = go mempty roots
|
|||||||
data Deref value (m :: * -> *) k
|
data Deref value (m :: * -> *) k
|
||||||
= DerefCell (Set value) (Maybe value -> k)
|
= DerefCell (Set value) (Maybe value -> k)
|
||||||
| AssignCell value (Set value) (Set value -> k)
|
| AssignCell value (Set value) (Set value -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
runDeref :: Evaluator term address value (DerefC address value m) a
|
runDeref :: Evaluator term address value (DerefC address value m) a
|
||||||
|
@ -64,7 +64,7 @@ data Modules address value (m :: * -> *) k
|
|||||||
| Lookup ModulePath (Maybe (ModuleResult address value) -> k)
|
| Lookup ModulePath (Maybe (ModuleResult address value) -> k)
|
||||||
| Resolve [FilePath] (Maybe ModulePath -> k)
|
| Resolve [FilePath] (Maybe ModulePath -> k)
|
||||||
| List FilePath ([ModulePath] -> k)
|
| List FilePath ([ModulePath] -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ alloc = send . flip Alloc pure
|
|||||||
|
|
||||||
data Allocator address (m :: * -> *) k
|
data Allocator address (m :: * -> *) k
|
||||||
= Alloc Name (address -> k)
|
= Alloc Name (address -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
runAllocator :: Evaluator term address value (AllocatorC address m) a
|
runAllocator :: Evaluator term address value (AllocatorC address m) a
|
||||||
|
@ -129,7 +129,7 @@ data Function term address value (m :: * -> *) k
|
|||||||
| BuiltIn address BuiltIn (value -> k) -- ^ A built-in is parameterized by its parent scope, BuiltIn type, and returns a value.
|
| BuiltIn address BuiltIn (value -> k) -- ^ A built-in is parameterized by its parent scope, BuiltIn type, and returns a value.
|
||||||
| Call value [value] (value -> k) -- ^ A Call takes a set of values as parameters and returns a ValueRef.
|
| Call value [value] (value -> k) -- ^ A Call takes a set of values as parameters and returns a ValueRef.
|
||||||
| Bind value value (value -> k)
|
| Bind value value (value -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ ifthenelse v t e = asBool v >>= \ c -> if c then t else e
|
|||||||
data Boolean value (m :: * -> *) k
|
data Boolean value (m :: * -> *) k
|
||||||
= Boolean Bool (value -> k)
|
= Boolean Bool (value -> k)
|
||||||
| AsBool value (Bool -> k)
|
| AsBool value (Bool -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
runBoolean :: Evaluator term address value (BooleanC value m) a
|
runBoolean :: Evaluator term address value (BooleanC value m) a
|
||||||
@ -224,7 +224,7 @@ unit = send (Unit pure)
|
|||||||
|
|
||||||
newtype Unit value (m :: * -> *) k
|
newtype Unit value (m :: * -> *) k
|
||||||
= Unit (value -> k)
|
= Unit (value -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
|
|
||||||
instance HFunctor (Unit value) where
|
instance HFunctor (Unit value) where
|
||||||
hmap _ = coerce
|
hmap _ = coerce
|
||||||
@ -252,7 +252,7 @@ asString v = send (AsString v pure)
|
|||||||
data String value (m :: * -> *) k
|
data String value (m :: * -> *) k
|
||||||
= String Text (value -> k)
|
= String Text (value -> k)
|
||||||
| AsString value (Text -> k)
|
| AsString value (Text -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
newtype StringC value m a = StringC { runStringC :: m a }
|
newtype StringC value m a = StringC { runStringC :: m a }
|
||||||
@ -300,7 +300,7 @@ data Numeric value (m :: * -> *) k
|
|||||||
| Rational Rational (value -> k)
|
| Rational Rational (value -> k)
|
||||||
| LiftNumeric (forall a . Num a => a -> a) value (value -> k)
|
| LiftNumeric (forall a . Num a => a -> a) value (value -> k)
|
||||||
| LiftNumeric2 (forall a b. Number a -> Number b -> SomeNumber) value value (value -> k)
|
| LiftNumeric2 (forall a b. Number a -> Number b -> SomeNumber) value value (value -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
newtype NumericC value m a = NumericC { runNumericC :: m a }
|
newtype NumericC value m a = NumericC { runNumericC :: m a }
|
||||||
@ -344,7 +344,7 @@ data Bitwise value (m :: * -> *) k
|
|||||||
| LiftBitwise (forall a . Bits a => a -> a) value (value -> k)
|
| LiftBitwise (forall a . Bits a => a -> a) value (value -> k)
|
||||||
| LiftBitwise2 (forall a . (Integral a, Bits a) => a -> a -> a) value value (value -> k)
|
| LiftBitwise2 (forall a . (Integral a, Bits a) => a -> a -> a) value value (value -> k)
|
||||||
| UnsignedRShift value value (value -> k)
|
| UnsignedRShift value value (value -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
runBitwise :: Evaluator term address value (BitwiseC value m) a
|
runBitwise :: Evaluator term address value (BitwiseC value m) a
|
||||||
@ -372,7 +372,7 @@ data Object address value (m :: * -> *) k
|
|||||||
= Object address (value -> k)
|
= Object address (value -> k)
|
||||||
| ScopedEnvironment value (Maybe address -> k)
|
| ScopedEnvironment value (Maybe address -> k)
|
||||||
| Klass Declaration address (value -> k)
|
| Klass Declaration address (value -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
newtype ObjectC address value m a = ObjectC { runObjectC :: m a }
|
newtype ObjectC address value m a = ObjectC { runObjectC :: m a }
|
||||||
@ -393,7 +393,7 @@ asArray v = send (AsArray v pure)
|
|||||||
data Array value (m :: * -> *) k
|
data Array value (m :: * -> *) k
|
||||||
= Array [value] (value -> k)
|
= Array [value] (value -> k)
|
||||||
| AsArray value ([value] -> k)
|
| AsArray value ([value] -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
newtype ArrayC value m a = ArrayC { runArrayC :: m a }
|
newtype ArrayC value m a = ArrayC { runArrayC :: m a }
|
||||||
@ -415,7 +415,7 @@ kvPair v1 v2 = send (KvPair v1 v2 pure)
|
|||||||
data Hash value (m :: * -> *) k
|
data Hash value (m :: * -> *) k
|
||||||
= Hash [(value, value)] (value -> k)
|
= Hash [(value, value)] (value -> k)
|
||||||
| KvPair value value (value -> k)
|
| KvPair value value (value -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
newtype HashC value m a = HashC { runHashC :: m a }
|
newtype HashC value m a = HashC { runHashC :: m a }
|
||||||
|
@ -13,12 +13,12 @@ import Control.Effect.Reader
|
|||||||
import Control.Effect.Sum
|
import Control.Effect.Sum
|
||||||
|
|
||||||
data Interpose eff m k
|
data Interpose eff m k
|
||||||
= forall a . Interpose (m a) (forall n x . eff n (n x) -> m x) (a -> k)
|
= forall a . Interpose (m a) (forall n x . eff n (n x) -> m x) (a -> m k)
|
||||||
|
|
||||||
deriving instance Functor (Interpose eff m)
|
deriving instance Functor m => Functor (Interpose eff m)
|
||||||
|
|
||||||
instance HFunctor (Interpose eff) where
|
instance HFunctor (Interpose eff) where
|
||||||
hmap f (Interpose m h k) = Interpose (f m) (f . h) k
|
hmap f (Interpose m h k) = Interpose (f m) (f . h) (f . k)
|
||||||
|
|
||||||
-- | Respond to requests for some specific effect with a handler.
|
-- | Respond to requests for some specific effect with a handler.
|
||||||
--
|
--
|
||||||
@ -48,7 +48,7 @@ runListener (Listener listen) = listen
|
|||||||
|
|
||||||
instance (Carrier sig m, Member eff sig) => Carrier (Interpose eff :+: sig) (InterposeC eff m) where
|
instance (Carrier sig m, Member eff sig) => Carrier (Interpose eff :+: sig) (InterposeC eff m) where
|
||||||
eff (L (Interpose m h k)) =
|
eff (L (Interpose m h k)) =
|
||||||
InterposeC (local (const (Just (Listener h))) (runInterposeC m)) >>= k
|
InterposeC (local (const (Just (Listener h))) (runInterposeC m)) >>= _ k
|
||||||
eff (R other) = do
|
eff (R other) = do
|
||||||
listener <- InterposeC ask
|
listener <- InterposeC ask
|
||||||
case (listener, prj other) of
|
case (listener, prj other) of
|
||||||
|
@ -18,9 +18,9 @@ import System.Console.Haskeline
|
|||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
|
|
||||||
data REPL (m :: * -> *) k
|
data REPL (m :: * -> *) k
|
||||||
= Prompt Text (Maybe Text -> k)
|
= Prompt Text (Maybe Text -> m k)
|
||||||
| Output Text k
|
| Output Text (m k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
prompt :: (Member REPL sig, Carrier sig m) => Text -> m (Maybe Text)
|
prompt :: (Member REPL sig, Carrier sig m) => Text -> m (Maybe Text)
|
||||||
|
@ -36,7 +36,7 @@ data Diff term1 term2 diff (m :: * -> *) k
|
|||||||
| Insert term2 (diff -> k)
|
| Insert term2 (diff -> k)
|
||||||
-- | Replace one term with another.
|
-- | Replace one term with another.
|
||||||
| Replace term1 term2 (diff -> k)
|
| Replace term1 term2 (diff -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
newtype Algorithm term1 term2 diff m a = Algorithm { runAlgorithm :: m a }
|
newtype Algorithm term1 term2 diff m a = Algorithm { runAlgorithm :: m a }
|
||||||
|
@ -39,9 +39,9 @@ distributeFoldMap toTask inputs = fmap fold (distribute (fmap toTask inputs))
|
|||||||
|
|
||||||
-- | Distribute effects run tasks concurrently.
|
-- | Distribute effects run tasks concurrently.
|
||||||
data Distribute m k
|
data Distribute m k
|
||||||
= forall a . Distribute (m a) (a -> k)
|
= forall a . Distribute (m a) (a -> m k)
|
||||||
|
|
||||||
deriving instance Functor (Distribute m)
|
deriving instance Functor m => Functor (Distribute m)
|
||||||
|
|
||||||
instance HFunctor Distribute where
|
instance HFunctor Distribute where
|
||||||
hmap f (Distribute m k) = Distribute (f m) k
|
hmap f (Distribute m k) = Distribute (f m) k
|
||||||
|
@ -46,7 +46,7 @@ resolutionMap Project{..} = case projectLanguage of
|
|||||||
data Resolution (m :: * -> *) k
|
data Resolution (m :: * -> *) k
|
||||||
= NodeJSResolution FilePath Text [FilePath] (Map FilePath FilePath -> k)
|
= NodeJSResolution FilePath Text [FilePath] (Map FilePath FilePath -> k)
|
||||||
| NoResolution (Map FilePath FilePath -> k)
|
| NoResolution (Map FilePath FilePath -> k)
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
runResolution :: ResolutionC m a -> m a
|
runResolution :: ResolutionC m a -> m a
|
||||||
|
@ -50,10 +50,10 @@ data Excludes
|
|||||||
|
|
||||||
-- | An effect to read/write 'Blob's from 'Handle's or 'FilePath's.
|
-- | An effect to read/write 'Blob's from 'Handle's or 'FilePath's.
|
||||||
data Files (m :: * -> *) k
|
data Files (m :: * -> *) k
|
||||||
= forall a . Read (Source a) (a -> k)
|
= forall a . Read (Source a) (a -> m k)
|
||||||
| ReadProject (Maybe FilePath) FilePath Language [FilePath] (Project -> k)
|
| ReadProject (Maybe FilePath) FilePath Language [FilePath] (Project -> m k)
|
||||||
| FindFiles FilePath [String] [FilePath] ([FilePath] -> k)
|
| FindFiles FilePath [String] [FilePath] ([FilePath] -> m k)
|
||||||
| Write Destination B.Builder k
|
| Write Destination B.Builder (m k)
|
||||||
|
|
||||||
deriving instance Functor (Files m)
|
deriving instance Functor (Files m)
|
||||||
instance HFunctor Files
|
instance HFunctor Files
|
||||||
|
@ -139,7 +139,7 @@ time' = withTiming'
|
|||||||
data Telemetry (m :: * -> *) k
|
data Telemetry (m :: * -> *) k
|
||||||
= WriteStat Stat k
|
= WriteStat Stat k
|
||||||
| WriteLog Level String [(String, String)] k
|
| WriteLog Level String [(String, String)] k
|
||||||
deriving stock Functor
|
deriving stock (Functor, Generic1)
|
||||||
deriving anyclass (HFunctor, Effect)
|
deriving anyclass (HFunctor, Effect)
|
||||||
|
|
||||||
-- | Run a 'Telemetry' effect by expecting a 'Reader' of 'Queue's to write stats and logs to.
|
-- | Run a 'Telemetry' effect by expecting a 'Reader' of 'Queue's to write stats and logs to.
|
||||||
|
@ -26,9 +26,9 @@ timeout n = send . flip (Timeout n) pure
|
|||||||
-- | 'Timeout' effects run other effects, aborting them if they exceed the
|
-- | 'Timeout' effects run other effects, aborting them if they exceed the
|
||||||
-- specified duration.
|
-- specified duration.
|
||||||
data Timeout m k
|
data Timeout m k
|
||||||
= forall a . Timeout Duration (m a) (Maybe a -> k)
|
= forall a . Timeout Duration (m a) (Maybe a -> m k)
|
||||||
|
|
||||||
deriving instance Functor (Timeout m)
|
deriving instance Functor m => Functor (Timeout m)
|
||||||
|
|
||||||
instance HFunctor Timeout where
|
instance HFunctor Timeout where
|
||||||
hmap f (Timeout n task k) = Timeout n (f task) k
|
hmap f (Timeout n task k) = Timeout n (f task) k
|
||||||
|
Loading…
Reference in New Issue
Block a user