Skip to content

Commit 69704b6

Browse files
authored
Moved ValueTaskValueOption to IcedTasks package (#363)
- Properly implements valueTask now
1 parent a7119ca commit 69704b6

10 files changed

Lines changed: 68 additions & 85 deletions

File tree

gitbook/SUMMARY.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -190,15 +190,6 @@
190190
* [Other Functions](taskValueOption/others.md)
191191
* [zip](taskValueOption/zip.md)
192192

193-
* ValueTaskValueOption
194-
* [apply](valueTaskValueOption/apply.md)
195-
* [bind](valueTaskValueOption/bind.md)
196-
* [Computation Expression](valueTaskValueOption/ce.md)
197-
* [either](valueTaskValueOption/either.md)
198-
* [map](valueTaskValueOption/map.md)
199-
* [Other Functions](valueTaskValueOption/others.md)
200-
* [zip](valueTaskValueOption/zip.md)
201-
202193
* TaskResult
203194
* [apply](taskResult/apply.md)
204195
* [bind](taskResult/bind.md)
@@ -349,6 +340,15 @@
349340
* [Other Functions](cancellableValueTaskOption/others.md)
350341
* [zip](cancellableValueTaskOption/zip.md)
351342

343+
* ValueTaskValueOption
344+
* [apply](valueTaskValueOption/apply.md)
345+
* [bind](valueTaskValueOption/bind.md)
346+
* [Computation Expression](valueTaskValueOption/ce.md)
347+
* [either](valueTaskValueOption/either.md)
348+
* [map](valueTaskValueOption/map.md)
349+
* [Other Functions](valueTaskValueOption/others.md)
350+
* [zip](valueTaskValueOption/zip.md)
351+
352352
* [CancellableValueTaskResult](cancellableValueTaskResult/index.md)
353353
* [apply](cancellableValueTaskResult/apply.md)
354354
* [bind](cancellableValueTaskResult/bind.md)

src/FsToolkit.ErrorHandling.IcedTasks/FsToolkit.ErrorHandling.IcedTasks.fsproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
<Compile Include="CancellableTaskValidationOp.fs" />
1515
<Compile Include="CancellableTaskOptionBuilderBase.fs" />
1616
<Compile Include="CancellableTaskOptionCE.fs" />
17+
<Compile Include="ValueTaskValueOption.fs" />
18+
<Compile Include="ValueTaskValueOptionCE.fs" />
19+
<Compile Include="ValueTaskValueOptionOp.fs" />
1720
<Compile Include="CancellableValueTaskResultCE.fs" />
1821
<Compile Include="CancellableValueTaskOptionCE.fs" />
1922
</ItemGroup>

src/FsToolkit.ErrorHandling/ValueTaskValueOption.fs renamed to src/FsToolkit.ErrorHandling.IcedTasks/ValueTaskValueOption.fs

Lines changed: 30 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,38 @@
11
namespace FsToolkit.ErrorHandling
22

33
open System.Threading.Tasks
4+
open IcedTasks
45

56

67
[<RequireQualifiedAccess>]
78
module ValueTaskValueOption =
89

910
let inline map ([<InlineIfLambda>] f) (ar: ValueTask<_ voption>) =
10-
ValueTask<_ voption>(
11-
task {
12-
let! opt = ar
13-
return ValueOption.map f opt
14-
}
15-
)
11+
valueTask {
12+
let! opt = ar
13+
return ValueOption.map f opt
14+
}
1615

1716
let inline bind ([<InlineIfLambda>] f) (ar: ValueTask<_ voption>) =
18-
ValueTask<_ voption>(
19-
task {
20-
let! opt = ar
17+
valueTask {
18+
let! opt = ar
2119

22-
let t =
23-
match opt with
24-
| ValueSome x -> f x
25-
| ValueNone -> ValueTask<_ voption>(ValueNone)
26-
27-
return! t
28-
}
29-
)
20+
match opt with
21+
| ValueSome x -> return! f x
22+
| ValueNone -> return ValueNone
23+
}
3024

3125
let inline valueSome x = ValueTask<_ voption>(ValueSome x)
3226

3327
let inline apply f x =
3428
bind (fun f' -> bind (fun x' -> valueSome (f' x')) x) f
3529

3630
let inline zip (x1: ValueTask<'a voption>) (x2: ValueTask<'b voption>) =
37-
ValueTask<('a * 'b) voption>(
38-
task {
39-
let! r1 = x1
40-
let! r2 = x2
41-
return ValueOption.zip r1 r2
42-
}
43-
)
31+
valueTask {
32+
let! r1 = x1
33+
let! r2 = x2
34+
return ValueOption.zip r1 r2
35+
}
4436

