@@ -525,29 +525,61 @@ and visitSynTypeDefn (defn : SynTypeDefn) : Stuff =
525525and visitSynTypeDefns ( defns : SynTypeDefn list ) : Stuff =
526526 Seq.collect visitSynTypeDefn defns
527527
528- and visitSynExceptionDefn ( defn : SynExceptionDefn ) : Stuff =
529- []
528+ and visitSynExceptionDefn ( x : SynExceptionDefn ) : Stuff =
529+ match x with
530+ | SynExceptionDefn( synExceptionDefnRepr, withKeyword, synMemberDefns, range) ->
531+ seq {
532+ yield ! visitSynExceptionDefnRepr synExceptionDefnRepr
533+ yield ! visitSynMemberDefns synMemberDefns
534+ }
530535
531- and visitSynBinding ( binding : SynBinding ) : Stuff =
532- [] // TODO
536+ and visitSynValData ( x : SynValData ) : Stuff =
537+ match x with
538+ | SynValData( synMemberFlagsOption, synValInfo, thisIdOpt) ->
539+ seq {
540+ match synMemberFlagsOption with | Some flags -> yield ! visitSynMemberFlags flags | None -> ()
541+ yield ! visitSynValInfo synValInfo
542+ }
543+
544+ and visitSynPats ( x : SynPat list ) : Stuff =
545+ Seq.collect visitSynPat x
546+
547+ and visitSynPat ( x : SynPat ) : Stuff =
548+ match x with
549+ | SynPat.Ands( synPats, range) ->
550+ visitSynPats synPats
551+ | SynPat.As( lhsPat, rhsPat, range) ->
552+ visitSynPats [ lhsPat; rhsPat]
553+
554+ and visitSynBinding ( x : SynBinding ) : Stuff =
555+ match x with
556+ | SynBinding.SynBinding( synAccessOption, synBindingKind, isInline, isMutable, synAttributeLists, preXmlDoc, synValData, headPat, synBindingReturnInfoOption, synExpr, range, debugPointAtBinding, synBindingTrivia) ->
557+ seq {
558+ match synAccessOption with | Some access -> yield ! visitSynAccess access | None -> ()
559+ yield ! visitSynAttributeLists synAttributeLists
560+ yield ! visitPreXmlDoc preXmlDoc
561+ yield ! visitSynValData synValData
562+ yield ! visitSynPat headPat
563+ }
564+ failwith unsupported
533565
534566and visitSynBindings ( bindings : SynBinding list ) : Stuff =
535567 Seq.collect visitSynBinding bindings
536568
537569and visitSynOpenDeclTarget ( target : SynOpenDeclTarget ) : Stuff =
538- [] // TODO
570+ failwith unsupported
539571
540572and visitSynComponentInfo ( info : SynComponentInfo ) : Stuff =
541- [] // TODO
573+ failwith unsupported
542574
543575and visitLongIdent ( ident : LongIdent ) : Stuff =
544- [] // TODO
576+ failwith unsupported
545577
546578and visitSynLongIdent ( ident : SynLongIdent ) : Stuff =
547579 [ ident]
548580
549581and visitSynExpr ( expr : SynExpr ) =
550- // TODO
582+ failwith unsupported
551583 match expr with
552584 | _ -> []
553585
@@ -584,14 +616,37 @@ let ``Single SynEnumCase contains range of constant`` () =
584616 let parseResults =
585617 getParseResults
586618 """
587- type Foo = One = 0x00000001
619+ module A1 = let a = 3
620+ module B =
621+ let b = [|
622+ A1.a
623+ |]
588624"""
589625
590- match parseResults with
591- | ParsedInput.ImplFile ( ParsedImplFileInput ( contents = [ SynModuleOrNamespace.SynModuleOrNamespace( decls = [
592- SynModuleDecl.Types( typeDefns = [
593- SynTypeDefn.SynTypeDefn( typeRepr =
594- SynTypeDefnRepr.Simple( simpleRepr = SynTypeDefnSimpleRepr.Enum( cases = [ SynEnumCase.SynEnumCase( valueRange = r) ])))])
595- ]) ])) ->
596- assertRange ( 2 , 17 ) ( 2 , 27 ) r
597- | _ -> Assert.Fail " Could not get valid AST"
626+ printfn $" %+A {parseResults}"
627+ let stuff = visit parseResults
628+ printfn $" %+A {stuff}"
629+ ()
630+
631+ module A1 = let a = 3
632+ module A2 = let a = 3
633+ module A3 = let a = 3
634+ module A4 =
635+ let a = 3
636+ module A1 =
637+ let a = 3
638+
639+ module B =
640+ open A2
641+ let b = [|
642+ A1.a
643+ A2.a
644+ A3.a
645+ |]
646+
647+ let c = A4.a
648+ let d = A4.A1.a
649+ open A4
650+ let e = A1.a
651+ open A1
652+ let f = a
0 commit comments