-- | Generation of literals for refactorings. -- The bindings defined here are the AST constructor names with an "mk" prefix. {-# LANGUAGE OverloadedStrings , TypeFamilies #-} module Language.Haskell.Tools.AST.Gen.Literals where import qualified Name as GHC import Data.List import Data.String import Data.Function (on) import Control.Reference import Language.Haskell.Tools.AST import Language.Haskell.Tools.AST.Gen.Utils import Language.Haskell.Tools.AST.Gen.Base import Language.Haskell.Tools.AnnTrf.SourceTemplate import Language.Haskell.Tools.AnnTrf.SourceTemplateHelpers mkCharLit :: Char -> Ann Literal dom SrcTemplateStage mkCharLit c = mkAnn (fromString $ show c) $ CharLit c mkStringLit :: String -> Ann Literal dom SrcTemplateStage mkStringLit s = mkAnn (fromString $ show s) $ StringLit s mkIntLit :: Integer -> Ann Literal dom SrcTemplateStage mkIntLit i = mkAnn (fromString $ show i) $ IntLit i mkFracLit :: Rational -> Ann Literal dom SrcTemplateStage mkFracLit f = mkAnn (fromString $ show f) $ FracLit f mkPrimIntLit :: Integer -> Ann Literal dom SrcTemplateStage mkPrimIntLit i = mkAnn (fromString $ show i ++ "#") $ PrimIntLit i mkPrimWordLit :: Integer -> Ann Literal dom SrcTemplateStage mkPrimWordLit i = mkAnn (fromString $ show i ++ "##") $ PrimWordLit i mkPrimFloatLit :: Rational -> Ann Literal dom SrcTemplateStage mkPrimFloatLit f = mkAnn (fromString $ show f ++ "#") $ PrimFloatLit f mkPrimDoubleLit :: Rational -> Ann Literal dom SrcTemplateStage mkPrimDoubleLit f = mkAnn (fromString $ show f ++ "##") $ PrimDoubleLit f mkPrimCharLit :: Char -> Ann Literal dom SrcTemplateStage mkPrimCharLit c = mkAnn (fromString $ show c ++ "#") $ PrimCharLit c mkPrimStringLit :: String -> Ann Literal dom SrcTemplateStage mkPrimStringLit s = mkAnn (fromString $ show s ++ "#") $ PrimStringLit s