Skip to content

Commit 4346060

Browse files
authored
Merge pull request #263 from MoiraeSoftware/repo-assist/fix-issue-262-extract-types-helper-0936b8e560c1adb3
[Repo Assist] Refactor: extract shared `extractTypesFromDecls` helper in `Ast.fs` — closes #262
2 parents e1b9e86 + 7ca76d3 commit 4346060

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

src/Myriad.Core/Ast.fs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -212,22 +212,20 @@ module Ast =
212212
|> List.collect (fun n -> n.Attributes)
213213
|> List.tryFind (typeNameMatches typeof<'a>)
214214

215-
let extractTypeDefn (ast: ParsedInput) =
216-
let rec extractTypes (moduleDecls: SynModuleDecl list) (ns: LongIdent) =
217-
[ for moduleDecl in moduleDecls do
218-
match moduleDecl with
219-
| SynModuleDecl.Types(types, _) ->
220-
yield (ns, types)
221-
| SynModuleDecl.NestedModule(SynComponentInfo(_, _, _, longId, _, _, _, _), _, decls, _, _, _) ->
222-
let combined = longId |> List.append ns
223-
yield! (extractTypes decls combined)
224-
| other -> ()
225-
]
215+
let rec private extractTypesFromDecls (moduleDecls: SynModuleDecl list) (ns: LongIdent) =
216+
[ for moduleDecl in moduleDecls do
217+
match moduleDecl with
218+
| SynModuleDecl.Types (types, _) -> yield (ns, types)
219+
| SynModuleDecl.NestedModule (SynComponentInfo (_, _, _, longId, _, _, _, _), _, decls, _, _, _) ->
220+
let combined = longId |> List.append ns
221+
yield! extractTypesFromDecls decls combined
222+
| _ -> () ]
226223

224+
let extractTypeDefn (ast: ParsedInput) =
227225
[ match ast with
228226
| ParsedInput.ImplFile(ParsedImplFileInput(_name, _isScript, _qualifiedNameOfFile, _scopedPragmas, _hashDirectives, modules, _g, _, _)) ->
229227
for SynModuleOrNamespace(namespaceId, _isRec, _isModule, moduleDecls, _preXmlDoc, _attributes, _access, _, _) as ns in modules do
230-
yield! extractTypes moduleDecls namespaceId
228+
yield! extractTypesFromDecls moduleDecls namespaceId
231229
| _ -> () ]
232230

233231
let isRecord (SynTypeDefn(_componentInfo, typeDefRepr, _memberDefs,_,_,_)) =
@@ -266,19 +264,10 @@ module Ast =
266264
| _ -> () ]
267265

268266
let getTypeDefns (nsOrModule: SynModuleOrNamespace) =
269-
let rec extractTypes (moduleDecls: SynModuleDecl list) (ns: LongIdent) =
270-
[ for moduleDecl in moduleDecls do
271-
match moduleDecl with
272-
| SynModuleDecl.Types (types, _) -> yield (ns, types)
273-
| SynModuleDecl.NestedModule (SynComponentInfo (_attribs, _typeParams, _constraints, longId, _xmlDoc, _preferPostfix, _accessibility, _range), _isRec, decls, _local, _outerRange,_trivia) ->
274-
let combined = longId |> List.append ns
275-
yield! (extractTypes decls combined)
276-
| _other -> () ]
277-
278267
let (SynModuleOrNamespace (namespaceId, _isRec, _isModule, moduleDecls, _preXmlDoc, _attributes, _access, _range, _)) =
279268
nsOrModule
280269

281-
extractTypes moduleDecls namespaceId
270+
extractTypesFromDecls moduleDecls namespaceId
282271

283272
let records (nsOrModule: SynModuleOrNamespace) =
284273
getTypeDefns nsOrModule |> filterTypes isRecord

0 commit comments

Comments
 (0)