packages feed

c-expr-dsl-0.1.0.0: c-expr-dsl.cabal

cabal-version:   3.0
name:            c-expr-dsl
version:         0.1.0.0
license:         BSD-3-Clause
license-file:    LICENSE
author:          Well-Typed LLP
maintainer:      info@well-typed.com
category:        System
build-type:      Simple
extra-doc-files:
  CHANGELOG.md
  README.md

synopsis:        DSL for the language support by c-expr-runtime
tested-with:
  GHC ==9.2.8
   || ==9.4.8
   || ==9.6.7
   || ==9.8.4
   || ==9.10.3
   || ==9.12.2
   || ==9.14.1

description:
  This library provides the front end for the c-expr DSL: a Parsec-based parser
  that turns libclang macro tokens into a syntax tree, and a typechecker that
  assigns types to macro expressions according to the rules implemented in
  c-expr-runtime.

data-files:      *.golden
data-dir:        test/fixtures

source-repository head
  type:     git
  location: https://github.com/well-typed/c-expr.git
  subdir:   c-expr-dsl

source-repository this
  type:     git
  location: https://github.com/well-typed/c-expr.git
  subdir:   c-expr-dsl
  tag:      release-0.1.0.0

common lang
  build-depends:      base >=4.16 && <4.23
  default-language:   GHC2021
  default-extensions:
    DataKinds
    DeriveAnyClass
    DerivingStrategies
    LambdaCase
    MultiWayIf
    OverloadedStrings
    PatternSynonyms
    QuantifiedConstraints
    TypeFamilies
    UndecidableInstances

  other-extensions:
    CPP
    MagicHash

  ghc-options:
    -Wall -Wunused-packages -Wno-unticked-promoted-constructors
    -Wprepositive-qualified-module

library
  import:          lang
  hs-source-dirs:  src
  exposed-modules:
    C.Expr.Parse
    C.Expr.Syntax
    C.Expr.Typecheck
    C.Expr.Typecheck.Interface.Type
    C.Expr.Typecheck.Interface.Value
    C.Expr.Typecheck.Type
    C.Expr.Util.Panic

  other-modules:
    C.Expr.Parse.Expr
    C.Expr.Parse.Identifier
    C.Expr.Parse.Infra
    C.Expr.Parse.Literal
    C.Expr.Syntax.Expr
    C.Expr.Syntax.Identifier
    C.Expr.Syntax.Literal
    C.Expr.Syntax.Name
    C.Expr.Syntax.TTG
    C.Expr.Syntax.TTG.Parse
    C.Expr.Syntax.TTG.Typecheck
    C.Expr.Syntax.Type
    C.Expr.Typecheck.Expr
    C.Expr.Util.Parsec
    C.Expr.Util.TestEquality

  -- internal dependencies
  build-depends:   c-expr-runtime >=0.1.0.0 && <0.2

  -- external dependencies
  build-depends:
    , bytestring           >=0.10  && <0.13
    , containers           >=0.6   && <0.9
    , debruijn             >=0.3.1 && <0.4
    , fin                  >=0.3.2 && <0.4
    , indexed-traversable  >=0.1.4 && <0.2
    , libclang-bindings    >=0.1   && <0.2
    , mtl                  >=2.2   && <2.4
    , parsec               >=3.1   && <3.2
    , scientific           >=0.3.7 && <0.4
    , some                 >=1.0.6 && <1.1
    , text                 >=1.2   && <2.2
    , vec                  >=0.5   && <0.6

test-suite test-c-expr-dsl
  import:          lang
  type:            exitcode-stdio-1.0
  main-is:         Main.hs
  hs-source-dirs:  test
  other-modules:
    Paths_c_expr_dsl
    Test.CExpr.Parse
    Test.CExpr.Parse.Golden
    Test.CExpr.Parse.Infra
    Test.CExpr.Parse.Literal
    Test.CExpr.Parse.Macro
    Test.CExpr.Parse.Type
    Test.CExpr.Typecheck
    Test.CExpr.Typecheck.Classify
    Test.CExpr.Typecheck.Infra
    Test.CExpr.Util

  autogen-modules: Paths_c_expr_dsl

  -- internal dependencies
  build-depends:
    , c-expr-dsl
    , c-expr-runtime

  -- external dependencies
  build-depends:
    , bytestring         >=0.10  && <0.13
    , containers         >=0.6   && <0.9
    , debruijn           >=0.3.1 && <0.4
    , filepath           >=1.4   && <1.6
    , fin                >=0.3.2 && <0.4
    , libclang-bindings  >=0.1   && <0.2
    , parsec             >=3.1   && <3.2
    , tasty              >=1.4   && <1.6
    , tasty-golden       >=2.3   && <2.4
    , tasty-hunit        >=0.10  && <0.11
    , text               >=1.2   && <2.2
    , vec                >=0.5   && <0.6