Skip to content

Commit 88562d6

Browse files
committed
WIP
1 parent d34459d commit 88562d6

1 file changed

Lines changed: 72 additions & 17 deletions

File tree

tests/FSharp.Compiler.Service.Tests2/TypeTests.fs

Lines changed: 72 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -525,29 +525,61 @@ and visitSynTypeDefn (defn : SynTypeDefn) : Stuff =
525525
and 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

534566
and visitSynBindings (bindings : SynBinding list) : Stuff =
535567
Seq.collect visitSynBinding bindings
536568

537569
and visitSynOpenDeclTarget (target : SynOpenDeclTarget) : Stuff =
538-
[] // TODO
570+
failwith unsupported
539571

540572
and visitSynComponentInfo (info : SynComponentInfo) : Stuff =
541-
[] // TODO
573+
failwith unsupported
542574

543575
and visitLongIdent (ident : LongIdent) : Stuff =
544-
[] // TODO
576+
failwith unsupported
545577

546578
and visitSynLongIdent (ident : SynLongIdent) : Stuff =
547579
[ident]
548580

549581
and 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

Comments
 (0)