{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} module Nix.Context where import Nix.Options import Nix.Scope import Nix.Frames import Nix.Utils import Nix.Expr.Types.Annotated ( SrcSpan , nullSpan ) data Context m t = Context { Context m t -> Scopes m t scopes :: Scopes m t , Context m t -> SrcSpan source :: SrcSpan , Context m t -> Frames frames :: Frames , Context m t -> Options options :: Options } instance Has (Context m t) (Scopes m t) where hasLens :: LensLike' f (Context m t) (Scopes m t) hasLens Scopes m t -> f (Scopes m t) f (Context Scopes m t x SrcSpan y Frames z Options w) = (\Scopes m t x' -> Scopes m t -> SrcSpan -> Frames -> Options -> Context m t forall (m :: * -> *) t. Scopes m t -> SrcSpan -> Frames -> Options -> Context m t Context Scopes m t x' SrcSpan y Frames z Options w) (Scopes m t -> Context m t) -> f (Scopes m t) -> f (Context m t) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Scopes m t -> f (Scopes m t) f Scopes m t x instance Has (Context m t) SrcSpan where hasLens :: LensLike' f (Context m t) SrcSpan hasLens SrcSpan -> f SrcSpan f (Context Scopes m t x SrcSpan y Frames z Options w) = (\SrcSpan y' -> Scopes m t -> SrcSpan -> Frames -> Options -> Context m t forall (m :: * -> *) t. Scopes m t -> SrcSpan -> Frames -> Options -> Context m t Context Scopes m t x SrcSpan y' Frames z Options w) (SrcSpan -> Context m t) -> f SrcSpan -> f (Context m t) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> SrcSpan -> f SrcSpan f SrcSpan y instance Has (Context m t) Frames where hasLens :: LensLike' f (Context m t) Frames hasLens Frames -> f Frames f (Context Scopes m t x SrcSpan y Frames z Options w) = (\Frames z' -> Scopes m t -> SrcSpan -> Frames -> Options -> Context m t forall (m :: * -> *) t. Scopes m t -> SrcSpan -> Frames -> Options -> Context m t Context Scopes m t x SrcSpan y Frames z' Options w) (Frames -> Context m t) -> f Frames -> f (Context m t) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Frames -> f Frames f Frames z instance Has (Context m t) Options where hasLens :: LensLike' f (Context m t) Options hasLens Options -> f Options f (Context Scopes m t x SrcSpan y Frames z Options w) = (\Options w' -> Scopes m t -> SrcSpan -> Frames -> Options -> Context m t forall (m :: * -> *) t. Scopes m t -> SrcSpan -> Frames -> Options -> Context m t Context Scopes m t x SrcSpan y Frames z Options w') (Options -> Context m t) -> f Options -> f (Context m t) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Options -> f Options f Options w newContext :: Options -> Context m t newContext :: Options -> Context m t newContext = Scopes m t -> SrcSpan -> Frames -> Options -> Context m t forall (m :: * -> *) t. Scopes m t -> SrcSpan -> Frames -> Options -> Context m t Context Scopes m t forall (m :: * -> *) a. Scopes m a emptyScopes SrcSpan nullSpan []