Skip to content

Commit 1266fbc

Browse files
committed
Refactor traverse function to list errors in correct order
1 parent 50fb02e commit 1266fbc

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

src/Compiler/Reporting/Result.elm

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -161,29 +161,30 @@ bind callback (RResult ka) =
161161

162162
traverse : (a -> RResult i w x b) -> List a -> RResult i w x (List b)
163163
traverse func list =
164-
List.foldr
165-
(\(RResult kv) (RResult acc) ->
166-
RResult <|
167-
\i w ->
168-
case acc i w of
169-
ROk i1 w1 accList ->
170-
case kv i1 w1 of
171-
ROk i2 w2 value ->
172-
ROk i2 w2 (value :: accList)
173-
174-
RErr i2 w2 e2 ->
175-
RErr i2 w2 e2
176-
177-
RErr i1 w1 e1 ->
178-
case kv i1 w1 of
179-
ROk i2 w2 _ ->
180-
RErr i2 w2 e1
181-
182-
RErr i2 w2 e2 ->
183-
RErr i2 w2 (OneOrMore.more e1 e2)
184-
)
185-
(pure [])
186-
(List.map func list)
164+
List.map func list
165+
|> List.foldl
166+
(\(RResult kv) (RResult acc) ->
167+
RResult <|
168+
\i w ->
169+
case acc i w of
170+
ROk i1 w1 accList ->
171+
case kv i1 w1 of
172+
ROk i2 w2 value ->
173+
ROk i2 w2 (value :: accList)
174+
175+
RErr i2 w2 e2 ->
176+
RErr i2 w2 e2
177+
178+
RErr i1 w1 e1 ->
179+
case kv i1 w1 of
180+
ROk i2 w2 _ ->
181+
RErr i2 w2 e1
182+
183+
RErr i2 w2 e2 ->
184+
RErr i2 w2 (OneOrMore.more e1 e2)
185+
)
186+
(pure [])
187+
|> fmap List.reverse
187188

188189

189190
traverseHelp : (a -> RResult i w e b) -> ( List a, List b ) -> RResult i w e (Step ( List a, List b ) (List b))

0 commit comments

Comments
 (0)