packages feed

PyF 0.8.0.0 → 0.8.0.1

raw patch · 52 files changed

+539/−12 lines, 52 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Revision history for PyF +## 0.8.0.0 -- 2019-08-27++- Stack support+ ## 0.8.0.0 -- 2019-08-06  - `f` (and `fWithDelimiters`) were renamed `fmt` (`fmtWithDelimiters`). `f` was causing too much shadowing in any codebase.
PyF.cabal view
@@ -1,15 +1,15 @@+cabal-version:       2.4 name:                PyF-version:             0.8.0.0+version:             0.8.0.1 synopsis: Quasiquotations for a python like interpolated string formater description: Quasiquotations for a python like interpolated string formater.-license:             BSD3+license:             BSD-3-Clause license-file:        LICENSE author:              Guillaume Bouchard maintainer:          guillaum.bouchard@gmail.com category:            Text build-type:          Simple-extra-source-files:  ChangeLog.md Readme.md-cabal-version:       >=1.10+extra-source-files:  ChangeLog.md Readme.md test/failureCases/*.hs test/golden/*.golden  library   exposed-modules:
test/SpecFail.hs view
@@ -19,7 +19,6 @@ import System.FilePath import Control.Exception import Control.DeepSeq-import System.Directory  -- * Check compilation with external GHC (this is usefull to test compilation failure) @@ -73,10 +72,8 @@ golden :: HasCallStack => String -> String -> IO () golden name output = do   let-    goldenFile = ".golden" </> name </> "golden"-    actualFile = ".golden" </> name </> "actual"--  createDirectoryIfMissing True (".golden" </> name)+    goldenFile = "test/golden" </> (name <> ".golden")+    actualFile = "test/golden" </> (name <> ".actual")    -- It can fail if the golden file does not exists   goldenContentE :: Either SomeException String <- try $ readFile goldenFile
test/SpecOverloaded.hs view
@@ -13,10 +13,11 @@  spec :: Spec spec = do+  let ten = 10 :: Int   describe "Test formatting with different types" $ do     it "String" $ do-      [fmt|hello {10:d}|] `shouldBe` ("hello 10" :: String)+      [fmt|hello {ten:d}|] `shouldBe` ("hello 10" :: String)     it "Text" $ do-      [fmt|hello {10:d}|] `shouldBe` ("hello 10" :: Text)+      [fmt|hello {ten:d}|] `shouldBe` ("hello 10" :: Text)     it "ByteString" $ do-      [fmt|hello {10:d}|] `shouldBe` ("hello 10" :: ByteString)+      [fmt|hello {ten:d}|] `shouldBe` ("hello 10" :: ByteString)
+ test/failureCases/bug18.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE OverloadedStrings #-}+{-# OPTIONS -Wall -Werror #-}++{-+  This test actually fails with -Wall because fieldA is not+  initialized. PyF is doing nothing wrong. But bug #18 shows that GHC+  error message leaks a lot of the PyF generated code which is not+  beautiful.++  This tests helps tracking the conciseness of the PyF generated code.+-}++import qualified Data.Text as T+import PyF++data Foo =+  Foo+  { fieldA :: ()+  , fieldB :: T.Text+  }+  deriving (Show)++yolo :: Foo+yolo =+  Foo+  { fieldB = [fmt|hello what's up {x}|]+  }+  where+    x :: T.Text+    x = T.pack "hi"++main = print yolo
+ test/golden/-4342647300489545826.golden view
@@ -0,0 +1,16 @@++INITIALPATH:7:22: error:+    • INITIALPATH:11:10:+   |+11 | in 1 + - / lalalal}|]+   |          ^+Parse error: /++    • In the quasi-quotation: [fmt|hello+    {+let a = 5+    b = 10+in 1 + - / lalalal}|]+  |+7 | main = putStrLn [fmt|hello+  |                      ^^^^^...
+ test/golden/-559153311506421916.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:33:+  |+7 | main = putStrLn [fmt|{hello:=100s}|]+  |                                 ^+String type is incompatible with inside padding (=).++    • In the quasi-quotation: [fmt|{hello:=100s}|]+  |+7 | main = putStrLn [fmt|{hello:=100s}|]+  |                      ^^^^^^^^^^^^^^^
+ test/golden/-608734388740815869.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:30:+  |+7 | main = putStrLn [fmt|{hello: s}|]+  |                              ^+Type incompatible with sign field ( ), use any of {'b', 'd', 'e', 'E', 'f', 'F', 'g', 'G', 'n', 'o', 'x', 'X', '%'} or remove the sign field.++    • In the quasi-quotation: [fmt|{hello: s}|]+  |+7 | main = putStrLn [fmt|{hello: s}|]+  |                      ^^^^^^^^^^^^
+ test/golden/-7029437438637288708.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat Bool) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) True)’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) True)+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) True)+  |+7 | main = putStrLn [fmt|{True:f}|]+  |                      ^^^^^^^^^^
+ test/golden/-7030000414293697510.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral Bool) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) True)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) True)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) True)+  |+7 | main = putStrLn [fmt|{True:d}|]+  |                      ^^^^^^^^^^
+ test/golden/-7033096789363194467.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (PyFToString Bool) arising from a use of ‘pyfToString’+    • In the second argument of ‘(.)’, namely ‘pyfToString’+      In the expression: (PyF.Formatters.formatString (PyF.Internal.QQ.newPaddingKForString PyF.Internal.QQ.PaddingDefaultK)) Nothing . pyfToString+      In the first argument of ‘putStrLn’, namely ‘(((PyF.Formatters.formatString (PyF.Internal.QQ.newPaddingKForString PyF.Internal.QQ.PaddingDefaultK)) Nothing . pyfToString) True)’+  |+7 | main = putStrLn [fmt|{True:s}|]+  |                      ^^^^^^^^^^
+ test/golden/-8862740133902269087.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral Float) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Binary) PyF.Formatters.Minus) Nothing) Nothing) number)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Binary) PyF.Formatters.Minus) Nothing) Nothing) number)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Binary) PyF.Formatters.Minus) Nothing) Nothing) number)+  |+7 | main = putStrLn [fmt|{number:b}|]+  |                      ^^^^^^^^^^^^
+ test/golden/-8863303109558677885.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral Float) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) number)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) number)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) number)+  |+7 | main = putStrLn [fmt|{number:d}|]+  |                      ^^^^^^^^^^^^
+ test/golden/-8865836508904655568.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral Float) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Octal) PyF.Formatters.Minus) Nothing) Nothing) number)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Octal) PyF.Formatters.Minus) Nothing) Nothing) number)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Octal) PyF.Formatters.Minus) Nothing) Nothing) number)+  |+7 | main = putStrLn [fmt|{number:o}|]+  |                      ^^^^^^^^^^^^
+ test/golden/-8866962460351694124.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (PyFToString Float) arising from a use of ‘pyfToString’+    • In the second argument of ‘(.)’, namely ‘pyfToString’+      In the expression: (PyF.Formatters.formatString (PyF.Internal.QQ.newPaddingKForString PyF.Internal.QQ.PaddingDefaultK)) Nothing . pyfToString+      In the first argument of ‘putStrLn’, namely ‘(((PyF.Formatters.formatString (PyF.Internal.QQ.newPaddingKForString PyF.Internal.QQ.PaddingDefaultK)) Nothing . pyfToString) number)’+  |+7 | main = putStrLn [fmt|{number:s}|]+  |                      ^^^^^^^^^^^^
+ test/golden/-8868932879679082057.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral Float) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) Nothing) Nothing) number)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) Nothing) Nothing) number)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) Nothing) Nothing) number)+  |+7 | main = putStrLn [fmt|{number:x}|]+  |                      ^^^^^^^^^^^^
+ test/golden/-8877940512730742825.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral Float) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) Nothing) Nothing) number)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) Nothing) Nothing) number)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) Nothing) Nothing) number)+  |+7 | main = putStrLn [fmt|{number:X}|]+  |                      ^^^^^^^^^^^^
+ test/golden/-955223088025738585.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat Int) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Percent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Percent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Percent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+  |+7 | main = putStrLn [fmt|{truncate' number:%}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/-972393886248710740.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat Int) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+  |+7 | main = putStrLn [fmt|{truncate' number:f}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/-972675374043359879.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat Int) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+  |+7 | main = putStrLn [fmt|{truncate' number:g}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/-973238354129060121.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat Int) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+  |+7 | main = putStrLn [fmt|{truncate' number:e}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/-981683007095020647.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat Int) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+  |+7 | main = putStrLn [fmt|{truncate' number:G}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/-982245987180720889.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat Int) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) (truncate' number))+  |+7 | main = putStrLn [fmt|{truncate' number:E}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/1039339902865820990.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:30:+  |+7 | main = putStrLn [fmt|{hello:+s}|]+  |                              ^+Type incompatible with sign field (+), use any of {'b', 'd', 'e', 'E', 'f', 'F', 'g', 'G', 'n', 'o', 'x', 'X', '%'} or remove the sign field.++    • In the quasi-quotation: [fmt|{hello:+s}|]+  |+7 | main = putStrLn [fmt|{hello:+s}|]+  |                      ^^^^^^^^^^^^
+ test/golden/1179194556644623826.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:30:+  |+7 | main = putStrLn [fmt|{hello:_s}|]+  |                              ^+String type is incompatible with grouping (_ or ,).++    • In the quasi-quotation: [fmt|{hello:_s}|]+  |+7 | main = putStrLn [fmt|{hello:_s}|]+  |                      ^^^^^^^^^^^^
+ test/golden/1398692563425247859.golden view
@@ -0,0 +1,16 @@++INITIALPATH:7:22: error:+    • INITIALPATH:10:5:+   |+10 | {pi:l}|]+   |     ^+unexpected 'l'+expecting '#', '%', '+', '-', '.', '0', 'E', 'F', 'G', 'X', 'b', 'c', 'd', 'e', 'f', 'g', 'n', 'o', 's', 'x', '}', integer, or space++    • In the quasi-quotation: [fmt|hello+++{pi:l}|]+  |+7 | main = putStrLn [fmt|hello+  |                      ^^^^^...
+ test/golden/1640634027373935614.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (PyF.Internal.QQ.FormatAny2 (PyFClassify Bool) Bool 'PyF.Formatters.AlignAll) arising from a use of ‘PyF.Internal.QQ.formatAny’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) PyF.Internal.QQ.PaddingDefaultK) Nothing) Nothing) True)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) PyF.Internal.QQ.PaddingDefaultK) Nothing) Nothing) True)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) PyF.Internal.QQ.PaddingDefaultK) Nothing) Nothing) True)+  |+7 | main = putStrLn [fmt|{True}|]+  |                      ^^^^^^^^
+ test/golden/2157463209259933381.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:25:+  |+7 | main = putStrLn [fmt|foo\Pbar|]+  |                         ^+lexical error in literal section++    • In the quasi-quotation: [fmt|foo\Pbar|]+  |+7 | main = putStrLn [fmt|foo\Pbar|]+  |                      ^^^^^^^^^^
+ test/golden/2897849520519503487.golden view
@@ -0,0 +1,18 @@++INITIALPATH:26:3: error: [-Wmissing-fields, -Werror=missing-fields]+    • Fields of ‘Foo’ not initialised: fieldA+    • In the expression: Foo {fieldB = (Data.String.fromString ("hello what's up " <> ((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) PyF.Internal.QQ.PaddingDefaultK) Nothing) Nothing) x))}+      In an equation for ‘yolo’:+          yolo+            = Foo {fieldB = (Data.String.fromString ("hello what's up " <> ((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) PyF.Internal.QQ.PaddingDefaultK) Nothing) Nothing) x))}+            where+                x :: T.Text+                x = T.pack "hi"+   |+26 |   Foo+   |   ^^^...++INITIALPATH:33:1: error: [-Wmissing-signatures, -Werror=missing-signatures] Top-level binding with no type signature: main :: IO ()+   |+33 | main = print yolo+   | ^^^^
+ test/golden/3089090107905559368.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:30:+  |+7 | main = putStrLn [fmt|{hello:-s}|]+  |                              ^+Type incompatible with sign field (-), use any of {'b', 'd', 'e', 'E', 'f', 'F', 'g', 'G', 'n', 'o', 'x', 'X', '%'} or remove the sign field.++    • In the quasi-quotation: [fmt|{hello:-s}|]+  |+7 | main = putStrLn [fmt|{hello:-s}|]+  |                      ^^^^^^^^^^^^
+ test/golden/3420956872570442319.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:30:+  |+7 | main = putStrLn [fmt|{hello:,s}|]+  |                              ^+String type is incompatible with grouping (_ or ,).++    • In the quasi-quotation: [fmt|{hello:,s}|]+  |+7 | main = putStrLn [fmt|{hello:,s}|]+  |                      ^^^^^^^^^^^^
+ test/golden/5755283065522441917.golden view
@@ -0,0 +1,15 @@++INITIALPATH:7:22: error:+    • Ambiguous type variable ‘t0’ arising from a use of ‘pyfToString’+      prevents the constraint ‘(PyFToString t0)’ from being solved.+      Probable fix: use a type annotation to specify what ‘t0’ should be.+      These potential instances exist:+        instance [safe] PyFToString String -- Defined in ‘PyF.Class’+        ...plus two instances involving out-of-scope types+        (use -fprint-potential-instances to see them all)+    • In the second argument of ‘(.)’, namely ‘pyfToString’+      In the expression: (PyF.Formatters.formatString (PyF.Internal.QQ.newPaddingKForString PyF.Internal.QQ.PaddingDefaultK)) Nothing . pyfToString+      In the first argument of ‘putStrLn’, namely ‘(((PyF.Formatters.formatString (PyF.Internal.QQ.newPaddingKForString PyF.Internal.QQ.PaddingDefaultK)) Nothing . pyfToString) (truncate number))’+  |+7 | main = putStrLn [fmt|{truncate number:s}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^
+ test/golden/6036259654057340493.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) Nothing) Nothing) hello)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) Nothing) Nothing) hello)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) Nothing) Nothing) hello)+  |+7 | main = putStrLn [fmt|{hello:X}|]+  |                      ^^^^^^^^^^^
+ test/golden/6038793049108247706.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+  |+7 | main = putStrLn [fmt|{hello:G}|]+  |                      ^^^^^^^^^^^
+ test/golden/6039356029193947908.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+  |+7 | main = putStrLn [fmt|{hello:E}|]+  |                      ^^^^^^^^^^^
+ test/golden/6045267287109001261.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) Nothing) Nothing) hello)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) Nothing) Nothing) hello)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) Nothing) Nothing) hello)+  |+7 | main = putStrLn [fmt|{hello:x}|]+  |                      ^^^^^^^^^^^
+ test/golden/6046956218641740019.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Binary) PyF.Formatters.Minus) Nothing) Nothing) hello)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Binary) PyF.Formatters.Minus) Nothing) Nothing) hello)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Binary) PyF.Formatters.Minus) Nothing) Nothing) hello)+  |+7 | main = putStrLn [fmt|{hello:b}|]+  |                      ^^^^^^^^^^^
+ test/golden/6047800682159908474.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+  |+7 | main = putStrLn [fmt|{hello:g}|]+  |                      ^^^^^^^^^^^
+ test/golden/6048082170088778591.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Fixed) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+  |+7 | main = putStrLn [fmt|{hello:f}|]+  |                      ^^^^^^^^^^^
+ test/golden/6048363662245608676.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+  |+7 | main = putStrLn [fmt|{hello:e}|]+  |                      ^^^^^^^^^^^
+ test/golden/6048645150040257841.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) hello)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) hello)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Decimal) PyF.Formatters.Minus) Nothing) Nothing) hello)+  |+7 | main = putStrLn [fmt|{hello:d}|]+  |                      ^^^^^^^^^^^
+ test/golden/6050052589349056034.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (Integral [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyIntegral’+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Octal) PyF.Formatters.Minus) Nothing) Nothing) hello)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Octal) PyF.Formatters.Minus) Nothing) Nothing) hello)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Octal) PyF.Formatters.Minus) Nothing) Nothing) hello)+  |+7 | main = putStrLn [fmt|{hello:o}|]+  |                      ^^^^^^^^^^^
+ test/golden/6066378924053859748.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • No instance for (RealFloat [Char]) arising from a use of ‘PyF.Internal.QQ.formatAnyFractional’+    • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Percent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)’+      In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Percent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+      In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Percent) PyF.Formatters.Minus) Nothing) Nothing) (Just 6)) hello)+  |+7 | main = putStrLn [fmt|{hello:%}|]+  |                      ^^^^^^^^^^^
+ test/golden/6097241206483808698.golden view
@@ -0,0 +1,13 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:28:+  |+7 | main = putStrLn [fmt|hello } world|]+  |                            ^+unexpected '}'+expecting "{{", "}}", '{', or end of input++    • In the quasi-quotation: [fmt|hello } world|]+  |+7 | main = putStrLn [fmt|hello } world|]+  |                      ^^^^^^^^^^^^^^^
+ test/golden/6623238490461560947.golden view
@@ -0,0 +1,5 @@++INITIALPATH:7:22: error: Variable not in scope: b0001+  |+7 | main = putStrLn [fmt|{0b0001}|]+  |                      ^^^^^^^^^^
+ test/golden/6874382203897971272.golden view
@@ -0,0 +1,13 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:35:+  |+7 | main = putStrLn [fmt|hello { world|]+  |                                   ^+unexpected end of input+expecting ':' or '}'++    • In the quasi-quotation: [fmt|hello { world|]+  |+7 | main = putStrLn [fmt|hello { world|]+  |                      ^^^^^^^^^^^^^^^
+ test/golden/7717561110821329704.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:41:+  |+7 | main = putStrLn [fmt|{truncate number:.3o}|]+  |                                         ^+Type incompatible with precision (.3), use any of {'e', 'E', 'f', 'F', 'g', 'G', 'n', 's', '%'} or remove the precision field.++    • In the quasi-quotation: [fmt|{truncate number:.3o}|]+  |+7 | main = putStrLn [fmt|{truncate number:.3o}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/7718968550063017457.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:41:+  |+7 | main = putStrLn [fmt|{truncate number:.3b}|]+  |                                         ^+Type incompatible with precision (.3), use any of {'e', 'E', 'f', 'F', 'g', 'G', 'n', 's', '%'} or remove the precision field.++    • In the quasi-quotation: [fmt|{truncate number:.3b}|]+  |+7 | main = putStrLn [fmt|{truncate number:.3b}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/7719531530148717643.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:41:+  |+7 | main = putStrLn [fmt|{truncate number:.3d}|]+  |                                         ^+Type incompatible with precision (.3), use any of {'e', 'E', 'f', 'F', 'g', 'G', 'n', 's', '%'} or remove the precision field.++    • In the quasi-quotation: [fmt|{truncate number:.3d}|]+  |+7 | main = putStrLn [fmt|{truncate number:.3d}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/7720657481595756207.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:41:+  |+7 | main = putStrLn [fmt|{truncate number:.3x}|]+  |                                         ^+Type incompatible with precision (.3), use any of {'e', 'E', 'f', 'F', 'g', 'G', 'n', 's', '%'} or remove the precision field.++    • In the quasi-quotation: [fmt|{truncate number:.3x}|]+  |+7 | main = putStrLn [fmt|{truncate number:.3x}|]+  |                      ^^^^^^^^^^^^^^^^^^^^^^^
+ test/golden/8270079288213682032.golden view
@@ -0,0 +1,9 @@++INITIALPATH:7:22: error:+    • String type is incompatible with inside padding (=).+    • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) ((PyF.Internal.QQ.PaddingK 100) (Just (Nothing, PyF.Formatters.AlignInside)))) Nothing) Nothing) hello)’+      In the expression: putStrLn (((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) ((PyF.Internal.QQ.PaddingK 100) (Just (Nothing, PyF.Formatters.AlignInside)))) Nothing) Nothing) hello)+      In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) ((PyF.Internal.QQ.PaddingK 100) (Just (Nothing, PyF.Formatters.AlignInside)))) Nothing) Nothing) hello)+  |+7 | main = putStrLn [fmt|{hello:=100}|]+  |                      ^^^^^^^^^^^^^^
+ test/golden/85163210393859768.golden view
@@ -0,0 +1,12 @@++INITIALPATH:7:22: error:+    • INITIALPATH:7:29:+  |+7 | main = putStrLn [fmt|{1 + - / lalalal}|]+  |                             ^+Parse error: /++    • In the quasi-quotation: [fmt|{1 + - / lalalal}|]+  |+7 | main = putStrLn [fmt|{1 + - / lalalal}|]+  |                      ^^^^^^^^^^^^^^^^^^^