packages feed

cimple-0.0.28: src/Language/Cimple/Parser/Error.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE Strict            #-}
module Language.Cimple.Parser.Error
    ( parseError
    ) where

import           Data.Aeson                 (encode)
import qualified Data.ByteString.Lazy.Char8 as LBSC
import           Data.Text                  (Text)
import           Language.Cimple.Lexer      (Alex, Lexeme (..), ParseError (..),
                                             alexError, getContext)
import           Language.Cimple.Tokens     (LexemeClass (..))

parseError :: (Lexeme Text, [String]) -> Alex a
parseError (l@(L p _ _), options) = do
    ctx <- getContext
    alexError $ LBSC.unpack (encode (ParseError p ctx options l))