@@ -243,13 +243,16 @@ type FlattenGroupsDeep<TGroups extends Groups> = unknown extends AsLinked<TGroup
243243 > ]
244244 : [ ]
245245;
246- type FlattenTokenDeep < TToken extends Token > = TToken extends { type : 'alternation' } ? [
247- ...FlattenTokenDeep < TToken [ 'left' ] > ,
248- ...FlattenTokenDeep < TToken [ 'right' ] >
249- ] : TToken extends { type : 'groups' }
250- ? FlattenGroupsDeep < TToken [ 'groups' ] >
246+ type FlattenTokenDeepInternal < TToken extends Token , Limit extends unknown [ ] > = Limit extends [ unknown , ...infer L ]
247+ ? TToken extends { type : 'alternation' } ? [
248+ ...FlattenTokenDeepInternal < TToken [ 'left' ] , L > ,
249+ ...FlattenTokenDeepInternal < TToken [ 'right' ] , L >
250+ ] : TToken extends { type : 'groups' }
251+ ? FlattenGroupsDeep < TToken [ 'groups' ] >
252+ : never
251253 : never
252254;
255+ type FlattenTokenDeep < TToken extends Token > = FlattenTokenDeepInternal < TToken , Range < 20 > > ;
253256// DFS
254257type IndexifyGroupsDeep < TGroups extends Groups , TIndex extends number > = unknown extends AsLinked < TGroups , infer First , infer Rest >
255258 ? [
@@ -270,7 +273,6 @@ type IndexifyTokenDeepInternal<TToken extends Token, TIndex extends number> = TT
270273 left : IndexifyTokenDeepInternal < TToken [ 'left' ] , TIndex > ,
271274 right : IndexifyTokenDeepInternal < TToken [ 'right' ] , Add <
272275 TIndex ,
273- // @ts -expect-error: this should terminate
274276 FlattenTokenDeep < TToken [ 'left' ] > [ 'length' ]
275277 & number
276278 > >
0 commit comments