Skip to content

Commit e864cca

Browse files
committed
always inline nodes.splice(idx, 1, ...replacements)
1 parent 3629113 commit e864cca

File tree

1 file changed

+18
-32
lines changed

1 file changed

+18
-32
lines changed

packages/tailwindcss/src/walk.ts

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,6 @@ export interface VisitContext<T> {
3939
path: () => T[]
4040
}
4141

42-
function replace<T>(nodes: T[], index: number, replacements: T[]) {
43-
switch (replacements.length) {
44-
case 0:
45-
nodes.splice(index, 1)
46-
break
47-
case 1:
48-
nodes[index] = replacements[0]
49-
break
50-
default:
51-
nodes.splice(index, 1, ...replacements)
52-
break
53-
}
54-
}
55-
5642
export function walk<T extends object>(
5743
ast: T[],
5844
hooks:
@@ -137,17 +123,17 @@ function walkEnter<T extends { nodes?: T[] }>(
137123
// Replace current node, with new nodes. No need to change the offset
138124
// because we want to re-visit the current index, which now contains the
139125
// new nodes.
140-
replace(nodes, offset, result.nodes)
126+
nodes.splice(offset, 1, ...result.nodes)
141127
continue
142128
}
143129

144130
case WalkKind.ReplaceStop: {
145-
replace(nodes, offset, result.nodes) // Replace current node
131+
nodes.splice(offset, 1, ...result.nodes) // Replace current node
146132
return // Stop immediately
147133
}
148134

149135
case WalkKind.ReplaceSkip: {
150-
replace(nodes, offset, result.nodes) // Replace current node
136+
nodes.splice(offset, 1, ...result.nodes) // Replace current node
151137
stack[depth][1] += result.nodes.length // Advance to next sibling past replacements
152138
continue
153139
}
@@ -223,13 +209,13 @@ function walkExit<T extends { nodes?: T[] }>(
223209
return // Stop immediately
224210

225211
case WalkKind.ReplaceStop: {
226-
replace(nodes, offset, result.nodes)
212+
nodes.splice(offset, 1, ...result.nodes)
227213
return // Stop immediately
228214
}
229215

230216
case WalkKind.Replace:
231217
case WalkKind.ReplaceSkip: {
232-
replace(nodes, offset, result.nodes)
218+
nodes.splice(offset, 1, ...result.nodes)
233219
stack[depth][1] += result.nodes.length
234220
continue
235221
}
@@ -260,13 +246,13 @@ function walkExit<T extends { nodes?: T[] }>(
260246
return // Stop immediately
261247

262248
case WalkKind.ReplaceStop: {
263-
replace(nodes, index, result.nodes)
249+
nodes.splice(index, 1, ...result.nodes)
264250
return // Stop immediately
265251
}
266252

267253
case WalkKind.Replace:
268254
case WalkKind.ReplaceSkip: {
269-
replace(nodes, index, result.nodes)
255+
nodes.splice(index, 1, ...result.nodes)
270256
stack[depth][1] = index + result.nodes.length // Advance to next sibling past replacements
271257
continue
272258
}
@@ -346,12 +332,12 @@ function walkEnterExit<T extends { nodes?: T[] }>(
346332
return // Stop immediately
347333

348334
case WalkKind.ReplaceStop:
349-
replace(nodes, offset, result.nodes)
335+
nodes.splice(offset, 1, ...result.nodes)
350336
return // Stop immediately
351337

352338
case WalkKind.Replace:
353339
case WalkKind.ReplaceSkip:
354-
replace(nodes, offset, result.nodes)
340+
nodes.splice(offset, 1, ...result.nodes)
355341
stack[depth][1] += result.nodes.length // Advance to next sibling past replacements
356342
continue
357343

@@ -382,16 +368,16 @@ function walkEnterExit<T extends { nodes?: T[] }>(
382368
return // Stop immediately
383369

384370
case WalkKind.Replace:
385-
replace(nodes, offset, result.nodes)
371+
nodes.splice(offset, 1, ...result.nodes)
386372
stack[depth][1] += result.nodes.length // don't visit replacements' exits
387373
continue
388374

389375
case WalkKind.ReplaceStop:
390-
replace(nodes, offset, result.nodes)
376+
nodes.splice(offset, 1, ...result.nodes)
391377
return // Stop immediately
392378

393379
case WalkKind.ReplaceSkip:
394-
replace(nodes, offset, result.nodes)
380+
nodes.splice(offset, 1, ...result.nodes)
395381
stack[depth][1] += result.nodes.length // don't visit replacements' exits
396382
continue
397383

@@ -407,17 +393,17 @@ function walkEnterExit<T extends { nodes?: T[] }>(
407393

408394
case WalkKind.Replace: {
409395
// Replace current node; re-visit current index (enter on first replacement)
410-
replace(nodes, offset, result.nodes)
396+
nodes.splice(offset, 1, ...result.nodes)
411397
continue
412398
}
413399

414400
case WalkKind.ReplaceStop: {
415-
replace(nodes, offset, result.nodes)
401+
nodes.splice(offset, 1, ...result.nodes)
416402
return // Stop immediately
417403
}
418404

419405
case WalkKind.ReplaceSkip: {
420-
replace(nodes, offset, result.nodes)
406+
nodes.splice(offset, 1, ...result.nodes)
421407
stack[depth][1] += result.nodes.length // Advance to next sibling past replacements
422408
continue
423409
}
@@ -448,18 +434,18 @@ function walkEnterExit<T extends { nodes?: T[] }>(
448434
return // Stop immediately
449435

450436
case WalkKind.Replace: {
451-
replace(nodes, index, result.nodes)
437+
nodes.splice(index, 1, ...result.nodes)
452438
stack[depth][1] = index + result.nodes.length // Advance to next sibling past replacements
453439
continue
454440
}
455441

456442
case WalkKind.ReplaceStop: {
457-
replace(nodes, index, result.nodes)
443+
nodes.splice(index, 1, ...result.nodes)
458444
return // Stop immediately
459445
}
460446

461447
case WalkKind.ReplaceSkip: {
462-
replace(nodes, index, result.nodes)
448+
nodes.splice(index, 1, ...result.nodes)
463449
stack[depth][1] = index + result.nodes.length // Advance to next sibling past replacements
464450
continue
465451
}

0 commit comments

Comments
 (0)