1
1
mirror of https://github.com/github/semantic.git synced 2024-12-21 05:41:54 +03:00
semantic/src/Info.hs

44 lines
1.2 KiB
Haskell
Raw Normal View History

2016-06-17 17:45:41 +03:00
{-# LANGUAGE DataKinds, FlexibleContexts #-}
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
2016-06-17 18:22:22 +03:00
newtype Size = Size { unSize :: Integer }
newtype Cost = Cost { unCost :: Integer }
2016-06-17 18:22:22 +03:00
type InfoFields = '[ Range, Category, Size, Cost ]
type Info' = Record InfoFields
characterRange' :: HasField fields Range => Record fields -> Range
characterRange' = getField
setCharacterRange' :: SetField fields Range => Record fields -> Range -> Record fields
setCharacterRange' = setField
2016-06-17 17:29:24 +03:00
category' :: HasField fields Category => Record fields -> Category
category' = getField
setCategory' :: SetField fields Category => Record fields -> Category -> Record fields
setCategory' = setField
2016-06-17 17:29:24 +03:00
2016-06-17 18:22:22 +03:00
size' :: HasField fields Size => Record fields -> Size
size' = getField
2016-06-17 18:22:22 +03:00
setSize' :: SetField fields Size => Record fields -> Size -> Record fields
setSize' = setField
2016-06-17 17:29:24 +03:00
2016-06-17 18:22:22 +03:00
cost' :: HasField fields Cost => Record fields -> Cost
cost' = getField
2016-06-17 18:22:22 +03:00
setCost' :: SetField fields Cost => Record fields -> Cost -> Record fields
setCost' = setField
2016-06-17 17:29:24 +03:00
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)