packages feed

infernu-0.0.0.0: infernu.cabal

name:                infernu
version:             0.0.0.0
synopsis:            Type inference and checker for JavaScript (experimental)
description:         This version is highly experimental and may set your computer on fire (also, a lot of JS is not supported yet, so it may not be very useful.)
                     .
                     Infernu is a type checker for JavaScript. Since JavaScript is dynamically and weakly typed, it makes no sense to talk about "type errors" in arbitrary JavaScript code.
                     .
                     Consequently Infernu makes assumptions about the code and expects it to follow certain rules that
                     are not required by plain JavaScript (for example, implicit coercions such as `3 + 'a'` are not
                     allowed.)
                     .
                     Infernu's type system is designed for writing dynamic-looking code in a safe statically type-checked
                     environment. Type annotations are not required (though they would be nice to support, for various
                     reasons). Instead, Infernu *infers* the types of expressions by examining the code. If the inferred
                     types contradict each other, Infernu reports the contradiction as an error.
                     .
                     Infernu places restrictions on JS programs that are otherwise valid. In other words, Infernu is a
                     **subset of JavaScript**. Infernu tries to strike a balance between type system complexity and
                     dynamic-style coding flexibility.
                     .
                     See the .md files included in the package for more information.
                     
license:             GPL-2
homepage:            https://github.com/sinelaw/infernu
bug-reports:         https://github.com/sinelaw/infernu/issues
license-file:        LICENSE
author:              Noam Lewis
maintainer:          jones.noamle@gmail.com
copyright:           Noam Lewis, 2014-2015
-- category:
build-type:          Simple
extra-source-files:  README.md
cabal-version:       >=1.10
stability:           experimental

source-repository head
  type: git
  location: git@github.com:sinelaw/infernu.git

                     
flag quickcheck
  default: False
  manual: True

flag trace
  default: False
  manual: True

flag debug
  default: False
  manual: True

library
  hs-source-dirs:      src
  exposed-modules:   Infernu.Builtins.Array
                     , Infernu.Builtins.Operators
                     , Infernu.Builtins.Regex
                     , Infernu.Builtins.String
                     , Infernu.Builtins.TypeClasses
                     , Infernu.Decycle
                     , Infernu.Fix
                     , Infernu.Infer
                     , Infernu.InferState
                     , Infernu.Lib
                     , Infernu.Log
                     , Infernu.Options
                     , Infernu.Parse
                     , Infernu.Pretty
                     , Infernu.Types
                     , Infernu.Unify
                     , Infernu.Util
  -- TODO: use only mtl (not transformers)
  build-depends:       base >= 4.8 && < 5, mtl, containers, transformers, either, language-ecmascript, digits, parsec, fgl, optparse-applicative
  default-language:    Haskell2010
  ghc-options: -Wall -O2 -rtsopts -threaded
  if flag(debug)
    ghc-options: -g
  if flag(trace)
    cpp-options: -DTRACE
  if flag(quickcheck)
    cpp-options: -DQUICKCHECK
    build-depends: QuickCheck, derive
    default-extensions: TemplateHaskell, DeriveGeneric, FlexibleInstances

executable infernu
  main-is: Main.hs
  build-depends:       base, parsec, infernu, optparse-applicative
  default-language:    Haskell2010
  ghc-options: -Wall -O2 -rtsopts -threaded
  if flag(debug)
    ghc-options: -g
  if flag(trace)
    cpp-options: -DTRACE
  if flag(quickcheck)
    cpp-options: -DQUICKCHECK
    build-depends: QuickCheck, derive
    default-extensions: TemplateHaskell, DeriveGeneric

executable infernu-demo
  main-is: Demo.hs
  hs-source-dirs: test
  build-depends:       base, infernu
  default-language:    Haskell2010
  ghc-options: -Wall  -O2 -main-is Demo
  if flag(trace)
    cpp-options: -DTRACE
  if flag(quickcheck)
    cpp-options: -DQUICKCHECK
    build-depends: QuickCheck, derive
    default-extensions: TemplateHaskell, DeriveGeneric

executable test
  if flag(quickcheck)
    cpp-options: -DQUICKCHECK
    build-depends: QuickCheck, derive
    default-extensions: TemplateHaskell, DeriveGeneric
  else
    buildable: False
  main-is: Test.hs
  hs-source-dirs: test
  build-depends:       base, infernu
  default-language:    Haskell2010
  ghc-options: -Wall  -O2 -main-is Test
  if flag(trace)
    cpp-options: -DTRACE