{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FunctionalDependencies #-} -- | Intermediate Representation for Agda's types module Agda.IR where import qualified Agda.Interaction.Response as Agda import Agda.TypeChecking.Monad (TCM) import Data.Aeson import GHC.Generics (Generic) import Render -------------------------------------------------------------------------------- -- | Typeclass for converting Agda values into IR class FromAgda a b | a -> b where fromAgda :: a -> b class FromAgdaTCM a b | a -> b where fromAgdaTCM :: a -> TCM b -------------------------------------------------------------------------------- -- | IR for IOCTM data Response = -- non-last responses ResponseHighlightingInfoDirect HighlightingInfos | ResponseHighlightingInfoIndirect FilePath | ResponseDisplayInfo DisplayInfo | ResponseStatus Bool Bool | ResponseClearHighlightingTokenBased | ResponseClearHighlightingNotOnlyTokenBased | ResponseRunningInfo Int String | ResponseClearRunningInfo | ResponseDoneAborting | ResponseDoneExiting | ResponseGiveAction Int GiveResult | -- priority: 1 ResponseInteractionPoints [Int] | -- priority: 2 ResponseMakeCaseFunction [String] | ResponseMakeCaseExtendedLambda [String] | ResponseSolveAll [(Int, String)] | -- priority: 3 ResponseJumpToError FilePath Int | ResponseEnd deriving (Generic) instance ToJSON Response -------------------------------------------------------------------------------- -- | IR for DisplayInfo data DisplayInfo = DisplayInfoGeneric String [Block] | DisplayInfoAllGoalsWarnings String [Block] [Block] [String] [String] | DisplayInfoCurrentGoal Block | DisplayInfoInferredType Block | DisplayInfoCompilationOk [String] [String] | DisplayInfoAuto String | DisplayInfoError String | DisplayInfoTime String | DisplayInfoNormalForm String deriving (Generic) instance ToJSON DisplayInfo -------------------------------------------------------------------------------- -- | GiveResult data GiveResult = GiveString String | GiveParen | GiveNoParen deriving (Generic) instance FromAgda Agda.GiveResult GiveResult where fromAgda (Agda.Give_String s) = GiveString s fromAgda Agda.Give_Paren = GiveParen fromAgda Agda.Give_NoParen = GiveNoParen instance ToJSON GiveResult -------------------------------------------------------------------------------- -- | IR for HighlightingInfo data HighlightingInfo = HighlightingInfo Int -- starting offset Int -- ending offset [String] -- list of names of aspects Bool -- is token based? String -- note (Maybe (FilePath, Int)) -- the defining module of the token and its position in that module deriving (Generic, Show) instance ToJSON HighlightingInfo data HighlightingInfos = HighlightingInfos Bool [HighlightingInfo] deriving (Generic, Show) instance ToJSON HighlightingInfos