Skip to content

Commit efbc844

Browse files
committed
Lint: renderSymbolic: refactor
1 parent f359821 commit efbc844

File tree

1 file changed

+42
-25
lines changed

1 file changed

+42
-25
lines changed

src/Nix/Lint.hs

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -128,31 +128,48 @@ symerr :: forall e m a . MonadLint e m => Text -> m a
128128
symerr = evalError @(Symbolic m) . ErrorCall . toString
129129

130130
renderSymbolic :: MonadLint e m => Symbolic m -> m Text
131-
renderSymbolic = unpackSymbolic >=> \case
132-
NAny -> pure "<any>"
133-
NMany xs -> fmap (Text.intercalate ", ") $ forM xs $ \case
134-
TConstant ys -> fmap (Text.intercalate ", ") $ forM ys $ pure . \case
135-
TInt -> "int"
136-
TFloat -> "float"
137-
TBool -> "bool"
138-
TNull -> "null"
139-
TStr -> pure "string"
140-
TList r -> do
141-
x <- renderSymbolic =<< demand r
142-
pure $ "[" <> x <> "]"
143-
TSet Nothing -> pure "<any set>"
144-
TSet (Just s) -> do
145-
x <- traverse (renderSymbolic <=< demand) s
146-
pure $ "{" <> show x <> "}"
147-
f@(TClosure p) -> do
148-
(args, sym) <- do
149-
f' <- mkSymbolic [f]
150-
lintApp (NAbs (void p) ()) f' everyPossible
151-
args' <- traverse renderSymbolic args
152-
sym' <- renderSymbolic sym
153-
pure $ "(" <> show args' <> " -> " <> sym' <> ")"
154-
TPath -> pure "path"
155-
TBuiltin _n _f -> pure "<builtin function>"
131+
renderSymbolic =
132+
(\case
133+
NAny -> pure "<any>"
134+
NMany xs ->
135+
Text.intercalate ", " <$>
136+
traverse
137+
(\case
138+
TConstant ys ->
139+
Text.intercalate ", " <$>
140+
traverse
141+
(pure .
142+
\case
143+
TInt -> "int"
144+
TFloat -> "float"
145+
TBool -> "bool"
146+
TNull -> "null"
147+
)
148+
ys
149+
TStr -> pure "string"
150+
TList r ->
151+
do
152+
x <- renderSymbolic =<< demand r
153+
pure $ "[" <> x <> "]"
154+
TSet Nothing -> pure "<any set>"
155+
TSet (Just s) ->
156+
do
157+
x <- traverse (renderSymbolic <=< demand) s
158+
pure $ "{" <> show x <> "}"
159+
f@(TClosure p) ->
160+
do
161+
(args, sym) <-
162+
do
163+
f' <- mkSymbolic [f]
164+
lintApp (NAbs p ()) f' everyPossible
165+
args' <- traverse renderSymbolic args
166+
sym' <- renderSymbolic sym
167+
pure $ "(" <> show args' <> " -> " <> sym' <> ")"
168+
TPath -> pure "path"
169+
TBuiltin _n _f -> pure "<builtin function>"
170+
)
171+
xs
172+
) <=< unpackSymbolic
156173

157174
-- This function is order and uniqueness preserving (of types).
158175
merge

0 commit comments

Comments
 (0)