@@ -207,12 +207,21 @@ type SynPatListConsTrivia =
207207 ColonColonRange: range
208208 }
209209
210+ /// Represents the leading keyword in a SynTypeDefn or SynTypeDefnSig
211+ [<NoEquality; NoComparison; RequireQualifiedAccess>]
212+ type SynTypeDefnLeadingKeyword =
213+ | Type of range
214+ | And of range
215+ // Can happen in SynMemberDefn.NestedType or SynMemberSig.NestedType
216+ | StaticType of staticRange : range * typeRange : range
217+ | Synthetic
218+
210219/// Represents additional information for SynTypeDefn
211220[<NoEquality; NoComparison>]
212221type SynTypeDefnTrivia =
213222 {
214- /// The syntax range of the `type` keyword.
215- TypeKeyword : range option
223+ /// The syntax range of the `type` or `and` keyword.
224+ LeadingKeyword : SynTypeDefnLeadingKeyword
216225
217226 /// The syntax range of the `=` token.
218227 EqualsRange: range option
@@ -227,8 +236,8 @@ type SynTypeDefnTrivia =
227236[<NoEquality; NoComparison>]
228237type SynTypeDefnSigTrivia =
229238 {
230- /// The syntax range of the `type` keyword.
231- TypeKeyword : range option
239+ /// The syntax range of the `type` or `and` keyword.
240+ LeadingKeyword : SynTypeDefnLeadingKeyword
232241
233242 /// The syntax range of the `=` token.
234243 EqualsRange: range option
@@ -321,26 +330,27 @@ type SynModuleSigDeclNestedModuleTrivia =
321330
322331 static member Zero : SynModuleSigDeclNestedModuleTrivia
323332
333+ /// Represents the leading keyword in a SynModuleOrNamespace or SynModuleOrNamespaceSig
334+ [<NoEquality; NoComparison; RequireQualifiedAccess>]
335+ type SynModuleOrNamespaceLeadingKeyword =
336+ | Module of moduleRange : range
337+ | Namespace of namespaceRange : range
338+ | None
339+
324340/// Represents additional information for SynModuleOrNamespace
325341[<NoEquality; NoComparison>]
326342type SynModuleOrNamespaceTrivia =
327343 {
328- /// The syntax range of the `module` keyword
329- ModuleKeyword: range option
330-
331- /// The syntax range of the `namespace` keyword
332- NamespaceKeyword: range option
344+ /// The syntax range of the `module` or `namespace` keyword
345+ LeadingKeyword: SynModuleOrNamespaceLeadingKeyword
333346 }
334347
335348/// Represents additional information for SynModuleOrNamespaceSig
336349[<NoEquality; NoComparison>]
337350type SynModuleOrNamespaceSigTrivia =
338351 {
339- /// The syntax range of the `module` keyword
340- ModuleKeyword: range option
341-
342- /// The syntax range of the `namespace` keyword
343- NamespaceKeyword: range option
352+ /// The syntax range of the `module` or `namespace` keyword
353+ LeadingKeyword: SynModuleOrNamespaceLeadingKeyword
344354 }
345355
346356/// Represents additional information for SynValSig
0 commit comments