ats-format 0.1.3.3 → 0.1.3.5
raw patch · 8 files changed
+40/−34 lines, 8 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ats-format.cabal +1/−1
- man/atsfmt.1 +1/−1
- src/Language/ATS/Parser.y +7/−4
- src/Language/ATS/PrettyPrint.hs +10/−9
- src/Language/ATS/Types.hs +10/−8
- test/data/concurrency.out +3/−3
- test/data/number-theory.out +1/−1
- test/data/polyglot.out +7/−7
ats-format.cabal view
@@ -1,5 +1,5 @@ name: ats-format-version: 0.1.3.3+version: 0.1.3.5 synopsis: A source-code formatter for ATS description: An opinionated source-code formatter for [ATS](http://www.ats-lang.org/). homepage: https://hub.darcs.net/vmchale/ats-format#readme
man/atsfmt.1 view
@@ -1,4 +1,4 @@-.\" Automatically generated by Pandoc 2.1+.\" Automatically generated by Pandoc 2.1.1 .\" .TH "atsfmt (1)" "" "" "" "" .hy
src/Language/ATS/Parser.y view
@@ -115,6 +115,7 @@ extfcall { Identifier $$ "extfcall" } ldelay { Identifier $$ "ldelay" } listVT { Identifier $$ "list_vt" }+ foldAt { Identifier $$ "fold@" } identifier { $$@Identifier{} } identifierSpace { $$@IdentifierSpace{} } closeParen { Special $$ ")" }@@ -328,10 +329,9 @@ | closeParen {% Left $ Expected $1 "Arrow" ")" } -- | Expression or named call to an expression-Expression : PreExpression { $1 }+Expression : identifierSpace PreExpression { Call (Unqualified $ to_string $1) [] [] Nothing [$2] }+ | PreExpression { $1 } | openParen Tuple closeParen { TupleEx $1 $2 }- | identifierSpace PreExpression { Call (Unqualified $ to_string $1) [] [] Nothing [$2] }- | begin Expression end { Begin $1 $2 } | Expression semicolon Expression { Precede $1 $3 } | Expression semicolon { $1 } | openParen Expression closeParen { $2 }@@ -381,7 +381,7 @@ PreExpression : identifier lsqbracket PreExpression rsqbracket { Index $2 (Unqualified $ to_string $1) $3 } | Literal { $1 } | Call { $1 }- | case PreExpression of Case { Case $3 $1 $2 $4 }+ | case Expression of Case { Case $3 $1 $2 $4 } | openParen Expression closeParen { ParenExpr $1 $2 } | PreExpression BinOp PreExpression { Binary $2 $1 $3 } | UnOp PreExpression { Unary $1 $2 } -- FIXME throw error when we try to negate a string literal/time@@ -392,6 +392,7 @@ | if Expression then Expression else Expression { If $2 $4 (Just $6) } | let ATS in end { Let $1 $2 Nothing } | let ATS in Expression end { Let $1 $2 (Just $4) }+ | let ATS in Expression vbar {% Left $ Expected $5 "end" "|" } | lambda Pattern LambdaArrow Expression { Lambda $1 $3 $2 $4 } | llambda Pattern LambdaArrow Expression { LinearLambda $1 $3 $2 $4 } | addrAt PreExpression { AddrAt $1 $2 }@@ -405,6 +406,7 @@ | PreExpression mutateEq PreExpression { Mutate $1 $3 } | PreExpression where lbrace Declarations rbrace { WhereExp $1 $4 } | identifierSpace { NamedVal (Unqualified $ to_string $1) }+ | begin Expression end { Begin $1 $2 } | Name { NamedVal $1 } | lbrace ATS rbrace { Actions $2 } | while openParen PreExpression closeParen PreExpression { While $1 $3 $5 }@@ -454,6 +456,7 @@ Name : identifier { Unqualified (to_string $1) } | underscore { Unqualified "_" } | listVT { Unqualified "list_vt" }+ | foldAt { Unqualified "fold@" } | dollar identifier dot identifier { Qualified $1 (to_string $4) (to_string $2) } | dollar identifier dot identifierSpace { Qualified $1 (to_string $4) (to_string $2) } | dollar effmaskWrt { SpecialName $1 "effmask_wrt" }
src/Language/ATS/PrettyPrint.hs view
@@ -172,13 +172,13 @@ a (NamedValF nam) = pretty nam a (CallF nam [] [] Nothing []) = pretty nam <> "()" a (CallF nam [] [] (Just e) xs) = pretty nam <> prettyArgsG ("(" <> pretty e <+> "| ") ")" xs -- FIXME split eagerly on "|"- a (CallF nam [] [] Nothing xs) = pretty nam <> prettyArgsG "(" ")" xs+ a (CallF nam [] [] Nothing xs) = pretty nam <> prettyArgs xs a (CallF nam [] us Nothing []) = pretty nam <> prettyArgsU "{" "}" us a (CallF nam [] us Nothing xs) = pretty nam <> prettyArgsU "{" "}" us <> prettyArgsG "(" ")" xs a (CallF nam is [] Nothing []) = pretty nam <> prettyArgsU "<" ">" is a (CallF nam is [] Nothing [x]) | startsParens x = pretty nam <> prettyArgsU "<" ">" is <> pretty x- a (CallF nam is [] Nothing xs) = pretty nam <> prettyArgsU "<" ">" is <> prettyArgsG "(" ")" xs+ a (CallF nam is [] Nothing xs) = pretty nam <> prettyArgsU "<" ">" is <> prettyArgs xs a (CaseF _ add e cs) = "case" <> pretty add <+> e <+> "of" <$> indent 2 (prettyCases cs) a (VoidLiteralF _) = "()" a (RecordValueF _ es Nothing) = prettyRecord es@@ -468,20 +468,21 @@ (<#>) a b = lineAlt (a <$> indent 2 b) (a <+> b) -- FIXME figure out a nicer algorithm for when/how to split lines.+-- aka don't use '</>' in places. instance Pretty PreFunction where pretty (PreF i si [] [] [NoArgs] rt Nothing (Just e)) = pretty i <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e) -- FIXME this is an awful hack pretty (PreF i si [] [] as rt Nothing (Just e)) = pretty i <> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)- pretty (PreF i si [] [] as rt (Just t) (Just e)) = pretty i </> ".<" <> pretty t <> ">." <#> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)- pretty (PreF i si [] us as rt (Just t) (Just e)) = pretty i </> fancyU us </> ".<" <> pretty t <> ">." <#> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)+ pretty (PreF i si [] [] as rt (Just t) (Just e)) = pretty i </> ".<" <> pretty t <> ">." </> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)+ pretty (PreF i si [] us as rt (Just t) (Just e)) = pretty i </> fancyU us </> ".<" <> pretty t <> ">." </> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e) pretty (PreF i si [] us [NoArgs] rt Nothing (Just e)) = pretty i </> fancyU us <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)- pretty (PreF i si [] us as rt Nothing (Just e)) = pretty i </> fancyU us <#> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)+ pretty (PreF i si [] us as rt Nothing (Just e)) = pretty i </> fancyU us </> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e) pretty (PreF i si pus [] as rt Nothing (Just e)) = fancyU pus </> pretty i <> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)- pretty (PreF i si pus [] as rt (Just t) (Just e)) = fancyU pus </> pretty i <+> ".<" <> pretty t <> ">." <#> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)- pretty (PreF i si pus us as rt (Just t) (Just e)) = fancyU pus </> pretty i </> fancyU us </> ".<" <> pretty t <> ">." <#> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)- pretty (PreF i si pus us as rt Nothing (Just e)) = fancyU pus </> pretty i </> fancyU us <#> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)+ pretty (PreF i si pus [] as rt (Just t) (Just e)) = fancyU pus </> pretty i <+> ".<" <> pretty t <> ">." </> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)+ pretty (PreF i si pus us as rt (Just t) (Just e)) = fancyU pus </> pretty i </> fancyU us </> ".<" <> pretty t <> ">." </> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e)+ pretty (PreF i si pus us as rt Nothing (Just e)) = fancyU pus </> pretty i </> fancyU us </> prettyArgs as <+> ":" <> text si <#> pretty rt <+> "=" <$> indent 2 (pretty e) pretty (PreF i si [] [] as rt Nothing Nothing) = pretty i <> prettyArgs as <+> ":" <> text si <#> pretty rt pretty (PreF i si [] us [] rt Nothing Nothing) = pretty i </> fancyU us <+> ":" <> text si <#> pretty rt- pretty (PreF i si [] us as rt Nothing Nothing) = pretty i </> fancyU us <#> prettyArgs as <+> ":" <> text si <#> pretty rt+ pretty (PreF i si [] us as rt Nothing Nothing) = pretty i </> fancyU us </> prettyArgs as <+> ":" <> text si <#> pretty rt pretty (PreF i si pus us as rt Nothing Nothing) = fancyU pus </> pretty i </> fancyU us </> prettyArgs as <+> ":" <> text si <#> pretty rt pretty _ = undefined
src/Language/ATS/Types.hs view
@@ -337,11 +337,13 @@ -- TODO: rewrite multiple universals when it's the right context? rewriteATS :: Expression -> Expression rewriteATS = cata a where- a (PrecedeF e e'@PrecedeList{}) = PrecedeList (e : _exprs e')- a (PrecedeF e e') = PrecedeList [e, e']- a (BinaryF Mult (Binary Add e e') e'') = Binary Add e (Binary Mult e' e'')- a (BinaryF Add e (BinList Add es)) = BinList Add (e : es)- a (BinaryF Add e e') = BinList Add [e, e']- a (ParenExprF _ e@Precede{}) = e- a (ParenExprF _ e@PrecedeList{}) = e- a x = embed x+ a (CallF n ts ts' me [ParenExpr _ e@NamedVal{}]) = Call n ts ts' me [e]+ a (CallF n ts ts' me [ParenExpr _ e@Call{}]) = Call n ts ts' me [e]+ a (PrecedeF e e'@PrecedeList{}) = PrecedeList (e : _exprs e')+ a (PrecedeF e e') = PrecedeList [e, e']+ a (BinaryF Mult (Binary Add e e') e'') = Binary Add e (Binary Mult e' e'')+ a (BinaryF Add e (BinList Add es)) = BinList Add (e : es)+ a (BinaryF Add e e') = BinList Add [e, e']+ a (ParenExprF _ e@Precede{}) = e+ a (ParenExprF _ e@PrecedeList{}) = e+ a x = embed x
test/data/concurrency.out view
@@ -127,7 +127,7 @@ val (prf | ()) = spin_lock(spin) val () = ch.refcount := ch.refcount + 1 val () = spin_unlock(prf | spin)- prval () = fold@((chan))+ prval () = fold@(chan) in $UN.castvwtp1{channel(a)}(chan) end@@ -166,7 +166,7 @@ val @CHANNEL{ l0, l1, l2, l3 }(ch) = chan val refcount = ch.refcount in- (fold@((chan)) ; refcount)+ (fold@(chan) ; refcount) end implement {a} channel_make (cap) =@@ -209,7 +209,7 @@ val () = ch.queue := $UN.castvwtp0{ptr}(queue_make<a>(cap)) in- (fold@((chan)) ; chan)+ (fold@(chan) ; chan) end implement {a} channel_insert (chan, x) =
test/data/number-theory.out view
@@ -143,7 +143,7 @@ begin let fnx loop { k : nat | k >= 2 }{ m : nat | m > 0 && k >= m } .<k-m>.- (i : int(m), n : int(k)) : int =+ (i : int(m), n : int(k)) : int = if i >= n then if is_prime(n) then n - 1
test/data/polyglot.out view
@@ -93,7 +93,7 @@ // Pad a string of bounded length on the right by adding spaces. fnx right_pad { k : int | k >= 0 }{ m : int | m <= k } .<k>.- (s : string(m), n : int(k)) : string =+(s : string(m), n : int(k)) : string = case+ length(s) < n of | true when n > 0 => right_pad(s, n - 1) + " " | _ => s@@ -1450,12 +1450,12 @@ end fnx get_cli { n : int | n >= 1 }{ m : nat | m < n } .<n-m>.- ( argc : int(n)- , argv : !argv(n)- , current : int(m)- , prev_is_exclude : bool- , acc : command_line- ) : command_line =+( argc : int(n)+, argv : !argv(n)+, current : int(m)+, prev_is_exclude : bool+, acc : command_line+) : command_line = let var arg = argv[current] in