Skip to content

Commit 91f968d

Browse files
Add doc comment examples to Pat*Node types in SyntaxOak.fs
Adds short '/// Example: ...' doc comments to all Pattern node types, following the same pattern as the Expr*Node comments added in #3216. Closes #2991 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 6b05c44 commit 91f968d

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/Fantomas.Core/SyntaxOak.fs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,9 @@ type Type =
475475
| Intersection n -> n
476476

477477
/// A pattern composed from a left hand-side pattern, a single text token/operator and a right hand-side pattern.
478+
/// Example (Or): `A | B`
479+
/// Example (As): `x as y`
480+
/// Example (ListCons): `head :: tail`
478481
type PatLeftMiddleRight(lhs: Pattern, middle: Choice<SingleTextNode, string>, rhs: Pattern, range) =
479482
inherit NodeBase(range)
480483

@@ -489,12 +492,14 @@ type PatLeftMiddleRight(lhs: Pattern, middle: Choice<SingleTextNode, string>, rh
489492
member val Middle = middle
490493
member val RightHandSide = rhs
491494

495+
/// Example: `pat1 & pat2 & pat3`
492496
type PatAndsNode(pats: Pattern list, range) =
493497
inherit NodeBase(range)
494498

495499
override val Children: Node array = [| yield! List.map Pattern.Node pats |]
496500
member val Patterns = pats
497501

502+
/// Example: `[<Attr>] pat: Type` (attributed/typed parameter pattern)
498503
type PatParameterNode(attributes: MultipleAttributeListNode option, pat: Pattern, t: Type option, range) =
499504
inherit NodeBase(range)
500505

@@ -507,6 +512,7 @@ type PatParameterNode(attributes: MultipleAttributeListNode option, pat: Pattern
507512
member val Pattern = pat
508513
member val Type = t
509514

515+
/// Example: `( * )` (operator name used as a pattern in member definitions)
510516
type PatNamedParenStarIdentNode
511517
(
512518
accessibility: SingleTextNode option,
@@ -528,6 +534,7 @@ type PatNamedParenStarIdentNode
528534
member val Name = name
529535
member val ClosingParen = closingParen
530536

537+
/// Example: `x` or `private x` (a simple named binding pattern)
531538
type PatNamedNode(accessibility: SingleTextNode option, name: SingleTextNode, range) =
532539
inherit NodeBase(range)
533540

@@ -542,6 +549,7 @@ type NamePatPairNode(fieldName: IdentListNode, equals: SingleTextNode, pat: Patt
542549
member val Equals = equals
543550
member val Pattern = pat
544551

552+
/// Example: `MyUnion(field1 = x; field2 = y)` (named field patterns on a union case)
545553
type PatNamePatPairsNode
546554
(
547555
identifier: IdentListNode,
@@ -566,6 +574,7 @@ type PatNamePatPairsNode
566574
member val Pairs = pairs
567575
member val ClosingParen = closingParen
568576

577+
/// Example: `Some x` or `MyModule.MyDU value` (a union case or long-ident pattern with optional sub-patterns)
569578
type PatLongIdentNode
570579
(
571580
accessibility: SingleTextNode option,
@@ -587,6 +596,7 @@ type PatLongIdentNode
587596
member val TyparDecls = typarDecls
588597
member val Parameters = parameters
589598

599+
/// Example: `(pat)` (a parenthesised pattern)
590600
type PatParenNode(openingParen: SingleTextNode, pat: Pattern, closingParen: SingleTextNode, range) =
591601
inherit NodeBase(range)
592602

@@ -596,6 +606,7 @@ type PatParenNode(openingParen: SingleTextNode, pat: Pattern, closingParen: Sing
596606
member val Pattern = pat
597607
member val ClosingParen = closingParen
598608

609+
/// Example: `a, b, c` (a tuple pattern)
599610
type PatTupleNode(items: Choice<Pattern, SingleTextNode> list, range) =
600611
inherit NodeBase(range)
601612

@@ -607,12 +618,14 @@ type PatTupleNode(items: Choice<Pattern, SingleTextNode> list, range) =
607618

608619
member val Items = items
609620

621+
/// Example: `struct (a, b)` (a struct tuple pattern)
610622
type PatStructTupleNode(pats: Pattern list, range) =
611623
inherit NodeBase(range)
612624

613625
override val Children: Node array = [| yield! (List.map Pattern.Node pats) |]
614626
member val Patterns = pats
615627

628+
/// Example: `[a; b; c]` (list pattern) or `[| a; b; c |]` (array pattern)
616629
type PatArrayOrListNode(openToken: SingleTextNode, pats: Pattern list, closeToken: SingleTextNode, range) =
617630
inherit NodeBase(range)
618631

@@ -622,6 +635,7 @@ type PatArrayOrListNode(openToken: SingleTextNode, pats: Pattern list, closeToke
622635
member val Patterns = pats
623636
member val CloseToken = closeToken
624637

638+
/// Example: `{ Field1 = x; Field2 = y }` (a record pattern)
625639
type PatRecordNode(openingNode: SingleTextNode, fields: NamePatPairNode list, closingNode: SingleTextNode, range) =
626640
inherit NodeBase(range)
627641

@@ -630,6 +644,7 @@ type PatRecordNode(openingNode: SingleTextNode, fields: NamePatPairNode list, cl
630644
member val Fields = fields
631645
member val ClosingNode = closingNode
632646

647+
/// Example: `:? SomeType` (a type-test pattern)
633648
type PatIsInstNode(token: SingleTextNode, t: Type, range) =
634649
inherit NodeBase(range)
635650
override val Children: Node array = [| yield token; yield Type.Node t |]

0 commit comments

Comments
 (0)