language-ats 1.7.7.0 → 1.7.7.1
raw patch · 8 files changed
+32/−18 lines, 8 filesdep +these-skinnyPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: these-skinny
API changes (from Hackage documentation)
- Language.ATS: Both :: a -> b -> Paired a b
- Language.ATS: First :: a -> Paired a b
- Language.ATS: Second :: b -> Paired a b
- Language.ATS: data Paired a b
- Language.ATS: Arg :: Paired String (Type a) -> Arg a
+ Language.ATS: Arg :: These String (Type a) -> Arg a
Files
- CHANGELOG.md +4/−0
- language-ats.cabal +3/−2
- src/Language/ATS.hs +0/−1
- src/Language/ATS/Parser.y +5/−4
- src/Language/ATS/PrettyPrint.hs +5/−4
- src/Language/ATS/Types.hs +2/−7
- test/Spec.hs +1/−0
- test/data/stack.sats +12/−0
CHANGELOG.md view
@@ -1,5 +1,9 @@ # language-ats +## 1.7.7.1++ * Use `these-skinny`+ ## 1.7.7.0 * Improved parse errors
language-ats.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: language-ats-version: 1.7.7.0+version: 1.7.7.1 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018-2019 Vanessa McHale@@ -69,7 +69,8 @@ ansi-wl-pprint >=0.6.8, composition-prelude >=2.0.4.0, containers -any,- transformers -any+ transformers -any,+ these-skinny -any if !flag(cross) build-tools: happy >=1.17.1, alex -any
src/Language/ATS.hs view
@@ -37,7 +37,6 @@ , PreFunction (..) , StaticExpression (..) , StackFunction (..)- , Paired (..) , Fixity (..) , SortArg (..) , Sort (..)
src/Language/ATS/Parser.y view
@@ -19,6 +19,7 @@ import Data.Char (toLower) import Data.List.NonEmpty (NonEmpty (..)) import Data.Foldable (toList)+import Data.These (These (..)) import GHC.Generics (Generic) import Language.ATS.Types import Language.ATS.Types.Lens@@ -332,14 +333,14 @@ | { [] } TypeArg :: { Arg AlexPosn }- : IdentifierOr { Arg (First $1) }- | IdentifierOr colon Type { Arg (Both $1 $3) }- | Type { Arg (Second $1) }+ : IdentifierOr { Arg (This $1) }+ | IdentifierOr colon Type { Arg (These $1 $3) }+ | Type { Arg (That $1) } | exclamation IdentifierOr colon {% left $ OneOf $3 [",", ")"] ":" } Arg :: { Arg AlexPosn } : TypeArg { $1 }- | StaticExpression { Arg (Second (ConcreteType $1)) } -- TODO: have some sort of state showing bound variables that we can use to disambiguate types vs. static expressions?+ | StaticExpression { Arg (That (ConcreteType $1)) } -- TODO: have some sort of state showing bound variables that we can use to disambiguate types vs. static expressions? -- | Parse a literal Literal :: { Expression AlexPosn }
src/Language/ATS/PrettyPrint.hs view
@@ -18,6 +18,7 @@ import Data.List (isPrefixOf) import Data.List.NonEmpty (NonEmpty (..)) import qualified Data.List.NonEmpty as NE+import Data.These (These (..)) import Language.ATS.Types import Lens.Micro import Prelude hiding ((<$>))@@ -236,10 +237,10 @@ a (BinPatternF _ op p p') = p <+> pretty op <+> p' argHelper :: Eq a => (Doc -> Doc -> Doc) -> Arg a -> Doc-argHelper _ (Arg (First s)) = pretty s-argHelper _ (Arg (Second t)) = pretty t-argHelper op (Arg (Both s t)) = pretty s `op` colon `op` pretty t-argHelper op (PrfArg a a') = prettyArgs' ", " mempty mempty a </> "|" `op` pretty a'+argHelper _ (Arg (This s)) = pretty s+argHelper _ (Arg (That t)) = pretty t+argHelper op (Arg (These s t)) = pretty s `op` colon `op` pretty t+argHelper op (PrfArg a a') = prettyArgs' ", " mempty mempty a </> "|" `op` pretty a' instance Eq a => Pretty (SortArg a) where pretty (SortArg n st) = text n <> ":" <+> pretty st
src/Language/ATS/Types.hs view
@@ -34,7 +34,6 @@ , Addendum (..) , DataPropLeaf (..) , PreFunction (..)- , Paired (..) , Leaf (..) , StaticExpression (..) , StaticExpressionF (..)@@ -55,6 +54,7 @@ import Data.Function (on) import Data.List.NonEmpty (NonEmpty) import qualified Data.Map as M+import Data.These (These) import GHC.Generics (Generic) import GHC.Natural (Natural) import Language.ATS.Lexer (Addendum (..))@@ -232,17 +232,12 @@ type instance Base (Pattern a) = PatternF a -data Paired a b = Both a b- | First a- | Second b- deriving (Show, Eq, Generic, NFData)- data SortArg a = SortArg String (Sort a) | Anonymous (Sort a) deriving (Show, Eq, Generic, NFData) -- | An argument to a function.-data Arg a = Arg (Paired String (Type a))+data Arg a = Arg (These String (Type a)) | PrfArg [Arg a] (Arg a) deriving (Show, Eq, Generic, NFData)
test/Spec.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+-- vim: syntax=hspec import Data.Foldable import qualified Filesystem.Path.CurrentOS as F
+ test/data/stack.sats view
@@ -0,0 +1,12 @@+absprop gc_ptr(l:addr, a:t@ype)++typedef stack_t(a: t@ype+) = $extype "struct stack_t"++fun new {a:t@ype+}(&stack_t(a)? >> stack_t(a)) : void =+ "ext#"++fun {a:t@ype+} push(&stack_t(a) >> stack_t(a), a) : void =+ "ext#"++fun {a:t@ype+} pop(&stack_t(a) >> stack_t(a)) : Option(a) =+ "ext#"