Skip to content

Commit 1d08de5

Browse files
committed
WIP
1 parent 4e5593b commit 1d08de5

1 file changed

Lines changed: 113 additions & 19 deletions

File tree

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

Lines changed: 113 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ let rec visitSynModuleDecl (decl : SynModuleDecl) : Stuff =
1919
| SynModuleDecl.Expr(synExpr, range) ->
2020
visitSynExpr synExpr
2121
| SynModuleDecl.HashDirective(parsedHashDirective, range) ->
22-
[]
22+
visitHashDirective parsedHashDirective
2323
| SynModuleDecl.Let(isRecursive, synBindings, range) ->
2424
visitSynBindings synBindings
2525
| SynModuleDecl.Open(synOpenDeclTarget, range) ->
@@ -34,50 +34,144 @@ let rec visitSynModuleDecl (decl : SynModuleDecl) : Stuff =
3434
seq {
3535
yield! visitSynComponentInfo synComponentInfo
3636
yield! Seq.collect visitSynModuleDecl synModuleDecls
37+
yield! visitSynModuleDeclNestedModuleTrivia synModuleDeclNestedModuleTrivia
3738
}
3839

40+
and visitSynModuleDeclNestedModuleTrivia (x : SynModuleDeclNestedModuleTrivia) : Stuff =
41+
[] // TODO check
42+
43+
and visitHashDirective (x : ParsedHashDirective) : Stuff =
44+
[] // TODO Check
45+
3946
and visitSynIdent (x : SynIdent) : Stuff =
40-
[] // TODO Correct?
47+
[] // TODO Check
48+
49+
and visitSynTupleTypeSegment (x : SynTupleTypeSegment) : Stuff =
50+
match x with
51+
| SynTupleTypeSegment.Slash range ->
52+
[]
53+
| SynTupleTypeSegment.Star range ->
54+
[]
55+
| SynTupleTypeSegment.Type typeName ->
56+
visitSynType typeName
57+
58+
and visitSynTupleTypeSegments (x : SynTupleTypeSegment list) : Stuff =
59+
Seq.collect visitSynTupleTypeSegment x
60+
61+
and visitSynTypar (x : SynTypar) : Stuff =
62+
match x with
63+
| SynTypar.SynTypar(ident, typarStaticReq, isCompGen) ->
64+
[] // TODO check
65+
66+
and visitSynRationalConst (x : SynRationalConst) =
67+
[] // TODO check
68+
69+
and visitSynConst (x : SynConst) : Stuff =
70+
[] // TODO Check
71+
72+
and visitSynTypes (x : SynType list) : Stuff =
73+
Seq.collect visitSynType x
74+
75+
and visitTypeConstraints (x : SynTypeConstraint list) : Stuff =
76+
Seq.collect visitTypeConstraint x
77+
78+
and visitTypeConstraint (x : SynTypeConstraint) : Stuff =
79+
match x with
80+
| SynTypeConstraint.WhereTyparIsValueType(typar, range) ->
81+
failwith unsupported
82+
| SynTypeConstraint.WhereTyparIsReferenceType(typar, range) ->
83+
failwith unsupported
84+
| SynTypeConstraint.WhereTyparIsUnmanaged(typar, range) ->
85+
failwith unsupported
86+
| SynTypeConstraint.WhereTyparSupportsNull(typar, range) ->
87+
failwith unsupported
88+
| SynTypeConstraint.WhereTyparIsComparable(typar, range) ->
89+
failwith unsupported
90+
| SynTypeConstraint.WhereTyparIsEquatable(typar, range) ->
91+
failwith unsupported
92+
| SynTypeConstraint.WhereTyparDefaultsToType(typar, typeName: SynType, range) ->
93+
failwith unsupported
94+
| SynTypeConstraint.WhereTyparSubtypeOfType(typar, typeName: SynType, range) ->
95+
failwith unsupported
96+
| SynTypeConstraint.WhereTyparSupportsMember(typars: SynType, memberSig: SynMemberSig, range) ->
97+
failwith unsupported
98+
| SynTypeConstraint.WhereTyparIsEnum(typar, typeArgs: SynType list, range) ->
99+
failwith unsupported
100+
| SynTypeConstraint.WhereTyparIsDelegate(typar, typeArgs: SynType list, range) ->
101+
failwith unsupported
102+
| SynTypeConstraint.WhereSelfConstrained(selfConstraint, range) ->
103+
failwith unsupported
41104

