@@ -85,6 +85,56 @@ class SeqPatternTests extends munit.FunSuite:
8585 .onChildren(" fields skip: last missing" )(tok1(), tok2())(" no" )
8686 .onChildren(" fields skip: empty" )()(" no" )
8787
88+ on(
89+ field(
90+ tok(tok1).withChildren:
91+ field(tok(tok2))
92+ ~ eof,
93+ )
94+ ~ eof
95+ | SeqPattern .pure(" no" ),
96+ )
97+ .onChildren(" fields withChildren: exact" )(tok1(tok2()))(tok2())
98+ .onChildren(" fields withChildren: missing parent" )(tok2(tok2()))(" no" )
99+ .onChildren(" fields withChildren: missing child" )(tok1(tok1()))(" no" )
100+ .onChildren(" fields parent: empty" )()(" no" )
101+
102+ on(
103+ field(
104+ anyNode.withChildren:
105+ parent(tok(tok1)) *> field(tok(tok2))
106+ ~ eof,
107+ )
108+ ~ eof
109+ | SeqPattern .pure(" no" ),
110+ )
111+ .onChildren(" fields parent: exact" )(tok1(tok2()))(tok2())
112+ .onChildren(" fields parent: missing parent" )(tok2(tok2()))(" no" )
113+ .onChildren(" fields parent: missing child" )(tok1(tok1()))(" no" )
114+ .onChildren(" fields parent: empty" )()(" no" )
115+
116+ on(
117+ skip(anyNode)
118+ ~ field(leftSibling(tok(tok1)) *> tok(tok2))
119+ ~ eof
120+ | SeqPattern .pure(" no" ),
121+ )
122+ .onChildren(" fields leftSibling: exact" )(tok1(), tok2())(tok2())
123+ .onChildren(" fields leftSibling: different left" )(tok2(), tok2())(" no" )
124+ .onChildren(" fields leftSibling: different right" )(tok1(), tok1())(" no" )
125+ .onChildren(" fields leftSibling: empty" )()(" no" )
126+
127+ on(
128+ field(rightSibling(tok(tok2)) *> tok(tok1))
129+ ~ skip(anyNode)
130+ ~ eof
131+ | SeqPattern .pure(" no" ),
132+ )
133+ .onChildren(" fields rightSibling: exact" )(tok1(), tok2())(tok1())
134+ .onChildren(" fields rightSibling: different left" )(tok2(), tok2())(" no" )
135+ .onChildren(" fields rightSibling: different right" )(tok1(), tok1())(" no" )
136+ .onChildren(" fields rightSibling: empty" )()(" no" )
137+
88138object PatternTests :
89139 object tok1 extends Token
90140 object tok2 extends Token
0 commit comments