packages feed

language-ninja 0.1.0 → 0.2.0

raw patch · 14 files changed

+281/−203 lines, 14 filesdep +semigroupsdep ~template-haskelldep ~transformersPVP ok

version bump matches the API change (PVP)

Dependencies added: semigroups

Dependency ranges changed: template-haskell, transformers

API changes (from Hackage documentation)

- Language.Ninja.AST.Build: instance Test.QuickCheck.Arbitrary.Arbitrary ann => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Build.Build ann)
- Language.Ninja.AST.Deps: instance Test.QuickCheck.Arbitrary.Arbitrary ann => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Deps.Deps ann)
- Language.Ninja.AST.Expr: instance Test.QuickCheck.Arbitrary.Arbitrary ann => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Expr.Expr ann)
- Language.Ninja.AST.Ninja: instance Test.QuickCheck.Arbitrary.Arbitrary ann => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Ninja.Ninja ann)
- Language.Ninja.AST.Rule: instance Test.QuickCheck.Arbitrary.Arbitrary ann => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Rule.Rule ann)
+ Language.Ninja.AST.Build: instance (Test.QuickCheck.Arbitrary.Arbitrary ann, Language.Ninja.AST.Build.BuildConstraint Test.QuickCheck.Arbitrary.Arbitrary ann) => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Build.Build ann)
+ Language.Ninja.AST.Deps: instance (Test.QuickCheck.Arbitrary.Arbitrary ann, Language.Ninja.AST.Deps.DepsConstraint Test.QuickCheck.Arbitrary.Arbitrary ann) => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Deps.Deps ann)
+ Language.Ninja.AST.Expr: instance (Test.QuickCheck.Arbitrary.Arbitrary ann, Language.Ninja.AST.Expr.ExprConstraint Test.QuickCheck.Arbitrary.Arbitrary ann) => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Expr.Expr ann)
+ Language.Ninja.AST.Ninja: instance (Test.QuickCheck.Arbitrary.Arbitrary ann, Language.Ninja.AST.Ninja.NinjaConstraint Test.QuickCheck.Arbitrary.Arbitrary ann) => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Ninja.Ninja ann)
+ Language.Ninja.AST.Rule: instance (Test.QuickCheck.Arbitrary.Arbitrary ann, Language.Ninja.AST.Rule.RuleConstraint Test.QuickCheck.Arbitrary.Arbitrary ann) => Test.QuickCheck.Arbitrary.Arbitrary (Language.Ninja.AST.Rule.Rule ann)

Files

