Skip to content

Commit 425fe9a

Browse files
committed
Modernize
1 parent 97b371a commit 425fe9a

File tree

19 files changed

+181
-198
lines changed

19 files changed

+181
-198
lines changed

.github/workflows/format-and-test.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ jobs:
3131
ghc: "8.8.1"
3232
skip-doctest: true
3333
skip-benchmarks: true
34+
test-options: >
35+
--quickcheck-tests 10_000
3436
3537
build-with-latest:
3638
uses: nikita-volkov/haskell-hackage-lib-github-actions-workflows/.github/workflows/build.yaml@v4
3739
secrets: inherit
40+
with:
41+
test-options: >
42+
--quickcheck-tests 10_000

iri.cabal

Lines changed: 27 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ source-repository head
2121
type: git
2222
location: https://github.com/nikita-volkov/iri
2323

24-
library
25-
hs-source-dirs: library
24+
common base
2625
default-language: Haskell2010
2726
default-extensions:
28-
Arrows
2927
BangPatterns
28+
BlockArguments
3029
ConstraintKinds
3130
DataKinds
3231
DefaultSignatures
@@ -35,35 +34,56 @@ library
3534
DeriveFunctor
3635
DeriveGeneric
3736
DeriveTraversable
37+
DerivingStrategies
3838
EmptyDataDecls
3939
FlexibleContexts
4040
FlexibleInstances
4141
FunctionalDependencies
4242
GADTs
4343
GeneralizedNewtypeDeriving
44-
ImportQualifiedPost
4544
LambdaCase
4645
LiberalTypeSynonyms
4746
MagicHash
4847
MultiParamTypeClasses
4948
MultiWayIf
5049
NoImplicitPrelude
5150
NoMonomorphismRestriction
51+
NumericUnderscores
5252
OverloadedStrings
5353
ParallelListComp
5454
PatternGuards
55-
PatternSynonyms
5655
QuasiQuotes
5756
RankNTypes
5857
RecordWildCards
5958
ScopedTypeVariables
6059
StandaloneDeriving
60+
StrictData
6161
TemplateHaskell
6262
TupleSections
63+
TypeApplications
6364
TypeFamilies
6465
TypeOperators
6566
UnboxedTuples
67+
ViewPatterns
68+
69+
common executable
70+
import: base
71+
ghc-options:
72+
-O2
73+
-threaded
74+
-with-rtsopts=-N
75+
-rtsopts
76+
-funbox-strict-fields
6677

78+
common test
79+
import: base
80+
ghc-options:
81+
-threaded
82+
-with-rtsopts=-N
83+
84+
library
85+
import: base
86+
hs-source-dirs: library
6787
exposed-modules:
6888
Iri.Data
6989
Iri.Optics
@@ -112,7 +132,7 @@ library
112132
ptr >=0.16.1 && <0.17,
113133
template-haskell >=2.17 && <3,
114134
text >=2 && <3,
115-
text-builder >=0.6.7.2 && <0.7,
135+
text-builder ^>=1,
116136
th-lift >=0.8 && <0.9,
117137
th-lift-instances >=0.1.20 && <0.2,
118138
unordered-containers >=0.2 && <0.3,
@@ -138,50 +158,10 @@ library punycode
138158
Data.Text.Punycode.Shared
139159

140160
test-suite test
161+
import: test
141162
type: exitcode-stdio-1.0
142163
hs-source-dirs: test
143164
main-is: Main.hs
144-
default-language: Haskell2010
145-
default-extensions:
146-
Arrows
147-
BangPatterns
148-
ConstraintKinds
149-
DataKinds
150-
DefaultSignatures
151-
DeriveDataTypeable
152-
DeriveFoldable
153-
DeriveFunctor
154-
DeriveGeneric
155-
DeriveTraversable
156-
EmptyDataDecls
157-
FlexibleContexts
158-
FlexibleInstances
159-
FunctionalDependencies
160-
GADTs
161-
GeneralizedNewtypeDeriving
162-
ImportQualifiedPost
163-
LambdaCase
164-
LiberalTypeSynonyms
165-
MagicHash
166-
MultiParamTypeClasses
167-
MultiWayIf
168-
NoImplicitPrelude
169-
NoMonomorphismRestriction
170-
OverloadedStrings
171-
ParallelListComp
172-
PatternGuards
173-
PatternSynonyms
174-
QuasiQuotes
175-
RankNTypes
176-
RecordWildCards
177-
ScopedTypeVariables
178-
StandaloneDeriving
179-
TemplateHaskell
180-
TupleSections
181-
TypeFamilies
182-
TypeOperators
183-
UnboxedTuples
184-
185165
build-depends:
186166
iri,
187167
rerebase <2,

