packages feed

crucible-syntax-0.4.1: crucible-syntax.cabal

Cabal-version: 2.2
Name:          crucible-syntax
Version:       0.4.1
Author:        Galois Inc.
Maintainer:    dtc@galois.com
Build-type:    Simple
License:       BSD-3-Clause
License-file:  LICENSE
Category:      Language
Synopsis:      A syntax for reading and writing Crucible control-flow graphs
Description:
  This package provides a syntax for directly constructing Crucible
  control-flow graphs, as well as for observing them.

extra-doc-files: README.txt, CHANGELOG.md
extra-source-files:

common shared
  -- Specifying -Wall and -Werror can cause the project to fail to build on
  -- newer versions of GHC simply due to new warnings being added to -Wall. To
  -- prevent this from happening we manually list which warnings should be
  -- considered errors. We also list some warnings that are not in -Wall, though
  -- try to avoid "opinionated" warnings (though this judgement is clearly
  -- subjective).
  --
  -- Warnings are grouped by the GHC version that introduced them, and then
  -- alphabetically.
  --
  -- A list of warnings and the GHC version in which they were introduced is
  -- available here:
  -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html

  -- Since GHC 8.10 or earlier:
  ghc-options:
    -Wall
    -Werror=compat-unqualified-imports
    -Werror=deferred-type-errors
    -Werror=deprecated-flags
    -Werror=deprecations
    -Werror=deriving-defaults
    -Werror=dodgy-foreign-imports
    -Werror=duplicate-exports
    -Werror=empty-enumerations
    -Werror=identities
    -Werror=inaccessible-code
    -Werror=incomplete-patterns
    -Werror=incomplete-record-updates
    -Werror=incomplete-uni-patterns
    -Werror=inline-rule-shadowing
    -Werror=missed-extra-shared-lib
    -Werror=missing-exported-signatures
    -Werror=missing-fields
    -Werror=missing-home-modules
    -Werror=missing-methods
    -Werror=overflowed-literals
    -Werror=overlapping-patterns
    -Werror=partial-fields
    -Werror=partial-type-signatures
    -Werror=simplifiable-class-constraints
    -Werror=star-binder
    -Werror=star-is-type
    -Werror=tabs
    -Werror=typed-holes
    -Werror=unrecognised-pragmas
    -Werror=unrecognised-warning-flags
    -Werror=unsupported-calling-conventions
    -Werror=unsupported-llvm-version
    -Werror=unticked-promoted-constructors
    -Werror=unused-imports
    -Werror=warnings-deprecations
    -Werror=wrong-do-bind

  if impl(ghc >= 9.2)
    ghc-options:
      -Werror=ambiguous-fields
      -Werror=operator-whitespace
      -Werror=operator-whitespace-ext-conflict
      -Werror=redundant-bang-patterns

  if impl(ghc >= 9.4)
    ghc-options:
      -Werror=forall-identifier
      -Werror=misplaced-pragmas
      -Werror=redundant-strictness-flags
      -Werror=type-equality-out-of-scope
      -Werror=type-equality-requires-operators

  ghc-prof-options: -O2 -fprof-auto-top
  default-language: Haskell2010

library
  default-language: Haskell2010

  build-depends:
    base >= 4.9 && < 4.20,
    bv-sized >= 1.0.0,
    containers,
    crucible >= 0.1,
    lens,
    mtl,
    parameterized-utils >= 0.1.7,
    prettyprinter >= 1.7.0,
    megaparsec >= 7.0 && < 9.7,
    text,
    transformers,
    vector,
    what4

  hs-source-dirs: src

  exposed-modules:
    Lang.Crucible.Syntax.Atoms
    Lang.Crucible.Syntax.Concrete
    Lang.Crucible.Syntax.SExpr
    Lang.Crucible.Syntax.Overrides
    Lang.Crucible.Syntax.ExprParse
    Lang.Crucible.Syntax.Monad
    Lang.Crucible.Syntax.Prog

  ghc-options: -Wall -Werror=incomplete-patterns -Werror=missing-methods -Werror=overlapping-patterns
  ghc-prof-options: -O2 -fprof-auto-top

test-suite crucible-syntax-tests
  import: shared
  type: exitcode-stdio-1.0
  main-is: Tests.hs
  hs-source-dirs: test
  build-depends:
    base,
    containers,
    crucible,
    crucible-syntax,
    directory,
    filepath,
    megaparsec,
    parameterized-utils,
    tasty,
    tasty-golden,
    tasty-hunit,
    text,
    what4