packages feed

language-rust-0.2.0.27: language-rust.cabal

name:                language-rust
version:             0.2.0.27

synopsis:            Parsing and pretty printing of Rust code
description:         Language Rust is a library for the analysis of Rust code. It includes a
                     complete, well tested parser and pretty printer. 

homepage:            https://github.com/harpocrates/language-rust
license:             BSD3
license-file:        LICENSE
author:              Alec Theriault
maintainer:          alec.theriault@gmail.com
copyright:           (c) 2017-2018 Alec Theriault
stability:           provisional
bug-reports:         https://github.com/harpocrates/language-rust/issues
category:            Language
build-type:          Simple
extra-source-files:  ChangeLog.md README.md
cabal-version:       >=1.10

source-repository head
  type:              git
  location:          https://github.com/harpocrates/language-rust.git

flag useByteStrings
    description:     Use 'ByteString' instead of 'String' as 'InputStream' datatype
    default:         True

flag enableQuasiquotes
    description:     Provide the experimental 'Language.Rust.Quote' module
    default:         True

library
  hs-source-dirs:      src

  ghc-options:         -Wall

  if impl(ghc >= 8)
    ghc-options:
                       -Wincomplete-patterns
                       -Wincomplete-uni-patterns
                       -Wmissing-signatures

  build-tools:         alex >=3.1, happy >=1.19.8
  default-language:    Haskell2010

  exposed-modules:     Language.Rust.Syntax
                       Language.Rust.Parser
                       Language.Rust.Parser.ParseMonad
                       Language.Rust.Parser.Lexer
                       Language.Rust.Parser.Internal
                       Language.Rust.Pretty
                       Language.Rust.Pretty.Internal
                       Language.Rust.Data.Position
                       Language.Rust.Data.Ident
                       Language.Rust.Data.InputStream
  if flag(enableQuasiquotes)
    exposed-modules:   Language.Rust.Quote
 
  other-modules:       Language.Rust.Parser.Literals
                       Language.Rust.Parser.Reversed
                       Language.Rust.Pretty.Resolve
                       Language.Rust.Pretty.Literals
                       Language.Rust.Pretty.Util
                       Language.Rust.Syntax.AST
                       Language.Rust.Syntax.Token

  other-extensions:    FlexibleContexts
                     , FlexibleInstances
                     , OverloadedStrings
                     , OverloadedLists
                     , DeriveFunctor
                     , DeriveGeneric
                     , DeriveAnyClass
                     , DeriveDataTypeable
                     , TypeFamilies
                     , TypeOperators
                     , Rank2Types
                     , BangPatterns
                     , CPP

  build-depends:       base                 >=4.8  && <5.0
                     , prettyprinter        >=1.0  && <2.0
                     , transformers         >=0.4  && <0.6
                     , array                >=0.5  && <0.6
                     , deepseq              >=1.1  && <1.5
  if impl(ghc < 8)
    build-depends:     semigroups           >=0.18

  if flag(useByteStrings)
    cpp-options:       -DUSE_BYTESTRING
    build-depends:     utf8-string          >=1.0
                     , bytestring           >=0.10

  if flag(enableQuasiquotes)
    build-depends:     template-haskell     >=2.10


test-suite unit-tests
  hs-source-dirs:      test/unit-tests
  ghc-options:         -Wall
  main-is:             Main.hs
  other-modules:       LexerTest
                       ParserTest
                       PrettyTest
                       CompleteTest

  other-extensions:    FlexibleContexts
                     , OverloadedStrings
                     , OverloadedLists
                     , ScopedTypeVariables
                     , UnicodeSyntax

  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  build-depends:       HUnit                >=1.3.0.0
                     , test-framework       >=0.8.0
                     , test-framework-hunit >=0.3.0

                     , language-rust
                     , base
                     , prettyprinter

test-suite rustc-tests
  hs-source-dirs:      test/rustc-tests
  ghc-options:         -Wall
  main-is:             Main.hs
  other-modules:       Diff
                       DiffUtils

  other-extensions:    InstanceSigs 
                     , OverloadedStrings
                     , OverloadedLists
                     , MultiParamTypeClasses
                     , UnicodeSyntax

  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  
  build-depends:       process              >=1.3
                     , bytestring           >=0.10
                     , aeson                >=0.11.0.0
                     , directory            >=1.2.5.0
                     , filepath             >=1.4.0.0
                     , test-framework       >=0.8.0
                     , vector               >=0.10.0
                     , text                 >=1.2.0
                     , unordered-containers >=0.2.7
                     , time                 >=1.2.0.0

                     , language-rust
                     , base
                     , prettyprinter        >=1.1
  if impl(ghc < 8)
    build-depends:     semigroups           >=0.18

benchmark timing-benchmarks
  hs-source-dirs:      bench/timing-benchmarks
  ghc-options:         -Wall
  main-is:             Main.hs

  other-extensions:    OverloadedStrings

  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  build-depends:       process              >=1.3
                     , bytestring           >=0.10
                     , aeson                >=0.11.0.0
                     , directory            >=1.2.5.0
                     , filepath             >=1.4.0.0
                     , criterion            >=1.1.1.0
                     , statistics           >=0.14.0

                     , language-rust
                     , base

benchmark allocation-benchmarks
  hs-source-dirs:      bench/allocation-benchmarks
  ghc-options:         -Wall
  main-is:             Main.hs


  other-extensions:    OverloadedStrings

  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  build-depends:       process              >=1.3
                     , bytestring           >=0.10
                     , aeson                >=0.11.0.0
                     , directory            >=1.2.5.0
                     , filepath             >=1.4.0.0
                     , weigh                >=0.0.6

                     , language-rust
                     , base