Skip to content

Commit 0321221

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

File tree

1 file changed

+20
-27
lines changed
  • src/FsToolkit.ErrorHandling

1 file changed

+20
-27
lines changed

src/FsToolkit.ErrorHandling/Seq.fs

Lines changed: 20 additions & 27 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>
@@ -379,8 +374,7 @@ let inline traverseOptionM'
379374
match state with
380375
| None -> None
381376
| Some initialValues ->
382-
let mutable values = ArrayCollector()
383-
values.AddMany initialValues
377+
let values = ResizeArray initialValues
384378
let mutable ok = true
385379
use enumerator = xs.GetEnumerator()
386380

@@ -390,7 +384,7 @@ let inline traverseOptionM'
390384
| Some value -> values.Add value
391385
| None -> ok <- false
392386

393-
if ok then Some(values.Close()) else None
387+
if ok then Some(values.ToArray()) else None
394388

395389
/// <summary>
396390
/// Applies a function to each element of a sequence and returns a single option
@@ -428,8 +422,7 @@ let inline traverseAsyncOptionM'
428422
match! state with
429423
| None -> return None
430424
| Some initialValues ->
431-
let mutable values = ArrayCollector()
432-
values.AddMany initialValues
425+
let values = ResizeArray initialValues
433426
let mutable ok = true
434427
use enumerator = xs.GetEnumerator()
435428

@@ -439,7 +432,7 @@ let inline traverseAsyncOptionM'
439432
| Some value -> values.Add value
440433
| None -> ok <- false
441434

442-
return if ok then Some(values.Close()) else None
435+
return if ok then Some(values.ToArray()) else None
443436
}
444437

445438
/// <summary>

0 commit comments

Comments
 (0)