CHANGELOG.md view
@@ -1,5 +1,10 @@ # CHANGELOG +## Version 0.2.0++- Removed dependency on `quickcheck-instances`.+- It now compiles under GHC 7.10.3!+ ## Version 0.1.0  This is the first release of `language-ninja`!
language-ninja.cabal view
@@ -1,7 +1,7 @@ --------------------------------------------------------------------------------  name:                     language-ninja-version:                  0.1.0+version:                  0.2.0 stability:                Experimental build-type:               Custom cabal-version:            >= 1.10@@ -21,7 +21,8 @@                           the "Language.Ninja" module. extra-source-files:       README.md                         , CHANGELOG.md-tested-with:              GHC == 8.0.1+tested-with:              GHC == 7.10.3+                        , GHC == 8.0.2                            -------------------------------------------------------------------------------- @@ -32,7 +33,7 @@  source-repository this     type:                 git-    tag:                  release-0.1.0+    tag:                  release-0.2.0     location:             https://github.com/awakesecurity/language-ninja.git  --------------------------------------------------------------------------------@@ -58,11 +59,11 @@                         , mtl                         >= 2.2   && < 2.3                         , lens                        >= 4.15  && < 4.16                         , QuickCheck                  >= 2.9   && < 2.10-                        , quickcheck-instances        >= 0.3   && < 0.4+                        , semigroups                  >= 0.18  && < 0.19                         , smallcheck                  >= 1.1   && < 1.2                         , system-filepath             >= 0.4   && < 0.5                         , text                        >= 1.2   && < 1.3-                        , transformers                >= 0.5   && < 0.6+                        , transformers                >= 0.4   && < 0.6                         , unordered-containers        >= 0.2   && < 0.3                         , versions                    >= 3.1.1 && < 3.2     exposed-modules:      Language.Ninja@@ -99,7 +100,8 @@                         , Language.Ninja.Misc.Path                         , Language.Ninja.Misc.Positive     default-language:     Haskell2010-    other-extensions:     ConstraintKinds+    other-extensions:     CPP+                        , ConstraintKinds                         , DeriveDataTypeable                         , DeriveFoldable                         , DeriveFunctor@@ -118,7 +120,8 @@                         , RecordWildCards                         , ScopedTypeVariables                         , UndecidableInstances-    ghc-options:          -Wcompat -Weverything+    if impl(ghc >= 8.0)+       ghc-options:       -Wcompat -Weverything                           -fno-warn-unsafe                           -fno-warn-safe                           -fno-warn-implicit-prelude@@ -126,6 +129,8 @@                           -fno-warn-missed-specialisations                           -fno-warn-all-missed-specialisations                           -g+    else+       ghc-options:       -Wall -g  -------------------------------------------------------------------------------- @@ -144,15 +149,13 @@                         , bytestring                  >= 0.10  && < 0.11                         , containers                  >= 0.5   && < 0.6                         , flow                        >= 1.0   && < 1.1-                        , ghc                         >= 7.4   && < 8.4-                        , haddock-api                 >= 2.17  && < 2.18-                        , haddock-library             >= 1.4   && < 1.5                         , hashable                    >= 1.2   && < 1.3                         , lens                        >= 4.15  && < 4.16                         , monad-mock                  >= 0.1   && < 0.2                         , mtl                         >= 2.2   && < 2.3                         , QuickCheck                  >= 2.9   && < 2.10                         , quickcheck-instances        >= 0.3   && < 0.4+                        , semigroups                  >= 0.18  && < 0.19                         , smallcheck                  >= 1.1   && < 1.2                         , system-filepath             >= 0.4   && < 0.5                         , tasty                       >= 0.11  && < 0.12@@ -162,12 +165,17 @@                         , tasty-quickcheck            >= 0.8   && < 0.9                         , tasty-smallcheck            >= 0.8   && < 0.9                         , text                        >= 1.2   && < 1.3-                        , transformers                >= 0.5   && < 0.6+                        , transformers                >= 0.4   && < 0.6                         , turtle                      >= 1.3   && < 1.4                         , unordered-containers        >= 0.2   && < 0.3                         , versions                    >= 3.1.1 && < 3.2+    if impl(ghc >= 8.0)+       build-depends:     ghc                         >= 7.4   && < 8.4+                        , haddock-api                 >= 2.17  && < 2.18+                        , haddock-library             >= 1.4   && < 1.5     default-language:     Haskell2010-    other-extensions:     FlexibleContexts+    other-extensions:     CPP+                        , FlexibleContexts                         , FlexibleInstances                         , GADTs                         , LambdaCase@@ -178,11 +186,11 @@                         , RecordWildCards                         , ScopedTypeVariables                         , StandaloneDeriving-                        , TypeApplications                         , TypeFamilies                         , UndecidableInstances                         , ViewPatterns-    ghc-options:          -Wcompat -Weverything+    if impl(ghc >= 8.0)+       ghc-options:       -Wcompat -Weverything                           -fno-warn-unsafe                           -fno-warn-safe                           -fno-warn-implicit-prelude@@ -190,17 +198,22 @@                           -fno-warn-missed-specialisations                           -fno-warn-all-missed-specialisations                           -g -threaded+    else+       ghc-options:       -Wall+                          -g -threaded  --------------------------------------------------------------------------------  test-suite doctests+    if impl(ghc < 8.0)+       buildable:         False     type:                 exitcode-stdio-1.0     hs-source-dirs:       tests     main-is:              DocTests.hs     build-depends:        base                        >= 4.8   && < 5.0                         , doctest                     >= 0.11  && < 0.12                         , QuickCheck                  >= 2.9   && < 2.10-                        , template-haskell            >= 2.11  && < 2.12+                        , template-haskell            >= 2.10  && < 2.12                         -- TODO: this shouldn't need to be here                         -- remove this once https://git.io/vQp2m is merged                         , cabal-doctest               >= 1.0.2 && < 1.1@@ -223,7 +236,7 @@                         -- , prettyprinter               >= 1.1   && < 1.2                         -- , prettyprinter-ansi-terminal >= 1.1   && < 1.2                         , text                        >= 1.2   && < 1.3-                        , transformers                >= 0.5   && < 0.6+                        , transformers                >= 0.4   && < 0.6     default-language:     Haskell2010     other-extensions:     DataKinds                         , DeriveGeneric@@ -233,7 +246,8 @@                         , OverloadedStrings                         , StandaloneDeriving                         , TypeOperators-    ghc-options:          -Wcompat -Weverything+    if impl(ghc >= 8.0)+       ghc-options:       -Wcompat -Weverything                           -fno-warn-unsafe                           -fno-warn-safe                           -fno-warn-implicit-prelude@@ -241,6 +255,9 @@                           -fno-warn-missed-specialisations                           -fno-warn-all-missed-specialisations                           -g -threaded+    else+       ghc-options:       -Wall+                          -g -threaded  -------------------------------------------------------------------------------- @@ -258,7 +275,7 @@                         -- , prettyprinter               >= 1.1   && < 1.2                         -- , prettyprinter-ansi-terminal >= 1.1   && < 1.2                         , text                        >= 1.2   && < 1.3-                        , transformers                >= 0.5   && < 0.6+                        , transformers                >= 0.4   && < 0.6     default-language:     Haskell2010     other-extensions:     DataKinds                         , DeriveGeneric@@ -268,7 +285,8 @@                         , OverloadedStrings                         , StandaloneDeriving                         , TypeOperators-    ghc-options:          -Wcompat -Weverything+    if impl(ghc >= 8.0)+       ghc-options:       -Wcompat -Weverything                           -fno-warn-unsafe                           -fno-warn-safe                           -fno-warn-implicit-prelude@@ -276,6 +294,9 @@                           -fno-warn-missed-specialisations                           -fno-warn-all-missed-specialisations                           -g -threaded+    else+       ghc-options:       -Wall+                          -g -threaded  -------------------------------------------------------------------------------- @@ -293,7 +314,7 @@                         -- , prettyprinter               >= 1.1   && < 1.2                         -- , prettyprinter-ansi-terminal >= 1.1   && < 1.2                         , text                        >= 1.2   && < 1.3-                        , transformers                >= 0.5   && < 0.6+                        , transformers                >= 0.4   && < 0.6     default-language:     Haskell2010     other-extensions:     DataKinds                         , DeriveGeneric@@ -303,13 +324,17 @@                         , OverloadedStrings                         , StandaloneDeriving                         , TypeOperators-    ghc-options:          -Wcompat -Weverything+    if impl(ghc >= 8.0)+       ghc-options:       -Wcompat -Weverything                           -fno-warn-unsafe                           -fno-warn-safe                           -fno-warn-implicit-prelude                           -fno-warn-unused-do-bind                           -fno-warn-missed-specialisations                           -fno-warn-all-missed-specialisations+                          -g -threaded+    else+       ghc-options:       -Wall                           -g -threaded  --------------------------------------------------------------------------------
library/Language/Ninja/AST/Build.hs view
@@ -48,30 +48,29 @@   , BuildConstraint   ) where -import qualified Control.Lens              as Lens+import qualified Control.Lens            as Lens -import           Flow                      ((.>), (|>))+import           Flow                    ((.>), (|>)) -import           Data.HashMap.Strict       (HashMap)-import           Data.Text                 (Text)+import           Data.HashMap.Strict     (HashMap)+import           Data.Text               (Text) -import           Control.DeepSeq           (NFData)-import           Data.Hashable             (Hashable)-import           GHC.Generics              (Generic)+import           Control.DeepSeq         (NFData)+import           Data.Hashable           (Hashable)+import           GHC.Generics            (Generic) -import qualified Test.QuickCheck           as QC-import           Test.QuickCheck.Instances ()+import qualified Test.QuickCheck         as QC -import qualified Test.SmallCheck.Series    as SC+import qualified Test.SmallCheck.Series  as SC -import           GHC.Exts                  (Constraint)+import           GHC.Exts                (Constraint) -import           Data.Aeson                ((.:), (.=))-import qualified Data.Aeson                as Aeson+import           Data.Aeson              ((.:), (.=))+import qualified Data.Aeson              as Aeson -import qualified Language.Ninja.AST.Deps   as AST-import qualified Language.Ninja.AST.Env    as AST-import qualified Language.Ninja.Misc       as Misc+import qualified Language.Ninja.AST.Deps as AST+import qualified Language.Ninja.AST.Env  as AST+import qualified Language.Ninja.Misc     as Misc  -------------------------------------------------------------------------------- @@ -174,8 +173,9 @@  -- | Reasonable 'QC.Arbitrary' instance for 'Build'. -----   @since 0.1.0-instance (QC.Arbitrary ann) => QC.Arbitrary (Build ann) where+--   @since 0.2.0+instance ( QC.Arbitrary ann, BuildConstraint QC.Arbitrary ann+         ) => QC.Arbitrary (Build ann) where   arbitrary = MkBuild               <$> QC.arbitrary               <*> QC.arbitrary
library/Language/Ninja/AST/Deps.hs view
@@ -49,28 +49,27 @@   , DepsConstraint   ) where -import qualified Control.Lens              as Lens+import qualified Control.Lens           as Lens -import           Flow                      ((|>))+import           Flow                   ((|>)) -import           Data.HashSet              (HashSet)-import           Data.Text                 (Text)+import           Data.HashSet           (HashSet)+import           Data.Text              (Text) -import           Control.DeepSeq           (NFData)-import           Data.Hashable             (Hashable)-import           GHC.Generics              (Generic)+import           Control.DeepSeq        (NFData)+import           Data.Hashable          (Hashable)+import           GHC.Generics           (Generic) -import qualified Test.QuickCheck           as QC-import           Test.QuickCheck.Instances ()+import qualified Test.QuickCheck        as QC -import qualified Test.SmallCheck.Series    as SC+import qualified Test.SmallCheck.Series as SC -import           GHC.Exts                  (Constraint)+import           GHC.Exts               (Constraint) -import           Data.Aeson                ((.:), (.=))-import qualified Data.Aeson                as Aeson+import           Data.Aeson             ((.:), (.=))+import qualified Data.Aeson             as Aeson -import qualified Language.Ninja.Misc       as Misc+import qualified Language.Ninja.Misc    as Misc  -------------------------------------------------------------------------------- @@ -153,8 +152,9 @@  -- | Reasonable 'QC.Arbitrary' instance for 'Deps'. -----   @since 0.1.0-instance (QC.Arbitrary ann) => QC.Arbitrary (Deps ann) where+--   @since 0.2.0+instance ( QC.Arbitrary ann, DepsConstraint QC.Arbitrary ann+         ) => QC.Arbitrary (Deps ann) where   arbitrary = MkDeps               <$> QC.arbitrary               <*> QC.arbitrary
library/Language/Ninja/AST/Env.hs view
@@ -62,33 +62,32 @@   , Key, Maps   ) where -import           Control.Applicative       ((<|>))-import           Control.Monad             ((>=>))+import           Control.Applicative    ((<|>))+import           Control.Monad          ((>=>)) -import qualified Control.Lens              as Lens+import qualified Control.Lens           as Lens -import           Data.Monoid               (Endo (Endo, appEndo))+import           Data.Monoid            (Endo (Endo, appEndo)) -import           Data.List.NonEmpty        (NonEmpty ((:|)))-import qualified Data.List.NonEmpty        as NE+import           Data.List.NonEmpty     (NonEmpty ((:|)))+import qualified Data.List.NonEmpty     as NE -import           Data.HashMap.Strict       (HashMap)-import qualified Data.HashMap.Strict       as HM+import           Data.HashMap.Strict    (HashMap)+import qualified Data.HashMap.Strict    as HM -import           Control.DeepSeq           (NFData)-import           Data.Hashable             (Hashable)-import           GHC.Generics              (Generic)+import           Control.DeepSeq        (NFData)+import           Data.Hashable          (Hashable)+import           GHC.Generics           (Generic) -import qualified Test.QuickCheck           as QC-import           Test.QuickCheck.Instances ()+import qualified Test.QuickCheck        as QC -import qualified Test.SmallCheck.Series    as SC+import qualified Test.SmallCheck.Series as SC -import           GHC.Exts                  (Constraint)+import           GHC.Exts               (Constraint) -import qualified Data.Aeson                as Aeson+import qualified Data.Aeson             as Aeson -import           Flow                      ((.>), (|>))+import           Flow                   ((.>), (|>))  -------------------------------------------------------------------------------- 
library/Language/Ninja/AST/Expr.hs view
@@ -53,36 +53,35 @@   , ExprConstraint   ) where -import           Control.Arrow             (second)+import           Control.Arrow          (second) -import qualified Control.Lens              as Lens+import qualified Control.Lens           as Lens -import           Data.Foldable             (asum)-import           Data.Maybe                (fromMaybe)-import           Data.Monoid               (Endo (Endo, appEndo), (<>))+import           Data.Foldable          (asum)+import           Data.Maybe             (fromMaybe)+import           Data.Monoid            (Endo (Endo, appEndo), (<>)) -import           Flow                      ((.>), (|>))+import           Flow                   ((.>), (|>)) -import           Data.Text                 (Text)-import qualified Data.Text                 as Text+import           Data.Text              (Text)+import qualified Data.Text              as Text -import           Control.DeepSeq           (NFData)-import           Data.Data                 (Data)-import           Data.Hashable             (Hashable)-import           GHC.Generics              (Generic)+import           Control.DeepSeq        (NFData)+import           Data.Data              (Data)+import           Data.Hashable          (Hashable)+import           GHC.Generics           (Generic) -import qualified Test.QuickCheck           as QC-import           Test.QuickCheck.Instances ()+import qualified Test.QuickCheck        as QC -import qualified Test.SmallCheck.Series    as SC+import qualified Test.SmallCheck.Series as SC -import           GHC.Exts                  (Constraint)+import           GHC.Exts               (Constraint) -import           Data.Aeson                ((.:), (.=))-import qualified Data.Aeson                as Aeson+import           Data.Aeson             ((.:), (.=))+import qualified Data.Aeson             as Aeson -import qualified Language.Ninja.AST.Env    as AST-import qualified Language.Ninja.Misc       as Misc+import qualified Language.Ninja.AST.Env as AST+import qualified Language.Ninja.Misc    as Misc  -------------------------------------------------------------------------------- @@ -242,8 +241,10 @@  -- | Reasonable 'QC.Arbitrary' instance for 'Expr'. -----   @since 0.1.0-instance forall ann. (QC.Arbitrary ann) => QC.Arbitrary (Expr ann) where+--   @since 0.2.0+instance forall ann.+         ( QC.Arbitrary ann, ExprConstraint QC.Arbitrary ann+         ) => QC.Arbitrary (Expr ann) where   arbitrary = QC.sized go     where       go :: Int -> QC.Gen (Expr ann)
library/Language/Ninja/AST/Ninja.hs view
@@ -55,37 +55,36 @@   , Outputs, Output   ) where -import           Control.Monad             ((>=>))+import           Control.Monad            ((>=>)) -import qualified Control.Lens              as Lens+import qualified Control.Lens             as Lens -import           Flow                      ((.>), (|>))+import           Flow                     ((.>), (|>)) -import           Data.HashMap.Strict       (HashMap)-import qualified Data.HashMap.Strict       as HM+import           Data.HashMap.Strict      (HashMap)+import qualified Data.HashMap.Strict      as HM -import           Data.HashSet              (HashSet)+import           Data.HashSet             (HashSet) -import           Data.Text                 (Text)+import           Data.Text                (Text) -import           Control.DeepSeq           (NFData)-import           Data.Hashable             (Hashable)-import           GHC.Generics              (Generic)+import           Control.DeepSeq          (NFData)+import           Data.Hashable            (Hashable)+import           GHC.Generics             (Generic) -import qualified Test.QuickCheck           as QC-import           Test.QuickCheck.Instances ()+import qualified Test.QuickCheck          as QC -import qualified Test.SmallCheck.Series    as SC+import qualified Test.SmallCheck.Series   as SC -import           GHC.Exts                  (Constraint)+import           GHC.Exts                 (Constraint) -import           Data.Aeson                ((.:), (.=))-import qualified Data.Aeson                as Aeson-import qualified Data.Aeson.Types          as Aeson+import           Data.Aeson               ((.:), (.=))+import qualified Data.Aeson               as Aeson+import qualified Data.Aeson.Types         as Aeson -import qualified Language.Ninja.AST.Build  as AST-import qualified Language.Ninja.AST.Rule   as AST-import qualified Language.Ninja.Misc       as Misc+import qualified Language.Ninja.AST.Build as AST+import qualified Language.Ninja.AST.Rule  as AST+import qualified Language.Ninja.Misc      as Misc  -------------------------------------------------------------------------------- @@ -247,8 +246,9 @@  -- | Reasonable 'QC.Arbitrary' instance for 'Ninja'. -----   @since 0.1.0-instance (QC.Arbitrary ann) => QC.Arbitrary (Ninja ann) where+--   @since 0.2.0+instance ( QC.Arbitrary ann, NinjaConstraint QC.Arbitrary ann+         ) => QC.Arbitrary (Ninja ann) where   arbitrary = MkNinja               <$> QC.arbitrary               <*> QC.arbitrary
library/Language/Ninja/AST/Rule.hs view
@@ -47,31 +47,30 @@   , RuleConstraint   ) where -import qualified Control.Lens              as Lens+import qualified Control.Lens            as Lens -import           Flow                      ((|>))+import           Flow                    ((|>)) -import           Data.HashMap.Strict       (HashMap)-import qualified Data.HashMap.Strict       as HM+import           Data.HashMap.Strict     (HashMap)+import qualified Data.HashMap.Strict     as HM -import           Data.Text                 (Text)+import           Data.Text               (Text) -import           Control.DeepSeq           (NFData)-import           Data.Hashable             (Hashable)-import           GHC.Generics              (Generic)+import           Control.DeepSeq         (NFData)+import           Data.Hashable           (Hashable)+import           GHC.Generics            (Generic) -import qualified Test.QuickCheck           as QC-import           Test.QuickCheck.Instances ()+import qualified Test.QuickCheck         as QC -import qualified Test.SmallCheck.Series    as SC+import qualified Test.SmallCheck.Series  as SC -import           GHC.Exts                  (Constraint)+import           GHC.Exts                (Constraint) -import           Data.Aeson                ((.:), (.=))-import qualified Data.Aeson                as Aeson+import           Data.Aeson              ((.:), (.=))+import qualified Data.Aeson              as Aeson -import qualified Language.Ninja.AST.Expr   as AST-import qualified Language.Ninja.Misc       as Misc+import qualified Language.Ninja.AST.Expr as AST+import qualified Language.Ninja.Misc     as Misc  -------------------------------------------------------------------------------- @@ -133,8 +132,9 @@  -- | Reasonable 'QC.Arbitrary' instance for 'Rule'. -----   @since 0.1.0-instance (QC.Arbitrary ann) => QC.Arbitrary (Rule ann) where+--   @since 0.2.0+instance ( QC.Arbitrary ann, RuleConstraint QC.Arbitrary ann+         ) => QC.Arbitrary (Rule ann) where   arbitrary = MkRule <$> QC.arbitrary <*> QC.arbitrary  -- | Default 'Hashable' instance via 'Generic'.
library/Language/Ninja/Lexer.hs view
@@ -37,6 +37,7 @@  {-# OPTIONS_GHC -fno-warn-unused-do-bind #-} +{-# LANGUAGE CPP                   #-} {-# LANGUAGE ConstraintKinds       #-} {-# LANGUAGE FlexibleContexts      #-} {-# LANGUAGE MultiParamTypeClasses #-}@@ -103,7 +104,9 @@  import           Data.Char                  (isSpace) import           Data.Foldable              (asum)+#if __GLASGOW_HASKELL__ >= 800 import           Data.Functor               ((<$))+#endif import           Data.Maybe                 (catMaybes, fromMaybe)  import           Flow                       ((.>), (|>))
library/Language/Ninja/Parser.hs view
@@ -35,6 +35,7 @@ --     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE --     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +{-# LANGUAGE CPP                   #-} {-# LANGUAGE ConstraintKinds       #-} {-# LANGUAGE FlexibleContexts      #-} {-# LANGUAGE FlexibleInstances     #-}@@ -83,7 +84,9 @@  import qualified Control.Lens               as Lens +#if __GLASGOW_HASKELL__ >= 800 import           Data.Maybe                 (Maybe (Just, Nothing))+#endif import           Data.Monoid                (Endo (Endo, appEndo), (<>))  import qualified Data.ByteString.Char8      as BSC8
library/Language/Ninja/Tutorial.hs view
@@ -17,7 +17,7 @@ --     See the License for the specific language governing permissions and --     limitations under the License. -{-# OPTIONS_GHC -Wno-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}  -- | --   Module      : Language.Ninja.Tutorial@@ -369,7 +369,7 @@ -- The command-line interface for @ninja-lex@ looks like this: -- -- > $ ninja-lex --help--- > ninja-lex version 0.1.0+-- > ninja-lex version 0.2.0 -- > -- > Usage: ninja-lex (process | pretty) -- >@@ -404,7 +404,7 @@ -- The command-line interface for @ninja-parse@ looks like this: -- -- > $ ninja-parse --help--- > ninja-parse version 0.1.0+-- > ninja-parse version 0.2.0 -- > -- > Usage: ninja-parse (process | pretty) -- >@@ -439,7 +439,7 @@ -- The command-line interface for @ninja-compile@ looks like this: -- -- > $ ninja-compile --help--- > ninja-compile version 0.1.0+-- > ninja-compile version 0.2.0 -- > -- > Usage: ninja-compile [--input FILEPATH] [--output FILEPATH] [--machine-readable] -- >
tests/Tests.hs view
@@ -23,7 +23,6 @@ {-# LANGUAGE OverloadedStrings     #-} {-# LANGUAGE RankNTypes            #-} {-# LANGUAGE ScopedTypeVariables   #-}-{-# LANGUAGE TypeApplications      #-} {-# LANGUAGE TypeFamilies          #-} {-# LANGUAGE UndecidableInstances  #-} @@ -42,6 +41,8 @@  import qualified Data.Typeable              as Ty +import           Data.HashMap.Strict        (HashMap)+import           Data.HashSet               (HashSet) import           Data.Text                  (Text)  import           Control.Exception          (displayException)@@ -120,25 +121,28 @@             ]  aesonSC' :: (Eq x, Show x)-         => SC.Series IO x+         => Ty.Proxy x+         -> SC.Series IO x          -> (x -> Aeson.Value)          -> (Aeson.Value -> Aeson.Parser x)          -> TestTree-aesonSC' s toJ fromJ+aesonSC' _ s toJ fromJ   = Test.SC.testProperty "parseJSON . toJSON ≡ₛ pure"     (Test.SC.over s (\x -> Aeson.parseEither fromJ (toJ x) == Right x))  aesonSC :: forall x.            ( Eq x, Show x, SC.Serial IO x, Aeson.ToJSON x, Aeson.FromJSON x            ) => Ty.Proxy x -> TestTree-aesonSC _ = aesonSC' @x SC.series Aeson.toJSON Aeson.parseJSON+aesonSC _ = aesonSC' (Ty.Proxy :: Ty.Proxy x)+            SC.series Aeson.toJSON Aeson.parseJSON  aesonQC' :: (Eq x, Show x)-         => (QC.Gen x, x -> [x])+         => Ty.Proxy x+         -> (QC.Gen x, x -> [x])          -> (x -> Aeson.Value)          -> (Aeson.Value -> Aeson.Parser x)          -> TestTree-aesonQC' (gen, shrink) toJ fromJ+aesonQC' _ (gen, shrink) toJ fromJ   = Test.QC.testProperty "parseJSON . toJSON ≡ₐ pure"     (Test.QC.forAllShrink gen shrink      (\x -> Aeson.parseEither fromJ (toJ x) === Right x))@@ -146,7 +150,8 @@ aesonQC :: forall x.            ( Eq x, Show x, QC.Arbitrary x, Aeson.ToJSON x, Aeson.FromJSON x            ) => Ty.Proxy x -> TestTree-aesonQC _ = aesonQC' @x (QC.arbitrary, QC.shrink) Aeson.toJSON Aeson.parseJSON+aesonQC _ = aesonQC' (Ty.Proxy :: Ty.Proxy x)+            (QC.arbitrary, QC.shrink) Aeson.toJSON Aeson.parseJSON  parseTestNinja :: String -> IO (AST.Ninja ()) parseTestNinja name = do@@ -216,85 +221,85 @@ aesonTests   = Test.testGroup "aeson"     [ testModule "Language.Ninja.Lexer"-      [ testAesonSC 2   (Ty.Proxy @(Lexer.Lexeme Bool))-      , testAesonSC 4   (Ty.Proxy @(Lexer.LName  Bool))-      , testAesonSC 4   (Ty.Proxy @(Lexer.LFile  Bool))-      , testAesonSC 4   (Ty.Proxy @(Lexer.LBind  Bool))-      , testAesonSC 2   (Ty.Proxy @(Lexer.LBuild Bool))+      [ testAesonSC 2   (Ty.Proxy :: Ty.Proxy (Lexer.Lexeme Bool))+      , testAesonSC 4   (Ty.Proxy :: Ty.Proxy (Lexer.LName  Bool))+      , testAesonSC 4   (Ty.Proxy :: Ty.Proxy (Lexer.LFile  Bool))+      , testAesonSC 4   (Ty.Proxy :: Ty.Proxy (Lexer.LBind  Bool))+      , testAesonSC 2   (Ty.Proxy :: Ty.Proxy (Lexer.LBuild Bool))       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.IR.Build"-      [ testAesonSC 2   (Ty.Proxy @IR.Build)+      [ testAesonSC 2   (Ty.Proxy :: Ty.Proxy IR.Build)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.IR.Meta"-      [ testAesonSC def (Ty.Proxy @IR.Meta)+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy IR.Meta)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.IR.Ninja"-      [ testAesonSC 2   (Ty.Proxy @IR.Ninja)+      [ testAesonSC 2   (Ty.Proxy :: Ty.Proxy IR.Ninja)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.IR.Pool"-      [ testAesonSC def (Ty.Proxy @IR.Pool)-      , testAesonSC def (Ty.Proxy @IR.PoolName)-      , testAesonSC def (Ty.Proxy @IR.PoolDepth)+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy IR.Pool)+      , testAesonSC def (Ty.Proxy :: Ty.Proxy IR.PoolName)+      , testAesonSC def (Ty.Proxy :: Ty.Proxy IR.PoolDepth)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.IR.Rule"-      [ testAesonSC 1   (Ty.Proxy @IR.Rule)-      , testAesonSC def (Ty.Proxy @IR.SpecialDeps)-      , testAesonSC def (Ty.Proxy @IR.ResponseFile)+      [ testAesonSC 1   (Ty.Proxy :: Ty.Proxy IR.Rule)+      , testAesonSC def (Ty.Proxy :: Ty.Proxy IR.SpecialDeps)+      , testAesonSC def (Ty.Proxy :: Ty.Proxy IR.ResponseFile)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.IR.Target"-      [ testAesonSC def (Ty.Proxy @IR.Target)-      , testAesonSC def (Ty.Proxy @IR.Output)-      , testAesonSC def (Ty.Proxy @IR.Dependency)-      , testAesonSC def (Ty.Proxy @IR.DependencyType)+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy IR.Target)+      , testAesonSC def (Ty.Proxy :: Ty.Proxy IR.Output)+      , testAesonSC def (Ty.Proxy :: Ty.Proxy IR.Dependency)+      , testAesonSC def (Ty.Proxy :: Ty.Proxy IR.DependencyType)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.AST.Env"-      [ testAesonSC def (Ty.Proxy @(AST.Env Text Text))-      , testAesonQC     (Ty.Proxy @(AST.Env Text Text))+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy (AST.Env Text Text))+      , testAesonQC     (Ty.Proxy :: Ty.Proxy (AST.Env Text Text))       ]     , testModule "Language.Ninja.AST.Expr"-      [ testAesonSC def (Ty.Proxy @(AST.Expr Bool))-      , testAesonQC     (Ty.Proxy @(AST.Expr Bool))+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy (AST.Expr Bool))+      , testAesonQC     (Ty.Proxy :: Ty.Proxy (AST.Expr Bool))       ]     , testModule "Language.Ninja.AST.Rule"-      [ testAesonSC def (Ty.Proxy @(AST.Rule Bool))-      , testAesonQC     (Ty.Proxy @(AST.Rule Bool))+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy (AST.Rule Bool))+      , testAesonQC     (Ty.Proxy :: Ty.Proxy (AST.Rule Bool))       ]     , testModule "Language.Ninja.AST.Ninja"       [ -- TODO: combinatorial explosion-        testAesonSC 0   (Ty.Proxy @(AST.Ninja Bool))-      -- , testAesonQC     (Ty.Proxy @(AST.Ninja Bool))+        testAesonSC 0   (Ty.Proxy :: Ty.Proxy (AST.Ninja Bool))+      -- , testAesonQC     (Ty.Proxy :: Ty.Proxy (AST.Ninja Bool))       ]     , testModule "Language.Ninja.AST.Build"       [ -- TODO: combinatorial explosion-        testAesonSC 1   (Ty.Proxy @(AST.Build Bool))-      -- , testAesonQC     (Ty.Proxy @(AST.Build Bool))+        testAesonSC 1   (Ty.Proxy :: Ty.Proxy (AST.Build Bool))+      -- , testAesonQC     (Ty.Proxy :: Ty.Proxy (AST.Build Bool))       ]     , testModule "Language.Ninja.AST.Deps"-      [ testAesonSC def (Ty.Proxy @(AST.Deps Bool))-      , testAesonQC     (Ty.Proxy @(AST.Deps Bool))+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy (AST.Deps Bool))+      , testAesonQC     (Ty.Proxy :: Ty.Proxy (AST.Deps Bool))       ]     , testModule "Language.Ninja.Misc.Command"-      [ testAesonSC def (Ty.Proxy @Misc.Command)+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy Misc.Command)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.Misc.Path"-      [ testAesonSC def (Ty.Proxy @Misc.Path)+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy Misc.Path)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.Misc.Located"-      [ testAesonSC def (Ty.Proxy @(Misc.Located Bool))-      , testAesonSC def (Ty.Proxy @Misc.Position)+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy (Misc.Located Bool))+      , testAesonSC def (Ty.Proxy :: Ty.Proxy Misc.Position)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     , testModule "Language.Ninja.Misc.IText"-      [ testAesonSC def (Ty.Proxy @Misc.IText)+      [ testAesonSC def (Ty.Proxy :: Ty.Proxy Misc.IText)       -- TODO: add Arbitrary instances so we can testAesonQC       ]     ]@@ -418,39 +423,56 @@       ]     , testModule "Language.Ninja.AST.Expr"       [ testType "Expr"-        [ testPrism 4 "_Exprs" (AST._Exprs @Bool)-        , testPrism 4 "_Lit"   (AST._Lit   @Bool)-        , testPrism 4 "_Var"   (AST._Var   @Bool)+        [ testPrism 4 "_Exprs"+          (AST._Exprs :: Lens.Prism' (AST.Expr Bool) (Bool, [AST.Expr Bool]))+        , testPrism 4 "_Lit"+          (AST._Lit   :: Lens.Prism' (AST.Expr Bool) (Bool, Text))+        , testPrism 4 "_Var"+          (AST._Var   :: Lens.Prism' (AST.Expr Bool) (Bool, Text))         ]       ]     , testModule "Language.Ninja.AST.Rule"       [ testType "Rule"-        [ testLens 4 "ruleBind" (AST.ruleBind @Bool)+        [ testLens 4 "ruleBind"+          (AST.ruleBind :: Lens.Lens' (AST.Rule Bool) (HashMap Text (AST.Expr Bool)))         ]       ]     , testModule "Language.Ninja.AST.Ninja"       [ testType "Ninja" [] -- TODO: combinatorial explosion-        -- [ testLens 1 "ninjaRules"     (AST.ninjaRules     @Bool)-        -- , testLens 1 "ninjaSingles"   (AST.ninjaSingles   @Bool)-        -- , testLens 1 "ninjaMultiples" (AST.ninjaMultiples @Bool)-        -- , testLens 1 "ninjaPhonys"    (AST.ninjaPhonys    @Bool)-        -- , testLens 1 "ninjaDefaults"  (AST.ninjaDefaults  @Bool)-        -- , testLens 1 "ninjaSpecials"  (AST.ninjaSpecials  @Bool)+        -- [ testLens 1 "ninjaRules"+        --   (AST.ninjaRules     :: Lens.Lens' (AST.Ninja Bool) (HashMap Text (AST.Rule Bool)))+        -- , testLens 1 "ninjaSingles"+        --   (AST.ninjaSingles   :: Lens.Lens' (AST.Ninja Bool) (HashMap Text (AST.Build Bool)))+        -- , testLens 1 "ninjaMultiples"+        --   (AST.ninjaMultiples :: Lens.Lens' (AST.Ninja Bool) (HashMap (HashSet Text) (AST.Build Bool)))+        -- , testLens 1 "ninjaPhonys"+        --   (AST.ninjaPhonys    :: Lens.Lens' (AST.Ninja Bool) (HashMap Text (HashSet Text)))+        -- , testLens 1 "ninjaDefaults"+        --   (AST.ninjaDefaults  :: Lens.Lens' (AST.Ninja Bool) (HashSet Text))+        -- , testLens 1 "ninjaSpecials"+        --   (AST.ninjaSpecials  :: Lens.Lens' (AST.Ninja Bool) (HashMap Text Text))         -- ]       ]     , testModule "Language.Ninja.AST.Build"       [ testType "Build" [] -- TODO: combinatorial explosion-        -- [ testLens 1 "buildRule" (AST.buildRule @Bool)-        -- , testLens 1 "buildEnv"  (AST.buildEnv  @Bool)-        -- , testLens 1 "buildDeps" (AST.buildDeps @Bool)-        -- , testLens 1 "buildBind" (AST.buildBind @Bool)+        -- [ testLens 1 "buildRule"+        --   (AST.buildRule :: Lens.Lens' (AST.Build Bool) Text)+        -- , testLens 1 "buildEnv"+        --   (AST.buildEnv  :: Lens.Lens' (AST.Build Bool) (AST.Env Text Text))+        -- , testLens 1 "buildDeps"+        --   (AST.buildDeps :: Lens.Lens' (AST.Build Bool) (AST.Deps Bool))+        -- , testLens 1 "buildBind"+        --   (AST.buildBind :: Lens.Lens' (AST.Build Bool) (HashMap Text Text))         -- ]       ]     , testModule "Language.Ninja.AST.Deps"       [ testType "Deps"-        [ testLens def "depsNormal"    (AST.depsNormal    @Bool)-        , testLens def "depsImplicit"  (AST.depsImplicit  @Bool)-        , testLens def "depsOrderOnly" (AST.depsOrderOnly @Bool)+        [ testLens def "depsNormal"+          (AST.depsNormal    :: Lens.Lens' (AST.Deps Bool) (HashSet Text))+        , testLens def "depsImplicit"+          (AST.depsImplicit  :: Lens.Lens' (AST.Deps Bool) (HashSet Text))+        , testLens def "depsOrderOnly"+          (AST.depsOrderOnly :: Lens.Lens' (AST.Deps Bool) (HashSet Text))         ]       ]     , testModule "Language.Ninja.Misc.Command"
tests/Tests/Lint.hs view
@@ -17,6 +17,7 @@ --     See the License for the specific language governing permissions and --     limitations under the License. +{-# LANGUAGE CPP                   #-} {-# LANGUAGE FlexibleContexts      #-} {-# LANGUAGE FlexibleInstances     #-} {-# LANGUAGE GADTs                 #-}@@ -45,6 +46,7 @@   , ComponentName, SinceException   ) where +#if __GLASGOW_HASKELL__ >= 800 import           Control.Applicative         (empty) import           Control.Arrow               ((&&&)) import           Control.Monad               (forM)@@ -58,10 +60,6 @@ import qualified GHC import qualified Outputable                  as GHC -import qualified Data.Map.Lazy               as LMap--import qualified Data.Text                   as Text- import qualified Documentation.Haddock       as H import qualified Documentation.Haddock.Types as H @@ -69,20 +67,30 @@ -- import qualified Documentation.Haddock.Parser       as H.Parser -- import qualified Documentation.Haddock.Parser.Monad as H.Parser -import qualified Test.Tasty                  as Test+import qualified Data.Map.Lazy               as LMap++import qualified Data.Text                   as Text+ import qualified Test.Tasty.HUnit            as Test  import qualified Turtle+#endif +import qualified Test.Tasty                  as Test+ --------------------------------------------------------------------------------  -- | Generate and lint the Haddock documentation for this project. lintHaddock :: LintHaddockOptions -> IO Test.TestTree+#if __GLASGOW_HASKELL__ < 800+lintHaddock _ = pure (Test.testGroup "Haddock linting [skipped]" [])+#else lintHaddock options = do   _ <- H.withGhc [] GHC.getSessionDynFlags   buildHaddock   mapM (lintInterfaceFile options) (componentNames options)     |> fmap (Test.testGroup "Haddock linting")+#endif  -------------------------------------------------------------------------------- @@ -145,6 +153,8 @@  -------------------------------------------------------------------------------- +#if __GLASGOW_HASKELL__ >= 800+ lintInterfaceFile :: LintHaddockOptions -> ComponentName -> IO Test.TestTree lintInterfaceFile options cn   = readInterface ifaceFP@@ -202,8 +212,12 @@     docmap  = H.instDocMap iface     toIdent = MkIdent (H.instMod iface) +#endif+ -------------------------------------------------------------------------------- +#if __GLASGOW_HASKELL__ >= 800+ data Ident   = MkIdent     { _identModule :: !GHC.Module@@ -226,8 +240,12 @@ instance Show Ident where   show = printIdent +#endif+ -------------------------------------------------------------------------------- +#if __GLASGOW_HASKELL__ >= 800+ class HasSince t where   hasSince :: t -> Bool @@ -236,5 +254,7 @@  instance HasSince (H.Documentation name) where   hasSince = H.documentationDoc .> maybe False hasSince++#endif  --------------------------------------------------------------------------------
tests/Tests/Orphans.hs view
@@ -17,7 +17,7 @@ --     See the License for the specific language governing permissions and --     limitations under the License. -{-# OPTIONS_GHC -Wno-orphans #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}  {-# LANGUAGE FlexibleContexts      #-} {-# LANGUAGE FlexibleInstances     #-}