@@ -168,7 +168,7 @@ describe('recursion', () => {
168168 captureTransfers : new Map ( [ [ 1 , [ 2 ] ] ] ) ,
169169 } ) ) . toEqual ( {
170170 pattern : '(a)(?:(a)(?:)?(b))?(b)' ,
171- captureTransfers : new Map ( [ [ 1 , [ 4 ] ] ] ) ,
171+ captureTransfers : new Map ( [ [ 1 , [ 3 , 4 ] ] ] ) ,
172172 hiddenCaptures : [ 2 , 3 ] ,
173173 } ) ;
174174 } ) ;
@@ -179,15 +179,15 @@ describe('recursion', () => {
179179 hiddenCaptures : [ 4 ] ,
180180 } ) ) . toEqual ( {
181181 pattern : '()(()(a)()(?:()(a)()(?:)?b)?b)' ,
182- captureTransfers : new Map ( [ [ 1 , [ 7 ] ] ] ) ,
182+ captureTransfers : new Map ( [ [ 1 , [ 4 , 7 ] ] ] ) ,
183183 hiddenCaptures : [ 4 , 6 , 7 , 8 ] ,
184184 } ) ;
185185 expect ( recursion ( r `()(a\g<2&R=2>?()(b)())` , {
186186 captureTransfers : new Map ( [ [ 1 , [ 4 ] ] ] ) ,
187187 hiddenCaptures : [ 4 ] ,
188188 } ) ) . toEqual ( {
189189 pattern : '()(a(?:a(?:)?()(b)())?()(b)())' ,
190- captureTransfers : new Map ( [ [ 1 , [ 7 ] ] ] ) ,
190+ captureTransfers : new Map ( [ [ 1 , [ 4 , 7 ] ] ] ) ,
191191 hiddenCaptures : [ 7 , 3 , 4 , 5 ] , // unsorted
192192 } ) ;
193193 } ) ;
@@ -197,7 +197,7 @@ describe('recursion', () => {
197197 captureTransfers : new Map ( [ [ 1 , [ 3 ] ] ] ) ,
198198 } ) ) . toEqual ( {
199199 pattern : '((a)(?:(a)(?:)?(b))?(b))' ,
200- captureTransfers : new Map ( [ [ 1 , [ 5 ] ] ] ) ,
200+ captureTransfers : new Map ( [ [ 1 , [ 4 , 5 ] ] ] ) ,
201201 hiddenCaptures : [ 3 , 4 ] ,
202202 } ) ;
203203 } ) ;
@@ -208,23 +208,23 @@ describe('recursion', () => {
208208 captureTransfers : new Map ( [ [ 1 , [ 3 ] ] , [ 2 , [ 4 ] ] ] ) ,
209209 } ) ) . toEqual ( {
210210 pattern : '(?<r>(a)(?:(a)(?:)?b)?b) ((a)(?:(a)(?:)?b)?b)' ,
211- captureTransfers : new Map ( [ [ 1 , [ 4 ] ] , [ 2 , [ 6 ] ] ] ) ,
211+ captureTransfers : new Map ( [ [ 1 , [ 4 ] ] , [ 2 , [ 5 , 6 ] ] ] ) ,
212212 hiddenCaptures : [ 3 , 6 ] ,
213213 } ) ;
214214 // Capture in right contents of recursions
215215 expect ( recursion ( r `(?<r>a\g<r&R=2>?(b)) (a\g<3&R=2>?(b))` , {
216216 captureTransfers : new Map ( [ [ 1 , [ 3 ] ] , [ 2 , [ 4 ] ] ] ) ,
217217 } ) ) . toEqual ( {
218218 pattern : '(?<r>a(?:a(?:)?(b))?(b)) (a(?:a(?:)?(b))?(b))' ,
219- captureTransfers : new Map ( [ [ 1 , [ 4 ] ] , [ 3 , [ 6 ] ] ] ) ,
219+ captureTransfers : new Map ( [ [ 1 , [ 4 ] ] , [ 3 , [ 5 , 6 ] ] ] ) ,
220220 hiddenCaptures : [ 2 , 5 ] ,
221221 } ) ;
222222 // Capture in left and right contents of recursions
223223 expect ( recursion ( r `(?<r>(a)\g<r&R=2>?(b)) ((a)\g<4&R=2>?(b))` , {
224224 captureTransfers : new Map ( [ [ 1 , [ 4 ] ] , [ 2 , [ 5 ] ] , [ 3 , [ 6 ] ] ] ) ,
225225 } ) ) . toEqual ( {
226226 pattern : '(?<r>(a)(?:(a)(?:)?(b))?(b)) ((a)(?:(a)(?:)?(b))?(b))' ,
227- captureTransfers : new Map ( [ [ 1 , [ 6 ] ] , [ 2 , [ 8 ] ] , [ 5 , [ 10 ] ] ] ) ,
227+ captureTransfers : new Map ( [ [ 1 , [ 6 ] ] , [ 2 , [ 7 , 8 ] ] , [ 5 , [ 9 , 10 ] ] ] ) ,
228228 hiddenCaptures : [ 3 , 4 , 8 , 9 ] ,
229229 } ) ;
230230 // Triple recursion with capture transfer to middle (Oniguruma: `\g<a> (?<a>a\g<b>?b) (?<b>c\g<a>?d)`)
@@ -233,7 +233,7 @@ describe('recursion', () => {
233233 hiddenCaptures : [ 1 , 2 , 4 , 6 ] ,
234234 } ) ) . toEqual ( {
235235 pattern : '(a(c(?:a(c(?:)?d)?b)?d)?b) (?<a>a(c(?:a(c(?:)?d)?b)?d)?b) (?<b>c(a(?:c(a(?:)?b)?d)?b)?d)' ,
236- captureTransfers : new Map ( [ [ 4 , [ 9 ] ] ] ) ,
236+ captureTransfers : new Map ( [ [ 4 , [ 8 , 9 ] ] ] ) ,
237237 hiddenCaptures : [ 1 , 2 , 5 , 8 , 3 , 6 , 9 ] , // unsorted
238238 } ) ;
239239 // Same as above but with depth 3
@@ -242,7 +242,7 @@ describe('recursion', () => {
242242 hiddenCaptures : [ 1 , 2 , 4 , 6 ] ,
243243 } ) ) . toEqual ( {
244244 pattern : '(a(c(?:a(c(?:a(c(?:)?d)?b)?d)?b)?d)?b) (?<a>a(c(?:a(c(?:a(c(?:)?d)?b)?d)?b)?d)?b) (?<b>c(a(?:c(a(?:c(a(?:)?b)?d)?b)?d)?b)?d)' ,
245- captureTransfers : new Map ( [ [ 5 , [ 12 ] ] ] ) ,
245+ captureTransfers : new Map ( [ [ 5 , [ 10 , 11 , 12 ] ] ] ) ,
246246 hiddenCaptures : [ 1 , 2 , 6 , 10 , 3 , 4 , 7 , 8 , 11 , 12 ] , // unsorted
247247 } ) ;
248248 } ) ;
0 commit comments