42105
and visitSynType (x : SynType) : Stuff =
43106
match x with
44107
| SynType.Anon range ->
45108
[]
46109
| SynType.App(typeName, rangeOption, typeArgs, commaRanges, greaterRange, isPostfix, range) ->
47-
failwith unsupported
110+
seq {
111+
yield! visitSynType typeName
112+
yield! typeArgs |> Seq.collect visitSynType
113+
}
48114
| SynType.Array(rank, elementType, range) ->
49-
failwith unsupported
115+
visitSynType elementType
50116
| SynType.Fun(argType, returnType, range, synTypeFunTrivia) ->
51-
failwith unsupported
117+
seq {
118+
yield! visitSynType argType
119+
yield! visitSynType returnType
120+
}
52121
| SynType.Or(lhsType, rhsType, range, synTypeOrTrivia) ->
53-
failwith unsupported
122+
seq {
123+
yield! visitSynType lhsType
124+
yield! visitSynType rhsType
125+
}
54126
| SynType.Paren(innerType, range) ->
55-
failwith unsupported
127+
visitSynType innerType
56128
| SynType.Tuple(isStruct, synTupleTypeSegments, range) ->
57-
failwith unsupported
129+
visitSynTupleTypeSegments synTupleTypeSegments
58130
| SynType.Var(synTypar, range) ->
59-
failwith unsupported
131+
visitSynTypar synTypar
60132
| SynType.AnonRecd(isStruct, fields, range) ->
61-
failwith unsupported
133+
fields |> Seq.collect (fun (id, f) -> visitSynType f)
62134
| SynType.HashConstraint(innerType, range) ->
63-
failwith unsupported
135+
visitSynType innerType
64136
| SynType.LongIdent synLongIdent ->
65-
failwith unsupported
137+
visitSynLongIdent synLongIdent
66138
| SynType.MeasureDivide(synType, divisor, range) ->
67-
failwith unsupported
139+
seq {
140+
yield! visitSynType synType
141+
yield! visitSynType divisor
142+
}
68143
| SynType.MeasurePower(baseMeasure, synRationalConst, range) ->
69-
failwith unsupported
144+
seq {
145+
yield! visitSynType baseMeasure
146+
yield! visitSynRationalConst synRationalConst
147+
}
70148
| SynType.SignatureParameter(synAttributeLists, optional, identOption, usedType, range) ->
71-
failwith unsupported
149+
seq {
150+
yield! visitSynAttributeLists synAttributeLists
151+
yield! visitSynType usedType
152+
}
72153
| SynType.StaticConstant(synConst, range) ->
73-
failwith unsupported
154+
visitSynConst synConst
74155
| SynType.LongIdentApp(typeName, synLongIdent, rangeOption, typeArgs, commaRanges, greaterRange, range) ->
75-
failwith unsupported
156+
seq {
157+
yield! visitSynType typeName
158+
yield! visitSynLongIdent synLongIdent
159+
yield! visitSynTypes typeArgs
160+
}
76161
| SynType.StaticConstantExpr(synExpr, range) ->
77-
failwith unsupported
162+
seq {
163+
yield! visitSynExpr synExpr
164+
}
78165
| SynType.StaticConstantNamed(synType, value, range) ->
79-
failwith unsupported
166+
seq {
167+
yield! visitSynType synType
168+
yield! visitSynType value
169+
}
80170
| SynType.WithGlobalConstraints(typeName, synTypeConstraints, range) ->
171+
seq {
172+
yield! visitSynType typeName
173+
yield! visitTypeConstraints synTypeConstraints
174+
}
81175
failwith unsupported
82176

83177
and visitPreXmlDoc (doc : FSharp.Compiler.Xml.PreXmlDoc) : Stuff =

0 commit comments

Comments
 (0)