1
1
mirror of https://github.com/github/semantic.git synced 2024-12-30 10:27:45 +03:00
semantic/src/Info.hs

34 lines
1.0 KiB
Haskell
Raw Normal View History

{-# LANGUAGE DataKinds, FlexibleContexts, TypeOperators #-}
2016-03-31 00:12:39 +03:00
module Info where
2016-03-31 00:26:52 +03:00
import Data.Record
import Prologue
2016-03-31 00:26:52 +03:00
import Category
import Range
newtype RangeA = RangeA { unRangeA :: Range }
newtype CategoryA = CategoryA { unCategoryA :: Category }
newtype SizeA = SizeA { unSizeA :: Integer }
newtype CostA = CostA { unCostA :: Integer }
type InfoFields = '[ RangeA, CategoryA, SizeA, CostA ]
type Info' = Record InfoFields
characterRange' :: HasField fields RangeA => Record fields -> Range
characterRange' = unRangeA . getField
category' :: HasField fields CategoryA => Record fields -> Category
category' = unCategoryA . getField
size' :: HasField fields SizeA => Record fields -> Integer
size' = unSizeA . getField
cost' :: HasField fields CostA => Record fields -> Integer
cost' = unCostA . getField
2016-03-31 00:26:52 +03:00
-- | An annotation for a source file, including the source range and semantic
-- | categories.
2016-06-03 06:34:16 +03:00
data Info = Info { characterRange :: !Range, category :: !Category, size :: !Integer, cost :: !Integer }
2016-03-31 00:26:52 +03:00
deriving (Eq, Show)