Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions src/fsharp/FSharp.Core/prim-types.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5324,12 +5324,13 @@ namespace Microsoft.FSharp.Core
// is undefined prior to the first call of MoveNext and post called to MoveNext
// that return false (see https://msdn.microsoft.com/en-us/library/58e146b7%28v=vs.110%29.aspx)
// so we should be able to just return value here, which would be faster
if !value < n then
let derefValue = !value
if derefValue < n then
notStarted ()
elif !value > m then
elif derefValue > m then
alreadyFinished ()
else
!value
derefValue

{ new IEnumerator<'T> with
member __.Dispose () = ()
Expand All @@ -5339,11 +5340,12 @@ namespace Microsoft.FSharp.Core
member __.Current = box (current ())
member __.Reset () = value := n - LanguagePrimitives.GenericOne
member __.MoveNext () =
if !value < m then
value := !value + LanguagePrimitives.GenericOne
let derefValue = !value
if derefValue < m then
value := derefValue + LanguagePrimitives.GenericOne
true
elif !value = m then
value := m + LanguagePrimitives.GenericOne
elif derefValue = m then
value := derefValue + LanguagePrimitives.GenericOne
false
else false }

Expand Down