Merge pull request #2982 from unisonweb/cp/pretty-printer-package

Split off pretty-printer package
This commit is contained in:
mergify[bot] 2022-03-10 18:19:19 +00:00 committed by GitHub
commit 54e96e1e89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 325 additions and 64 deletions

View File

@ -0,0 +1,19 @@
Copyright (c) 2013-2022, Unison Computing, public benefit corp and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -0,0 +1,76 @@
name: unison-pretty-printer
github: unisonweb/unison
copyright: Copyright (C) 2013-2022 Unison Computing, PBC and contributors
default-extensions:
- ApplicativeDo
- BangPatterns
- BlockArguments
- DeriveFunctor
- DeriveGeneric
- DerivingStrategies
- DoAndIfThenElse
- FlexibleContexts
- FlexibleInstances
- GeneralizedNewtypeDeriving
- LambdaCase
- MultiParamTypeClasses
- NamedFieldPuns
- OverloadedStrings
- PatternSynonyms
- RankNTypes
- ScopedTypeVariables
- TupleSections
- TypeApplications
- ViewPatterns
ghc-options: -Wall -O0 -fno-warn-name-shadowing -fno-warn-missing-pattern-synonym-signatures
flags:
optimized:
manual: true
default: true
when:
- condition: flag(optimized)
ghc-options: -funbox-strict-fields -O2
library:
source-dirs: src
dependencies:
- base
- unison-core1
- unison-prelude
- containers
- ListLike
- ansi-terminal
- text
- mtl
- unliftio
- process
- extra
- terminal-size
executables:
prettyprintdemo:
source-dirs: prettyprintdemo
main: Main.hs
dependencies:
- base
- safe
- text
- unison-pretty-printer
tests:
pretty-printer-tests:
source-dirs: tests
main: Suite.hs
ghc-options: -W -threaded -rtsopts "-with-rtsopts=-N -T" -v0
dependencies:
- base
- unison-pretty-printer
- raw-strings-qq
- easytest
- containers
- code-page

View File

@ -0,0 +1,29 @@
{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}
module Main where
import EasyTest
import System.Environment (getArgs)
import System.IO
import System.IO.CodePage (withCP65001)
import qualified Unison.Test.ColorText as ColorText
import qualified Unison.Test.Range as Range
import qualified Unison.Test.Util.Pretty as Pretty
test :: Test ()
test =
tests
[ Range.test,
ColorText.test,
Pretty.test
]
main :: IO ()
main = withCP65001 do
args <- getArgs
mapM_ (`hSetEncoding` utf8) [stdout, stdin, stderr]
case args of
[] -> runOnly "" test
[prefix] -> runOnly prefix test
[seed, prefix] -> rerunOnly (read seed) prefix test

View File