library/Iri/CodePointPredicates/Core.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module Iri.CodePointPredicates.Core where
22

3-
import Data.Vector.Unboxed qualified as A
3+
import qualified Data.Vector.Unboxed as A
44
import Iri.Prelude hiding (Predicate, inRange, (&&&), (|||))
55

66
type Predicate =

library/Iri/CodePointPredicates/Rfc3987.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
module Iri.CodePointPredicates.Rfc3987 where
115115

116116
import Iri.CodePointPredicates.Core
117-
import Iri.CodePointPredicates.Rfc3986 qualified as A
117+
import qualified Iri.CodePointPredicates.Rfc3986 as A
118118
import Iri.Prelude hiding (Predicate, inRange, (&&&), (|||))
119119

120120
scheme :: Predicate

library/Iri/Data/Functions.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ httpIriFromIri (Iri (Scheme scheme) hierarchy query fragment) =
1414
case hierarchy of
1515
AuthorisedHierarchy (Authority userInfo host port) path -> case userInfo of
1616
MissingUserInfo -> Right (HttpIri security host port path query fragment)
17-
PresentUserInfo (User user) _ -> Left ("User Info is present")
17+
PresentUserInfo (User _) _ -> Left ("User Info is present")
1818
_ -> Left ("Not an authorised hierarchy")
1919

2020
-- | Generalize an HTTP IRI to IRI

library/Iri/Data/Instances/Lift.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
module Iri.Data.Instances.Lift where
44

5-
import Data.WideWord.Word128 qualified
5+
import qualified Data.WideWord.Word128
66
import Iri.Data.Types
77
import Iri.Prelude
88
import Language.Haskell.TH.Lift
99
import Language.Haskell.TH.Syntax
10-
import Net.IPv6 qualified
10+
import qualified Net.IPv6
1111

1212
fmap concat
1313
$ traverse deriveLift

library/Iri/Data/Instances/Show.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
module Iri.Data.Instances.Show where
44

5-
import Data.Text qualified as B
5+
import qualified Data.Text as B
66
import Iri.Data.Types
77
import Iri.Prelude
8-
import Iri.Rendering.Text.Internal qualified as A
8+
import qualified Iri.Rendering.Text.Internal as A
99

1010
instance Show Iri where
1111
show =

library/Iri/MonadPlus.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module Iri.MonadPlus where
22

33
import Iri.Prelude hiding (foldl)
4-
import Ptr.ByteString qualified as ByteString
5-
import Ptr.Poking qualified as Poking
4+
import qualified Ptr.ByteString as ByteString
5+
import qualified Ptr.Poking as Poking
66

