make quasiquoter (and haskell-src-exts dependency) optional

This commit is contained in:
rhiannon morris 2024-10-23 01:53:23 +02:00
parent eaf07f8981
commit 9269caacb7
2 changed files with 30 additions and 9 deletions

View file

@ -34,6 +34,11 @@ common build-settings
default-language: Haskell2010 default-language: Haskell2010
ghc-options: -Wall -Wunused-packages ghc-options: -Wall -Wunused-packages
flag quoter
manual: True
description: Include the quasiquoter
default: True
flag checked flag checked
manual: True manual: True
description: Add bounds-checking to primitive array operations description: Add bounds-checking to primitive array operations
@ -48,7 +53,6 @@ library
Data.Bytes.Builder.Bounded.Class Data.Bytes.Builder.Bounded.Class
Data.Bytes.Builder.Bounded.Unsafe Data.Bytes.Builder.Bounded.Unsafe
Data.Bytes.Builder.Class Data.Bytes.Builder.Class
Data.Bytes.Builder.Template
Data.Bytes.Builder.Unsafe Data.Bytes.Builder.Unsafe
other-modules: other-modules:
@ -60,17 +64,21 @@ library
, base >=4.17.0.0 && <4.21 , base >=4.17.0.0 && <4.21
, byteslice >=0.2.6 && <0.3 , byteslice >=0.2.6 && <0.3
, bytestring >=0.10.8.2 && <0.13 , bytestring >=0.10.8.2 && <0.13
, haskell-src-meta >=0.8.13
, integer-logarithms >=1.0.3 && <1.1 , integer-logarithms >=1.0.3 && <1.1
, natural-arithmetic >=0.1 && <0.3 , natural-arithmetic >=0.1 && <0.3
, primitive-offset >=0.2 && <0.3 , primitive-offset >=0.2 && <0.3
, run-st >=0.1.2 && <0.2 , run-st >=0.1.2 && <0.2
, template-haskell >=2.16
, text >=2.0 && <2.2 , text >=2.0 && <2.2
, text-short >=0.1.3 && <0.2 , text-short >=0.1.3 && <0.2
, wide-word >=0.1.0.9 && <0.2 , wide-word >=0.1.0.9 && <0.2
, zigzag , zigzag
if flag(quoter)
build-depends:
haskell-src-meta >=0.8.13
, template-haskell >=2.16
exposed-modules: Data.Bytes.Builder.Template
if impl(ghc >=9.2) if impl(ghc >=9.2)
hs-source-dirs: src-9.2 hs-source-dirs: src-9.2
@ -112,9 +120,14 @@ test-suite test
, tasty-hunit >=0.10.0.2 && <0.11 , tasty-hunit >=0.10.0.2 && <0.11
, tasty-quickcheck >=0.10.1 && <0.11 , tasty-quickcheck >=0.10.1 && <0.11
, text >=2.0 && <2.2 , text >=2.0 && <2.2
, text-short
, wide-word >=0.1.0.9 && <0.2 , wide-word >=0.1.0.9 && <0.2
default-extensions: CPP
if flag(quoter)
cpp-options: -DQUOTER
build-depends: text-short
benchmark bench benchmark bench
import: build-settings import: build-settings
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0

View file

@ -12,13 +12,10 @@ import Prelude hiding (replicate)
import Control.Applicative (liftA2) import Control.Applicative (liftA2)
import Control.Monad.ST (runST) import Control.Monad.ST (runST)
import Data.Bytes.Builder import Data.Bytes.Builder
import Data.Bytes.Builder.Template (bldr)
import Data.Bytes.Types (MutableBytes (MutableBytes)) import Data.Bytes.Types (MutableBytes (MutableBytes))
import Data.Char (chr, ord) import Data.Char (chr, ord)
import Data.IORef (IORef, newIORef, readIORef, writeIORef) import Data.IORef (IORef, newIORef, readIORef, writeIORef)
import Data.Maybe (fromMaybe)
import Data.Primitive (ByteArray, PrimArray) import Data.Primitive (ByteArray, PrimArray)
import Data.Text.Short (ShortText)
import Data.WideWord (Word128 (Word128), Word256 (Word256)) import Data.WideWord (Word128 (Word128), Word256 (Word256))
import Data.Word import Data.Word
import Numeric.Natural (Natural) import Numeric.Natural (Natural)
@ -28,16 +25,20 @@ import Test.Tasty (TestTree, defaultMain, testGroup)
import Test.Tasty.HUnit ((@=?)) import Test.Tasty.HUnit ((@=?))
import Text.Printf (printf) import Text.Printf (printf)
#ifdef QUOTER
import Data.Bytes.Builder.Template (bldr)
import Data.Maybe (fromMaybe)
import Data.Text.Short (ShortText)
#endif
import qualified Arithmetic.Nat as Nat import qualified Arithmetic.Nat as Nat
import qualified Data.Bits as Bits import qualified Data.Bits as Bits
import qualified Data.ByteString as ByteString import qualified Data.ByteString as ByteString
import qualified Data.ByteString.Builder as BB import qualified Data.ByteString.Builder as BB
import qualified Data.ByteString.Lazy.Char8 as LB import qualified Data.ByteString.Lazy.Char8 as LB
import qualified Data.Bytes as Bytes import qualified Data.Bytes as Bytes
import qualified Data.Bytes.Builder as Builder
import qualified Data.Bytes.Builder.Bounded as Bounded import qualified Data.Bytes.Builder.Bounded as Bounded
import qualified Data.Bytes.Chunks as Chunks import qualified Data.Bytes.Chunks as Chunks
import qualified Data.Bytes.Text.Ascii as Ascii
import qualified Data.Bytes.Text.Latin1 as Latin1 import qualified Data.Bytes.Text.Latin1 as Latin1
import qualified Data.List as L import qualified Data.List as L
import qualified Data.Primitive as PM import qualified Data.Primitive as PM
@ -48,6 +49,11 @@ import qualified Test.Tasty.HUnit as THU
import qualified Test.Tasty.QuickCheck as TQC import qualified Test.Tasty.QuickCheck as TQC
import qualified Prelude import qualified Prelude
#ifdef QUOTER
import qualified Data.Bytes.Builder as Builder
import qualified Data.Bytes.Text.Ascii as Ascii
#endif
import qualified HexWord64 import qualified HexWord64
import qualified Word16Tree import qualified Word16Tree
@ -329,6 +335,7 @@ tests =
] ]
@=? map Exts.toList (Exts.toList res) @=? map Exts.toList (Exts.toList res)
] ]
#ifdef QUOTER
, testGroup , testGroup
"bytes templates" "bytes templates"
[ THU.testCase "A" $ do [ THU.testCase "A" $ do
@ -352,6 +359,7 @@ tests =
msg = Chunks.concat . Builder.run 200 $ msgBuilder msg = Chunks.concat . Builder.run 200 $ msgBuilder
in Ascii.fromString "there are 137 lights!" @=? msg in Ascii.fromString "there are 137 lights!" @=? msg
] ]
#endif
] ]
bytesOntoRef :: bytesOntoRef ::