Skip to content

Commit ba87b06

Browse files
committed
Revert ArrayCollector for Fable
1 parent fae5515 commit ba87b06

File tree

1 file changed

+16
-21
lines changed
  • src/FsToolkit.ErrorHandling

1 file changed

+16
-21
lines changed

src/FsToolkit.ErrorHandling/Seq.fs

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ let inline traverseResultM'
2626
| Error e -> Error e
2727
| Ok initialSuccesses ->
2828

29-
let mutable oks = ArrayCollector()
30-
oks.AddMany initialSuccesses
29+
let oks = ResizeArray(initialSuccesses)
3130
let mutable err = Unchecked.defaultof<'error>
3231
let mutable ok = true
3332
use e = xs.GetEnumerator()
@@ -40,7 +39,7 @@ let inline traverseResultM'
4039
err <- e
4140
ok <- false
4241

43-
if ok then Ok(oks.Close()) else Error err
42+
if ok then Ok(oks.ToArray()) else Error err
4443

4544
/// <summary>
4645
/// Applies a function to each element of a sequence and returns a single result
@@ -77,31 +76,29 @@ let inline traverseResultA'
7776

7877
match state with
7978
| Error failuresToDate ->
80-
let mutable errs = ArrayCollector()
81-
errs.AddMany failuresToDate
79+
let errs = ResizeArray failuresToDate
8280

8381
for x in xs do
8482
match f x with
8583
| Error e -> errs.Add e
8684
| Ok _ -> () // as the initial state was failure, oks are irrelevant
8785

88-
Error(errs.Close())
86+
Error(errs.ToArray())
8987
| Ok initialSuccesses ->
9088

91-
let mutable oks = ArrayCollector()
92-
oks.AddMany initialSuccesses
93-
let mutable errs = ArrayCollector()
94-
let mutable ok = true
89+
let oks = ResizeArray initialSuccesses
90+
let errs = ResizeArray()
9591

9692
for x in xs do
9793
match f x with
98-
| Ok r when ok -> oks.Add r
94+
| Ok r when errs.Count = 0 -> oks.Add r
9995
| Ok _ -> () // no point saving results we won't use given the end result will be Error
100-
| Error e ->
101-
errs.Add e
102-
ok <- false
96+
| Error e -> errs.Add e
10397

104-
if ok then Ok(oks.Close()) else Error(errs.Close())
98+
if errs.Count = 0 then
99+
Ok(oks.ToArray())
100+
else
101+
Error(errs.ToArray())
105102

106103
/// <summary>
107104
/// Applies a function to each element of a sequence and returns a single result
@@ -139,8 +136,7 @@ let inline traverseAsyncResultM'
139136
match! state with
140137
| Error e -> return Error e
141138
| Ok initialSuccesses ->
142-
let mutable oks = ArrayCollector()
143-
oks.AddMany initialSuccesses
139+
let oks = ResizeArray initialSuccesses
144140
let mutable err = Unchecked.defaultof<'error>
145141
let mutable ok = true
146142
use e = xs.GetEnumerator()
@@ -153,7 +149,7 @@ let inline traverseAsyncResultM'
153149
err <- e
154150
ok <- false
155151

156-
return if ok then Ok(oks.Close()) else Error err
152+
return if ok then Ok(oks.ToArray()) else Error err
157153
}
158154

159155
/// <summary>
@@ -194,8 +190,7 @@ let inline traverseTaskResultM'
194190
match! state with
195191
| Error e -> return Error e
196192
| Ok initialSuccesses ->
197-
let mutable oks = ArrayCollector()
198-
oks.AddMany initialSuccesses
193+
let oks = ResizeArray initialSuccesses
199194
let mutable err = Unchecked.defaultof<'error>
200195
let mutable ok = true
201196
use e = xs.GetEnumerator()
@@ -208,7 +203,7 @@ let inline traverseTaskResultM'
208203
err <- e
209204
ok <- false
210205

211-
return if ok then Ok(oks.Close()) else Error err
206+
return if ok then Ok(oks.ToArray()) else Error err
212207
}
213208

214209
/// <summary>

0 commit comments

Comments
 (0)