@ -7,7 +7,7 @@ module Unison.Test.ColorText where
import qualified Data.Map as Map import qualified Data.Map as Map
import EasyTest import EasyTest
import Text.RawString.QQ import Text.RawString.QQ
import Unison.Lexer (Pos (..)) import Unison.Lexer.Pos (Pos (..))
import Unison.Util.AnnotatedText import Unison.Util.AnnotatedText
( AnnotatedExcerpt (..), ( AnnotatedExcerpt (..),
condensedExcerptToText, condensedExcerptToText,

View File

@ -1,7 +1,7 @@
module Unison.Test.Range where module Unison.Test.Range where
import EasyTest import EasyTest
import Unison.Lexer (Pos (..)) import Unison.Lexer.Pos (Pos (..))
import Unison.Util.Range import Unison.Util.Range
test :: Test () test :: Test ()

View File

@ -0,0 +1,33 @@
module Unison.Test.Util.Pretty
( test,
)
where
import Control.Monad
import Data.String (fromString)
import EasyTest
import qualified Unison.Util.Pretty as Pretty
test :: Test ()
test =
scope "util.pretty" . tests $
[ scope "Delta.Semigroup.<>.associative" $ do
replicateM_ 100 $ do
d1 <- randomDelta
d2 <- randomDelta
d3 <- randomDelta
expect' $ (d1 <> d2) <> d3 == d1 <> (d2 <> d3)
ok
]
randomDelta :: Test Pretty.Delta
randomDelta =
Pretty.delta <$> randomPretty
where
randomPretty :: Test (Pretty.Pretty String)
randomPretty =
fromString <$> randomString
randomString :: Test String
randomString =
replicateM 3 (pick ['x', 'y', 'z', '\n'])

View File

@ -0,0 +1,155 @@
cabal-version: 1.12
-- This file has been generated from package.yaml by hpack version 0.34.4.
--
-- see: https://github.com/sol/hpack
name: unison-pretty-printer
version: 0.0.0
homepage: https://github.com/unisonweb/unison#readme
bug-reports: https://github.com/unisonweb/unison/issues
copyright: Copyright (C) 2013-2022 Unison Computing, PBC and contributors
license: MIT
license-file: LICENSE
build-type: Simple
source-repository head
type: git
location: https://github.com/unisonweb/unison
flag optimized
manual: True
default: True
library
exposed-modules:
Unison.Lexer.Pos
Unison.PrettyTerminal
Unison.Util.AnnotatedText
Unison.Util.ColorText
Unison.Util.Less
Unison.Util.Pretty
Unison.Util.Range
Unison.Util.SyntaxText
other-modules:
Paths_unison_pretty_printer
hs-source-dirs:
src
default-extensions:
ApplicativeDo
BangPatterns
BlockArguments
DeriveFunctor
DeriveGeneric
DerivingStrategies
DoAndIfThenElse
FlexibleContexts
FlexibleInstances
GeneralizedNewtypeDeriving
LambdaCase
MultiParamTypeClasses
NamedFieldPuns
OverloadedStrings
PatternSynonyms
RankNTypes
ScopedTypeVariables
TupleSections
TypeApplications
ViewPatterns
ghc-options: -Wall -O0 -fno-warn-name-shadowing -fno-warn-missing-pattern-synonym-signatures
build-depends:
ListLike
, ansi-terminal
, base
, containers
, extra
, mtl
, process
, terminal-size
, text
, unison-core1
, unison-prelude
, unliftio
if flag(optimized)
ghc-options: -funbox-strict-fields -O2
default-language: Haskell2010
executable prettyprintdemo
main-is: Main.hs
other-modules:
Paths_unison_pretty_printer
hs-source-dirs:
prettyprintdemo
default-extensions:
ApplicativeDo
BangPatterns
BlockArguments
DeriveFunctor
DeriveGeneric
DerivingStrategies
DoAndIfThenElse
FlexibleContexts
FlexibleInstances
GeneralizedNewtypeDeriving
LambdaCase
MultiParamTypeClasses
NamedFieldPuns
OverloadedStrings
PatternSynonyms
RankNTypes
ScopedTypeVariables
TupleSections
TypeApplications
ViewPatterns
ghc-options: -Wall -O0 -fno-warn-name-shadowing -fno-warn-missing-pattern-synonym-signatures
build-depends:
base
, safe
, text
, unison-pretty-printer
if flag(optimized)
ghc-options: -funbox-strict-fields -O2
default-language: Haskell2010
test-suite pretty-printer-tests
type: exitcode-stdio-1.0
main-is: Suite.hs
other-modules:
Unison.Test.ColorText
Unison.Test.Range
Unison.Test.Util.Pretty
Paths_unison_pretty_printer
hs-source-dirs:
tests
default-extensions:
ApplicativeDo
BangPatterns
BlockArguments
DeriveFunctor
DeriveGeneric
DerivingStrategies
DoAndIfThenElse
FlexibleContexts
FlexibleInstances
GeneralizedNewtypeDeriving
LambdaCase
MultiParamTypeClasses
NamedFieldPuns
OverloadedStrings
PatternSynonyms
RankNTypes
ScopedTypeVariables
TupleSections
TypeApplications
ViewPatterns
ghc-options: -Wall -O0 -fno-warn-name-shadowing -fno-warn-missing-pattern-synonym-signatures -W -threaded -rtsopts "-with-rtsopts=-N -T" -v0
build-depends:
base
, code-page
, containers
, easytest
, raw-strings-qq
, unison-pretty-printer
if flag(optimized)
ghc-options: -funbox-strict-fields -O2
default-language: Haskell2010

View File

@ -136,6 +136,7 @@ library:
- unison-core - unison-core
- unison-core1 - unison-core1
- unison-prelude - unison-prelude
- unison-pretty-printer
- unison-util - unison-util
- unison-util-relation - unison-util-relation
- open-browser - open-browser
@ -143,15 +144,6 @@ library:
- generic-lens - generic-lens
executables: executables:
prettyprintdemo:
source-dirs: prettyprintdemo
main: Main.hs
dependencies:
- base
- safe
- text
- unison-parser-typechecker
tests: tests:
source-dirs: tests source-dirs: tests
main: Suite.hs main: Suite.hs
@ -187,3 +179,4 @@ executables:
- unison-prelude - unison-prelude
- unison-util - unison-util
- unison-util-relation - unison-util-relation
- unison-pretty-printer

View File

@ -15,12 +15,10 @@ import qualified Unison.Test.Codebase.Branch as Branch
import qualified Unison.Test.Codebase.Causal as Causal import qualified Unison.Test.Codebase.Causal as Causal
import qualified Unison.Test.Codebase.Path as Path import qualified Unison.Test.Codebase.Path as Path
import qualified Unison.Test.CodebaseInit as CodebaseInit import qualified Unison.Test.CodebaseInit as CodebaseInit
import qualified Unison.Test.ColorText as ColorText
import qualified Unison.Test.DataDeclaration as DataDeclaration import qualified Unison.Test.DataDeclaration as DataDeclaration
import qualified Unison.Test.FileParser as FileParser import qualified Unison.Test.FileParser as FileParser
import qualified Unison.Test.Lexer as Lexer import qualified Unison.Test.Lexer as Lexer
import qualified Unison.Test.MCode as MCode import qualified Unison.Test.MCode as MCode
import qualified Unison.Test.Range as Range
import qualified Unison.Test.Referent as Referent import qualified Unison.Test.Referent as Referent
import qualified Unison.Test.Term as Term import qualified Unison.Test.Term as Term
import qualified Unison.Test.TermParser as TermParser import qualified Unison.Test.TermParser as TermParser
@ -33,7 +31,6 @@ import qualified Unison.Test.Typechecker.TypeError as TypeError
import qualified Unison.Test.UnisonSources as UnisonSources import qualified Unison.Test.UnisonSources as UnisonSources
import qualified Unison.Test.Util.Bytes as Bytes import qualified Unison.Test.Util.Bytes as Bytes
import qualified Unison.Test.Util.PinBoard as PinBoard import qualified Unison.Test.Util.PinBoard as PinBoard
import qualified Unison.Test.Util.Pretty as Pretty
import qualified Unison.Test.Util.Relation as Relation import qualified Unison.Test.Util.Relation as Relation
import qualified Unison.Test.Util.Text as Text import qualified Unison.Test.Util.Text as Text
import qualified Unison.Test.Var as Var import qualified Unison.Test.Var as Var
@ -52,8 +49,6 @@ test =
UnisonSources.test, UnisonSources.test,
FileParser.test, FileParser.test,
DataDeclaration.test, DataDeclaration.test,
Range.test,
ColorText.test,
Bytes.test, Bytes.test,
Text.test, Text.test,
Relation.test, Relation.test,
@ -67,7 +62,6 @@ test =
Typechecker.test, Typechecker.test,
Context.test, Context.test,
Name.test, Name.test,
Pretty.test,
PinBoard.test, PinBoard.test,
CodebaseInit.test, CodebaseInit.test,
Branch.test Branch.test

View File

@ -101,7 +101,6 @@ library
Unison.Hashing.V2.Type Unison.Hashing.V2.Type
Unison.Hashing.V2.TypeEdit Unison.Hashing.V2.TypeEdit
Unison.Lexer Unison.Lexer
Unison.Lexer.Pos
Unison.NamePrinter Unison.NamePrinter
Unison.Parser Unison.Parser
Unison.Parser.Ann Unison.Parser.Ann
@ -112,7 +111,6 @@ library
Unison.PrettyPrintEnv.Util Unison.PrettyPrintEnv.Util
Unison.PrettyPrintEnvDecl Unison.PrettyPrintEnvDecl
Unison.PrettyPrintEnvDecl.Names Unison.PrettyPrintEnvDecl.Names
Unison.PrettyTerminal
Unison.PrintError Unison.PrintError
Unison.Result Unison.Result
Unison.Runtime.ANF Unison.Runtime.ANF
@ -164,9 +162,7 @@ library
Unison.UnisonFile.Error Unison.UnisonFile.Error
Unison.UnisonFile.Names Unison.UnisonFile.Names
Unison.UnisonFile.Type Unison.UnisonFile.Type
Unison.Util.AnnotatedText
Unison.Util.Bytes Unison.Util.Bytes
Unison.Util.ColorText
Unison.Util.Convert Unison.Util.Convert
Unison.Util.CycleTable Unison.Util.CycleTable
Unison.Util.CyclicEq Unison.Util.CyclicEq
@ -175,14 +171,10 @@ library
Unison.Util.Exception Unison.Util.Exception
Unison.Util.Find Unison.Util.Find
Unison.Util.Free Unison.Util.Free
Unison.Util.Less
Unison.Util.Logger Unison.Util.Logger
Unison.Util.PinBoard Unison.Util.PinBoard
Unison.Util.Pretty
Unison.Util.Range
Unison.Util.Rope Unison.Util.Rope
Unison.Util.Star3 Unison.Util.Star3
Unison.Util.SyntaxText
Unison.Util.Text Unison.Util.Text
Unison.Util.TQueue Unison.Util.TQueue
Unison.Util.TransitiveClosure Unison.Util.TransitiveClosure
@ -300,6 +292,7 @@ library
, unison-core , unison-core
, unison-core1 , unison-core1
, unison-prelude , unison-prelude
, unison-pretty-printer
, unison-util , unison-util
, unison-util-relation , unison-util-relation
, unliftio , unliftio
@ -317,43 +310,6 @@ library
ghc-options: -funbox-strict-fields -O2 ghc-options: -funbox-strict-fields -O2
default-language: Haskell2010 default-language: Haskell2010
executable prettyprintdemo
main-is: Main.hs
other-modules:
Paths_unison_parser_typechecker
hs-source-dirs:
prettyprintdemo
default-extensions:
ApplicativeDo
BangPatterns
BlockArguments
DeriveFunctor
DeriveGeneric
DerivingStrategies
DoAndIfThenElse
FlexibleContexts
FlexibleInstances
GeneralizedNewtypeDeriving
LambdaCase
MultiParamTypeClasses
NamedFieldPuns
OverloadedStrings
PatternSynonyms
RankNTypes
ScopedTypeVariables
TupleSections
TypeApplications
ViewPatterns
ghc-options: -Wall -O0 -fno-warn-name-shadowing -fno-warn-missing-pattern-synonym-signatures
build-depends:
base
, safe
, text
, unison-parser-typechecker
if flag(optimized)
ghc-options: -funbox-strict-fields -O2
default-language: Haskell2010
executable tests executable tests
main-is: Suite.hs main-is: Suite.hs
other-modules: other-modules:
@ -365,13 +321,11 @@ executable tests
Unison.Test.Codebase.Causal Unison.Test.Codebase.Causal
Unison.Test.Codebase.Path Unison.Test.Codebase.Path
Unison.Test.CodebaseInit Unison.Test.CodebaseInit
Unison.Test.ColorText
Unison.Test.Common Unison.Test.Common
Unison.Test.DataDeclaration Unison.Test.DataDeclaration
Unison.Test.FileParser Unison.Test.FileParser
Unison.Test.Lexer Unison.Test.Lexer
Unison.Test.MCode Unison.Test.MCode
Unison.Test.Range
Unison.Test.Referent Unison.Test.Referent
Unison.Test.Term Unison.Test.Term
Unison.Test.TermParser Unison.Test.TermParser
@ -442,6 +396,7 @@ executable tests
, unison-core1 , unison-core1
, unison-parser-typechecker , unison-parser-typechecker
, unison-prelude , unison-prelude
, unison-pretty-printer
, unison-util , unison-util
, unison-util-relation , unison-util-relation
, unliftio , unliftio

View File

@ -24,6 +24,7 @@ packages:
- lib/unison-prelude - lib/unison-prelude
- lib/unison-sqlite - lib/unison-sqlite
- lib/unison-util-relation - lib/unison-util-relation
- lib/unison-pretty-printer
#compiler-check: match-exact #compiler-check: match-exact
resolver: lts-18.13 resolver: lts-18.13

View File

@ -40,6 +40,7 @@ dependencies:
- unison-prelude - unison-prelude
- unison-util - unison-util
- unison-util-relation - unison-util-relation
- unison-pretty-printer
- unliftio - unliftio
library: library:

View File

@ -108,6 +108,7 @@ library
, unison-core1 , unison-core1
, unison-parser-typechecker , unison-parser-typechecker
, unison-prelude , unison-prelude
, unison-pretty-printer
, unison-util , unison-util
, unison-util-relation , unison-util-relation
, unliftio , unliftio
@ -185,6 +186,7 @@ executable integration-tests
, unison-core1 , unison-core1
, unison-parser-typechecker , unison-parser-typechecker
, unison-prelude , unison-prelude
, unison-pretty-printer
, unison-util , unison-util
, unison-util-relation , unison-util-relation
, unliftio , unliftio
@ -256,6 +258,7 @@ executable transcripts
, unison-core1 , unison-core1
, unison-parser-typechecker , unison-parser-typechecker
, unison-prelude , unison-prelude
, unison-pretty-printer
, unison-util , unison-util
, unison-util-relation , unison-util-relation
, unliftio , unliftio
@ -331,6 +334,7 @@ executable unison
, unison-core1 , unison-core1
, unison-parser-typechecker , unison-parser-typechecker
, unison-prelude , unison-prelude
, unison-pretty-printer
, unison-util , unison-util
, unison-util-relation , unison-util-relation
, unliftio , unliftio
@ -410,6 +414,7 @@ test-suite tests
, unison-core1 , unison-core1
, unison-parser-typechecker , unison-parser-typechecker
, unison-prelude , unison-prelude
, unison-pretty-printer
, unison-util , unison-util
, unison-util-relation , unison-util-relation
, unliftio , unliftio