4537
/// <summary>
4638
/// Returns result of running <paramref name="onValueSome"/> if it is <c>ValueSome</c>, otherwise returns result of running <paramref name="onValueNone"/>
@@ -56,15 +48,13 @@ module ValueTaskValueOption =
5648
([<InlineIfLambda>] onValueNone: unit -> ValueTask<'output>)
5749
(input: ValueTask<'input voption>)
5850
: ValueTask<'output> =
59-
ValueTask<'output>(
60-
task {
61-
let! opt = input
51+
valueTask {
52+
let! opt = input
6253

63-
match opt with
64-
| ValueSome v -> return! onValueSome v
65-
| ValueNone -> return! onValueNone ()
66-
}
67-
)
54+
match opt with
55+
| ValueSome v -> return! onValueSome v
56+
| ValueNone -> return! onValueNone ()
57+
}
6858

6959
/// <summary>
7060
/// Gets the value of the voption if the voption is <c>ValueSome</c>, otherwise returns the specified default value.
@@ -75,12 +65,10 @@ module ValueTaskValueOption =
7565
/// The voption if the voption is <c>ValueSome</c>, else the default value.
7666
/// </returns>
7767
let inline defaultValue (value: 'value) (valueTaskValueOption: ValueTask<'value voption>) =
78-
ValueTask<'value>(
79-
task {
80-
let! opt = valueTaskValueOption
81-
return ValueOption.defaultValue value opt
82-
}
83-
)
68+
valueTask {
69+
let! opt = valueTaskValueOption
70+
return ValueOption.defaultValue value opt
71+
}
8472

8573
/// <summary>
8674
/// Gets the value of the voption if the voption is <c>ValueSome</c>, otherwise evaluates <paramref name="defThunk"/> and returns the result.
@@ -94,9 +82,7 @@ module ValueTaskValueOption =
9482
([<InlineIfLambda>] defThunk: unit -> 'value)
9583
(valueTaskValueOption: ValueTask<'value voption>)
9684
: ValueTask<'value> =
97-
ValueTask<'value>(
98-
task {
99-
let! opt = valueTaskValueOption
100-
return ValueOption.defaultWith defThunk opt
101-
}
102-
)
85+
valueTask {
86+
let! opt = valueTaskValueOption
87+
return ValueOption.defaultWith defThunk opt
88+
}

src/FsToolkit.ErrorHandling/ValueTaskValueOptionCE.fs renamed to src/FsToolkit.ErrorHandling.IcedTasks/ValueTaskValueOptionCE.fs

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ open Microsoft.FSharp.Core.CompilerServices.StateMachineHelpers
1010
open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators
1111
open Microsoft.FSharp.Control
1212
open Microsoft.FSharp.Collections
13+
open IcedTasks
1314

1415
/// ValueTask<'T voption>
1516
type ValueTaskValueOption<'T> = ValueTask<'T voption>
@@ -431,12 +432,10 @@ module ValueTaskValueOptionCEExtensionsLowPriority =
431432
(t: ^TaskLike)
432433
: ValueTaskValueOption<'T> =
433434

434-
ValueTask<'T voption>(
435-
task {
436-
let! r = t
437-
return ValueSome r
438-
}
439-
)
435+
valueTask {
436+
let! r = t
437+
return ValueSome r
438+
}
440439

441440
member inline _.Using<'Resource, 'TOverall, 'T when 'Resource :> IDisposableNull>
442441
(resource: 'Resource, body: 'Resource -> ValueTaskValueOptionCode<'TOverall, 'T>)
@@ -533,31 +532,28 @@ module ValueTaskValueOptionCEExtensionsMediumPriority =
533532
type ValueTaskValueOptionBuilderBase with
534533

