Skip to content

Commit b8ab100

Browse files
committed
remove unnecessary clones
1 parent 85ab82c commit b8ab100

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

packages/tailwindcss/src/variants.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,11 +1213,21 @@ export function substituteAtVariant(ast: AstNode[], designSystem: DesignSystem):
12131213
if (variantNode.kind !== 'at-rule' || variantNode.name !== '@variant') return
12141214

12151215
let nodes: AstNode[] = []
1216-
for (let compoundVariants of segment(variantNode.params, ',')) {
1216+
let compoundVariants = segment(variantNode.params, ',')
1217+
for (let [idx, compoundVariant] of compoundVariants.entries()) {
12171218
// Starting with the `&` rule node
1218-
let node = styleRule('&', variantNode.nodes.map(cloneAstNode))
1219+
//
1220+
// Only clone the nodes when we have multiple compound variants to deal
1221+
// with. The last one can use the original nodes. We do need unique AST
1222+
// nodes for sourcemap `dst` location information.
1223+
let node = styleRule(
1224+
'&',
1225+
idx === compoundVariants.length - 1
1226+
? variantNode.nodes
1227+
: variantNode.nodes.map(cloneAstNode),
1228+
)
12191229

1220-
let stackedVariants = segment(compoundVariants, ':')
1230+
let stackedVariants = segment(compoundVariant, ':')
12211231
for (let i = stackedVariants.length - 1; i >= 0; --i) {
12221232
let variant = stackedVariants[i].trim()
12231233

0 commit comments

Comments
 (0)