packages feed

language-ats 1.7.5.0 → 1.7.6.0

raw patch · 8 files changed

+73/−16 lines, 8 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.ATS: IntLit :: Int -> Expression a
+ Language.ATS: IntLit :: Integer -> Expression a
- Language.ATS: IntTok :: AlexPosn -> Int -> Token
+ Language.ATS: IntTok :: AlexPosn -> Integer -> Token
- Language.ATS: StaticInt :: Int -> StaticExpression a
+ Language.ATS: StaticInt :: Integer -> StaticExpression a
- Language.ATS: UintLit :: Word -> Expression a
+ Language.ATS: UintLit :: Natural -> Expression a
- Language.ATS: UintTok :: AlexPosn -> Word -> Token
+ Language.ATS: UintTok :: AlexPosn -> Natural -> Token

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # language-ats +## 1.7.6.0++  * Use `Natural`/`Integer` for literals+ ## 1.7.5.0    * Fix `StaticExpression` to allow calls with dynamic components
language-ats.cabal view
@@ -1,6 +1,6 @@ cabal-version:   1.18 name:            language-ats-version:         1.7.5.0+version:         1.7.6.0 license:         BSD3 license-file:    LICENSE copyright:       Copyright: (c) 2018-2019 Vanessa McHale
src/Language/ATS/Lexer.x view
@@ -23,6 +23,7 @@ import Data.Bool (bool) import Control.DeepSeq (NFData) import GHC.Generics (Generic)+import GHC.Natural (Natural) import Text.PrettyPrint.ANSI.Leijen hiding (line, bool, column, (<$>))  }@@ -428,7 +429,7 @@ data Token = Identifier AlexPosn String            | SpecialIdentifier AlexPosn String            | Keyword AlexPosn Keyword-           | IntTok AlexPosn Int+           | IntTok AlexPosn Integer            | HexIntTok AlexPosn String            | FloatTok AlexPosn Float            | CharTok AlexPosn Char@@ -444,7 +445,7 @@            | CommentEnd AlexPosn            | CommentContents AlexPosn String            | MacroBlock AlexPosn String-           | UintTok AlexPosn Word+           | UintTok AlexPosn Natural            | SignatureTok AlexPosn String            | DoubleParenTok AlexPosn            | DoubleBracesTok AlexPosn@@ -571,7 +572,7 @@     pretty CommentEnd{} = "*)"     pretty (CommentContents _ s) = text s     pretty (FuncType _ s) = text s-    pretty (UintTok _ u) = pretty u+    pretty (UintTok _ u) = pretty (fromIntegral u :: Integer)     pretty (SignatureTok _ s) = ":" <> text s     pretty (Operator _ s) = text s     pretty (MacroBlock _ s) = "#"
src/Language/ATS/Parser.y view
@@ -931,7 +931,7 @@          | dataprop IdentifierOr SortArgs vbar {% left $ Expected $4 "=" "|" }  EitherInt :: { Fix }-          : intLit { Left $1 }+          : intLit { Left (fromIntegral $1) }           | parens(Operator) { Right $1 }  Fixity :: { Fixity AlexPosn }@@ -1058,13 +1058,13 @@             | overload doubleSqBrackets with IdentifierOr { OverloadIdent $1 "[]" (Unqualified $4) Nothing }             | overload BinOp with Name { OverloadOp $1 $2 $4 Nothing }             | overload BinOp with customOperator { OverloadOp $1 $2 (Unqualified $ to_string $4) Nothing }-            | overload BinOp with identifierSpace of intLit { OverloadOp $1 $2 (Unqualified $ to_string $4) (Just $6) }+            | overload BinOp with identifierSpace of intLit { OverloadOp $1 $2 (Unqualified $ to_string $4) (Just $ fromIntegral $6) }             | overload identifierSpace with Name { OverloadIdent $1 (to_string $2) $4 Nothing }             | overload identifierSpace with identifierSpace { OverloadIdent $1 (to_string $2) (Unqualified $ to_string $4) Nothing }-            | overload identifierSpace with identifierSpace of intLit { OverloadIdent $1 (to_string $2) (Unqualified $ to_string $4) (Just $6) }+            | overload identifierSpace with identifierSpace of intLit { OverloadIdent $1 (to_string $2) (Unqualified $ to_string $4) (Just $ fromIntegral $6) }             | overload tilde with identifier { OverloadIdent $1 "~" (Unqualified $ to_string $4) Nothing } -- FIXME figure out a general solution.-            | overload tilde with identifierSpace of intLit { OverloadIdent $1 "~" (Unqualified $ to_string $4) (Just $6) }-            | overload doubleSqBrackets with identifierSpace of intLit { OverloadIdent $1 "[]" (Unqualified $ to_string $4) (Just $6) }+            | overload tilde with identifierSpace of intLit { OverloadIdent $1 "~" (Unqualified $ to_string $4) (Just $ fromIntegral $6) }+            | overload doubleSqBrackets with identifierSpace of intLit { OverloadIdent $1 "[]" (Unqualified $ to_string $4) (Just $ fromIntegral $6) }             | overload dot identifierSpace with Name { OverloadIdent $1 ('.' : (to_string $3)) $5 Nothing }             | assume identifierSpace SortArgs eq Type { Assume (Unqualified (to_string $2)) $3 $5 }             | assume Name SortArgs eq Type { Assume $2 $3 $5 }
src/Language/ATS/PrettyPrint.hs view
@@ -132,7 +132,7 @@         a (LetF _ e e')          = flatAlt             ("let" <$> indent 2 (pretty e) <$> endLet e')             ("let" <+> pretty e <$> endLet e')-        a (UintLitF u)                  = pretty u <> "u"+        a (UintLitF u)                  = pretty (fromIntegral u :: Integer) <> "u"         a (IntLitF i)                   = pretty i         a (HexLitF hi)                  = "0x" <> text hi         a (LambdaF _ lt p e)            = prettyLam "lam" p lt e
src/Language/ATS/Types.hs view
@@ -56,6 +56,7 @@ import           Data.List.NonEmpty (NonEmpty) import qualified Data.Map           as M import           GHC.Generics       (Generic)+import           GHC.Natural        (Natural) import           Language.ATS.Lexer (Addendum (..))  type Fix = Either Int String@@ -308,7 +309,7 @@  data StaticExpression a = StaticVal (Name a)                         | StaticBinary (BinOp a) (StaticExpression a) (StaticExpression a)-                        | StaticInt Int+                        | StaticInt Integer                         | StaticHex String                         | SPrecede (StaticExpression a) (StaticExpression a)                         | SPrecedeList { _sExprs :: [StaticExpression a] }@@ -328,7 +329,7 @@  data StaticExpressionF a x = StaticValF (Name a)                            | StaticBinaryF (BinOp a) x x-                           | StaticIntF Int+                           | StaticIntF Integer                            | StaticHexF String                            | SPrecedeF x x                            | SPrecedeListF [x]@@ -363,9 +364,9 @@                        , whenTrue :: Expression a -- ^ Expression to be returned when true                        , elseExpr :: Maybe (Expression a) -- ^ Expression to be returned when false                        }-                  | UintLit Word -- ^ E.g. @1000u@+                  | UintLit Natural -- ^ E.g. @1000u@                   | FloatLit Float-                  | IntLit Int+                  | IntLit Integer                   | HexLit String                   | UnderscoreLit a                   | Lambda a (LambdaType a) (Pattern a) (Expression a) -- TODO: Fix@@ -416,9 +417,9 @@                      | NamedValF (Name a)                      | ListLiteralF a String (Type a) [x]                      | IfF x x (Maybe x)-                     | UintLitF Word+                     | UintLitF Natural                      | FloatLitF Float-                     | IntLitF Int+                     | IntLitF Integer                      | HexLitF String                      | UnderscoreLitF a                      | LambdaF a (LambdaType a) (Pattern a) x
+ test/data/memchr.out view
@@ -0,0 +1,32 @@+// bad (?) idea: use rawmemchr + append lol+fn memchr+{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(bytes_v(l,m)+                                                   | ptr(l), int, size_t(n)) :+  [ l0 : addr | l0 == null || l0 >= l && l0-l <= m ] ( bytes_v(l, l0-l)+                                                     , bytes_v(l0, l+m-l0)+                                                     | ptr(l0)) =+  "mac#"++fn memchr2_rs+{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)+                                                   | ptr(l), char, char, size_t(n)) :+  [ k : nat | k <= n || k == 18446744073709551615 ] size_t(k) =+  "ext#"++fn memchr2+{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)+                                                   | ptr(l), char, char, size_t(n)) :+  Option_vt([ k : nat | k <= n ] size_t(k)) =+  "ext#"++fn memchr3_rs+{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)+                                                   | ptr(l), char, char, char, size_t(n)) :+  [ k : nat | k <= n || k == 18446744073709551615 ] size_t(k) =+  "ext#"++fn memchr3+{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)+                                                   | ptr(l), char, char, char, size_t(n)) :+  Option_vt([ k : nat | k <= n ] size_t(k)) =+  "ext#"
+ test/data/memchr.sats view
@@ -0,0 +1,19 @@+// bad (?) idea: use rawmemchr + append lol+fn memchr { l : addr | l != null }{m:nat}{ n : nat | n <= m }(bytes_v(l,m) | ptr(l), int, size_t(n)) :+  [ l0 : addr | l0 == null || l0 >= l && l0-l <= m ] (bytes_v(l, l0-l), bytes_v(l0, l+m-l0)| ptr(l0)) =+  "mac#"++fn memchr2_rs { l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m) | ptr(l), char, char, size_t(n)) :+  [ k : nat | k <= n || k == 18446744073709551615 ] size_t(k) =+  "ext#"++fn memchr2 { l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m) | ptr(l), char, char, size_t(n)) :+  Option_vt([ k : nat | k <= n ] size_t(k)) =+  "ext#"++fn memchr3_rs { l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m) | ptr(l), char, char, char, size_t(n)) +  : [ k : nat | k <= n || k == 18446744073709551615 ] size_t(k) =+  "ext#"+fn memchr3 { l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m) | ptr(l), char, char, char, size_t(n)) +  : Option_vt([ k : nat | k <= n ] size_t(k)) =+  "ext#"