535534
member inline this.Source(t: Task<'T>) : ValueTaskValueOption<'T> =
536-
ValueTask<'T voption>(Task.map ValueSome t)
535+
valueTask {
536+
let! r = t
537+
return ValueSome r
538+
}
537539

538540
member inline this.Source(t: Task) : ValueTaskValueOption<unit> =
539-
ValueTask<unit voption>(
540-
task {
541-
do! t
542-
return ValueSome()
543-
}
544-
)
541+
valueTask {
542+
do! t
543+
return ValueSome()
544+
}
545545

546546
member inline this.Source(t: ValueTask<'T>) : ValueTaskValueOption<'T> =
547-
ValueTask<'T voption>(
548-
task {
549-
let! r = t
550-
return ValueSome r
551-
}
552-
)
547+
valueTask {
548+
let! r = t
549+
return ValueSome r
550+
}
553551

554552
member inline this.Source(t: ValueTask) : ValueTaskValueOption<unit> =
555-
ValueTask<unit voption>(
556-
task {
557-
do! t
558-
return ValueSome()
559-
}
560-
)
553+
valueTask {
554+
do! t
555+
return ValueSome()
556+
}
561557

562558
member inline this.Source(opt: 'T voption) : ValueTaskValueOption<'T> =
563559
ValueTask<'T voption>(opt)

src/FsToolkit.ErrorHandling/ValueTaskValueOptionOp.fs renamed to src/FsToolkit.ErrorHandling.IcedTasks/ValueTaskValueOptionOp.fs

File renamed without changes.

src/FsToolkit.ErrorHandling/FsToolkit.ErrorHandling.fsproj

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,10 @@
4141
<Compile Include="AsyncOptionOp.fs" />
4242
<Compile Include="TaskOption.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
4343
<Compile Include="TaskValueOption.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
44-
<Compile Include="ValueTaskValueOption.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
4544
<Compile Include="TaskOptionCE.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
4645
<Compile Include="TaskValueOptionCE.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
47-
<Compile Include="ValueTaskValueOptionCE.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
4846
<Compile Include="TaskOptionOp.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
4947
<Compile Include="TaskValueOptionOp.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
50-
<Compile Include="ValueTaskValueOptionOp.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
5148
<Compile Include="AsyncResultOption.fs" />
5249
<Compile Include="AsyncResultOptionCE.fs" />
5350
<Compile Include="AsyncResultOptionOp.fs" />
@@ -66,4 +63,4 @@
6663
<ItemGroup>
6764
<Content Include="*.fsproj; **\*.fs" Exclude="Task.fs; **\Task*.fs" PackagePath="fable\" />
6865
</ItemGroup>
69-
</Project>
66+
</Project>

tests/FsToolkit.ErrorHandling.IcedTasks.Tests/FsToolkit.ErrorHandling.IcedTasks.Tests.fsproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
<Compile Include="TestData.fs" />
1111
<Compile Include="Expect.fs" />
1212
<Compile Include="../FsToolkit.ErrorHandling.Tests/Expecto.fs" />
13+
<Compile Include="../FsToolkit.ErrorHandling.Tests/TestHelpers.fs" />
1314
<Compile Include="CancellableTaskResultCE.fs" />
1415
<Compile Include="CancellableTaskValidationCE.fs" />
1516
<Compile Include="CancellableTaskOptionCE.fs" />
17+
<Compile Include="ValueTaskValueOptionCE.fs" />
1618
<Compile Include="CancellableValueTaskResultCE.fs" />
1719
<Compile Include="CancellableValueTaskOptionCE.fs" />
1820
<Compile Include="Main.fs" />

tests/FsToolkit.ErrorHandling.Tests/ValueTaskValueOptionCE.fs renamed to tests/FsToolkit.ErrorHandling.IcedTasks.Tests/ValueTaskValueOptionCE.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module ValueTaskValueOptionCETests
1+
module FsToolkit.ErrorHandling.IcedTasks.Tests.ValueTaskValueOptionCETests
22

33
open Expecto
44
open FsToolkit.ErrorHandling
@@ -604,6 +604,7 @@ let ``ValueTaskValueOptionCE inference checks`` =
604604
|> ignore
605605
]
606606

607+
[<Tests>]
607608
let allTests =
608609
testList "ValueTaskValueOption CE Tests" [
609610
ceTests

tests/FsToolkit.ErrorHandling.Tests/FsToolkit.ErrorHandling.Tests.fsproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
<Compile Include="TaskValueOption.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
2121
<Compile Include="TaskOptionCE.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
2222
<Compile Include="TaskValueOptionCE.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
23-
<Compile Include="ValueTaskValueOptionCE.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
2423
<Compile Include="TaskResult.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
2524
<Compile Include="TaskResultCE.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />
2625
<Compile Include="TaskResultOption.fs" Condition="'$(FABLE_COMPILER)' != 'true'" />

tests/FsToolkit.ErrorHandling.Tests/Main.fs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ let allTests =
4343
TaskOptionCETests.allTests
4444
TaskValueOptionTests.allTests
4545
TaskValueOptionCETests.allTests
46-
ValueTaskValueOptionCETests.allTests
4746
TaskResultTests.allTests
4847
TaskResultCETests.allTests
4948
TaskResultOptionTests.allTests

0 commit comments

Comments
 (0)