77
{-# INLINE foldl #-}
88
foldl :: (MonadPlus m) => (a -> b -> a) -> a -> m b -> m a

library/Iri/Optics/Defs.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
module Iri.Optics.Defs where
22

3-
import Data.Text.Encoding qualified as Text
3+
import qualified Data.Text.Encoding as Text
44
import Iri.Data
55
import Iri.Optics.Basics
6-
import Iri.Parsing.ByteString qualified as B
7-
import Iri.Parsing.Text qualified as D
6+
import qualified Iri.Parsing.ByteString as B
7+
import qualified Iri.Parsing.Text as D
88
import Iri.Prelude
9-
import Iri.Rendering.ByteString qualified as A
10-
import Iri.Rendering.Text qualified as C
9+
import qualified Iri.Rendering.ByteString as A
10+
import qualified Iri.Rendering.Text as C
1111

1212
-- * Definitions by source
1313

library/Iri/Parsing/Attoparsec/ByteString.hs

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ module Iri.Parsing.Attoparsec.ByteString
88
where
99

1010
import Data.Attoparsec.ByteString hiding (try)
11-
import Data.Attoparsec.ByteString.Char8 qualified as F
12-
import Data.ByteString qualified as K
13-
import Data.Text.Encoding qualified as B
14-
import Data.Text.Encoding.Error qualified as L
15-
import Data.Text.Punycode qualified as A
16-
import Data.Vector qualified as S
17-
import Iri.CodePointPredicates.Rfc3986 qualified as C
11+
import qualified Data.Attoparsec.ByteString.Char8 as F
12+
import qualified Data.ByteString as K
13+
import qualified Data.Text.Encoding as B
14+
import qualified Data.Text.Encoding.Error as L
15+
import qualified Data.Text.Punycode as A
16+
import qualified Data.Vector as S
17+
import qualified Iri.CodePointPredicates.Rfc3986 as C
1818
import Iri.Data
19-
import Iri.MonadPlus qualified as R
20-
import Iri.PercentEncoding qualified as I
19+
import qualified Iri.MonadPlus as R
20+
import qualified Iri.PercentEncoding as I
2121
import Iri.Prelude hiding (foldl, hash)
22-
import Net.IPv4 qualified as M
23-
import Net.IPv6 qualified as N
24-
import Text.Builder qualified as J
25-
import VectorBuilder.MonadPlus qualified as E
22+
import qualified Net.IPv4 as M
23+
import qualified Net.IPv6 as N
24+
import qualified TextBuilder as J
25+
import qualified VectorBuilder.MonadPlus as E
2626

2727
{-# INLINE percent #-}
2828
percent :: Parser Word8
@@ -87,7 +87,7 @@ uri :: Parser Iri
8787
uri =
8888
labeled "URI" $ do
8989
parsedScheme <- scheme
90-
colon
90+
_ <- colon
9191
parsedHierarchy <- hierarchy
9292
parsedQuery <- query
9393
parsedFragment <- fragment
@@ -99,12 +99,12 @@ uri =
9999
httpUri :: Parser HttpIri
100100
httpUri =
101101
labeled "HTTP URI" $ do
102-
satisfy (\x -> x == 104 || x == 72)
103-
satisfy (\x -> x == 116 || x == 84)
104-
satisfy (\x -> x == 116 || x == 84)
105-
satisfy (\x -> x == 112 || x == 80)
102+
_ <- satisfy (\x -> x == 104 || x == 72)
103+
_ <- satisfy (\x -> x == 116 || x == 84)
104+
_ <- satisfy (\x -> x == 116 || x == 84)
105+
_ <- satisfy (\x -> x == 112 || x == 80)
106106
secure <- satisfy (\b -> b == 115 || b == 83) $> True <|> pure False
107-
string "://"
107+
_ <- string "://"
108108
parsedHost <- host
109109
parsedPort <- PresentPort <$> (colon *> port) <|> pure MissingPort
110110
parsedPath <- (forwardSlash *> path) <|> pure (Path mempty)
@@ -169,26 +169,26 @@ ipV6 :: Parser IPv6
169169
ipV6 =
170170
do
171171
a <- F.hexadecimal
172-
colon
172+
_ <- colon
173173
b <- F.hexadecimal
174-
colon
174+
_ <- colon
175175
c <- F.hexadecimal
176-
colon
176+
_ <- colon
177177
d <- F.hexadecimal
178-
colon
178+
_ <- colon
179179
mplus
180180
( do
181181
e <- F.hexadecimal
182-
colon
182+
_ <- colon
183183
f <- F.hexadecimal
184-
colon
184+
_ <- colon
185185
g <- F.hexadecimal
186-
colon
186+
_ <- colon
187187
h <- F.hexadecimal
188188
return (N.fromWord16s a b c d e f g h)
189189
)
190190
( do
191-
colon
191+
_ <- colon
192192
return (N.fromWord16s a b c d 0 0 0 0)
193193
)
194194

@@ -252,7 +252,7 @@ utf8Chunks chunk =
252252
fail "Unexpected decoding error"
253253
finish (builder, undecodedBytes, _) =
254254
if K.null undecodedBytes
255-
then return (J.run builder)
255+
then return (J.toText builder)
256256
else fail (showString "UTF8 decoding: Bytes remaining: " (show undecodedBytes))
257257

258258
{-# INLINEABLE urlEncodedString #-}
@@ -270,7 +270,7 @@ urlEncodedString unencodedBytesPredicate =
270270
percentEncodedByte :: Parser Word8
271271
percentEncodedByte =
272272
labeled "Percent-encoded byte" $ do
273-
percent
273+
_ <- percent
274274
byte1 <- anyWord8
275275
byte2 <- anyWord8
276276
I.matchPercentEncodedBytes (fail "Broken percent encoding") return byte1 byte2

0 commit comments

Comments
 (0)