Skip to content

Commit 8706dc8

Browse files
committed
Remove findIList
Refactor Option.defaultValue to explicit match
1 parent 1389ee7 commit 8706dc8

File tree

1 file changed

+10
-26
lines changed

1 file changed

+10
-26
lines changed

src/FSharp.Formatting.ApiDocs/GenerateModel.fs

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,25 +1001,6 @@ type internal CrossReferenceResolver(root, collectionName, qualify, extensions)
10011001
let simple = getMemberName 1 false typeName
10021002
externalDocsLink false simple typeName typeName
10031003

1004-
// If there's a quicker way to search an FSharpEntity for members then this linear
1005-
// search can disappear - see usage below in tryResolveCrossReferenceForMemberByXmlSig
1006-
// It's like writing C#...
1007-
let findIList (list: IList<'T>) (p: ('T -> bool)) =
1008-
let n = list.Count
1009-
let mutable i = 0
1010-
let mutable result: 'T option = None
1011-
1012-
while i < n do
1013-
let item = list.[i]
1014-
1015-
if p item then
1016-
i <- n
1017-
result <- Some item
1018-
1019-
i <- i + 1
1020-
1021-
result
1022-
10231004
let mfvToCref (mfv: FSharpMemberOrFunctionOrValue) =
10241005
let entityUrlBaseName = getUrlBaseNameForRegisteredEntity mfv.DeclaringEntity.Value
10251006

@@ -1051,13 +1032,16 @@ type internal CrossReferenceResolver(root, collectionName, qualify, extensions)
10511032
// See if we find the member that was intended, otherwise default to containing entity
10521033
tryGetShortMemberNameFromMemberName memberName
10531034
|> Option.bind (fun shortName ->
1054-
findIList (entity.MembersFunctionsAndValues) (fun mfv -> mfv.DisplayName = shortName))
1055-
|> Option.map mfvToCref
1056-
|> Option.defaultValue
1057-
{ IsInternal = true
1058-
ReferenceLink = internalCrossReference urlBaseName
1059-
NiceName = getMemberName 2 entity.HasFSharpModuleSuffix memberName }
1060-
|> Some
1035+
entity.MembersFunctionsAndValues
1036+
|> Seq.tryFind (fun mfv -> mfv.DisplayName = shortName))
1037+
|> function
1038+
| Some mb -> Some(mfvToCref mb)
1039+
| None ->
1040+
Some
1041+
{ IsInternal = true
1042+
ReferenceLink = internalCrossReference urlBaseName
1043+
NiceName = getMemberName 2 entity.HasFSharpModuleSuffix memberName }
1044+
10611045
| _ ->
10621046
// A reference to something external, currently assumed to be in .NET
10631047
let simple = getMemberName 2 false memberName

0 commit comments

Comments
 (0)