Skip to content

Commit dec6d9a

Browse files
authored
Fixes for tryParse and tryGetValue (#197)
1 parent 75cbc98 commit dec6d9a

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

src/FsToolkit.ErrorHandling/Option.fs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,26 +37,27 @@ module Option =
3737
traverseResult id opt
3838

3939
#if !FABLE_COMPILER
40-
let inline tryParse< ^T
41-
when ^T: (static member TryParse: string * byref< ^T > -> bool) and ^T: (new: unit -> ^T)>
40+
let inline tryParse< ^value
41+
when ^value: (static member TryParse: string * byref< ^value > -> bool)>
4242
(valueToParse: string)
43-
: ^T option =
44-
let mutable output = new ^T()
43+
: ^value option =
44+
let mutable output = Unchecked.defaultof< ^value>
4545

4646
let parsed =
47-
(^T: (static member TryParse: string * byref< ^T > -> bool) (valueToParse, &output))
47+
(^value: (static member TryParse: string * byref< ^value > -> bool) (valueToParse,
48+
&output))
4849

4950
match parsed with
5051
| true -> Some output
5152
| _ -> None
5253

53-
let inline tryGetValue (key: string) (dictionary: ^Dictionary) : ^value option =
54+
let inline tryGetValue (key: 'key) (dictionary: ^Dictionary) : ^value option =
5455
let mutable output = Unchecked.defaultof< ^value>
5556

5657
let parsed =
57-
(^Dictionary: (member TryGetValue: string * byref< ^value > -> bool) (dictionary,
58-
key,
59-
&output))
58+
(^Dictionary: (member TryGetValue: 'key * byref< ^value > -> bool) (dictionary,
59+
key,
60+
&output))
6061

6162
match parsed with
6263
| true -> Some output

src/FsToolkit.ErrorHandling/ValueOption.fs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ module ValueOption =
4141
traverseResult id opt
4242

4343
let inline tryParse< ^value
44-
when ^value: (static member TryParse: string * byref< ^value > -> bool)
45-
and ^value: (new: unit -> ^value)>
44+
when ^value: (static member TryParse: string * byref< ^value > -> bool)>
4645
(valueToParse: string)
4746
: ^value voption =
48-
let mutable output = new ^value ()
47+
let mutable output = Unchecked.defaultof< ^value>
4948

5049
let parsed =
5150
(^value: (static member TryParse: string * byref< ^value > -> bool) (valueToParse,
@@ -55,13 +54,13 @@ module ValueOption =
5554
| true -> ValueSome output
5655
| _ -> ValueNone
5756

58-
let inline tryGetValue (key: string) (dictionary: ^Dictionary) : ^value voption =
57+
let inline tryGetValue (key: 'key) (dictionary: ^Dictionary) : ^value voption =
5958
let mutable output = Unchecked.defaultof< ^value>
6059

6160
let parsed =
62-
(^Dictionary: (member TryGetValue: string * byref< ^value > -> bool) (dictionary,
63-
key,
64-
&output))
61+
(^Dictionary: (member TryGetValue: 'key * byref< ^value > -> bool) (dictionary,
62+
key,
63+
&output))
6564

6665
match parsed with
6766
| true -> ValueSome output

0 commit comments

Comments
 (0)