Skip to content

Commit 9e09a78

Browse files
authored
Stop inserting space in LESS property access (#14103)
1 parent 0c5d4f3 commit 9e09a78

File tree

5 files changed

+81
-6
lines changed

5 files changed

+81
-6
lines changed

changelog_unreleased/less/14103.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#### Do not insert space in LESS property access (#14103 by @fisker)
2+
3+
<!-- prettier-ignore -->
4+
```less
5+
// Input
6+
a {
7+
color: @colors[@white];
8+
}
9+
10+
// Prettier stable
11+
a {
12+
color: @colors[ @white];
13+
}
14+
15+
// Prettier main
16+
<Same as input>
17+
```

src/language-css/clean.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,27 @@ function clean(ast, newObj, parent) {
183183
});
184184
}
185185
}
186+
187+
// We parse `@var[ foo ]` and `@var[foo]` differently
188+
if (
189+
ast.type === "value-comma_group" &&
190+
ast.groups.some(
191+
(node) =>
192+
(node.type === "value-atword" && node.value.endsWith("[")) ||
193+
(node.type === "value-word" && node.value.startsWith("]"))
194+
)
195+
) {
196+
return {
197+
type: "value-atword",
198+
value: ast.groups.map((node) => node.value).join(""),
199+
group: {
200+
open: null,
201+
close: null,
202+
groups: [],
203+
type: "value-paren_group",
204+
},
205+
};
206+
}
186207
}
187208

188209
clean.ignoredProperties = ignoredProperties;

src/language-css/printer-postcss.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,26 @@ function genericPrint(path, options, print) {
621621
}
622622

623623
// Ignore `@` in Less (i.e. `@@var;`)
624-
if (iNode.type === "value-atword" && iNode.value === "") {
624+
if (
625+
iNode.type === "value-atword" &&
626+
(iNode.value === "" ||
627+
/*
628+
@var[ @notVarNested ][notVar]
629+
^^^^^
630+
*/
631+
iNode.value.endsWith("["))
632+
) {
633+
continue;
634+
}
635+
636+
/*
637+
@var[ @notVarNested ][notVar]
638+
^^^^^^^^^
639+
*/
640+
if (
641+
iNextNode.type === "value-word" &&
642+
iNextNode.value.startsWith("]")
643+
) {
625644
continue;
626645
}
627646

tests/format/less/case/__snapshots__/jsfmt.spec.js.snap

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -389,9 +389,15 @@ printWidth: 80
389389
canChangeCase: @var[@notVarNested][notVar];
390390
canChangeCase: @var[ @notVarNested][notVar];
391391
canChangeCase: @var[@notVarNested ][notVar];
392+
canChangeCase: @var[ @notVarNested ][notVar];
393+
canChangeCase: @var[@notVarNested][notVar];
392394
canChangeCase: @var[@notVarNested][ notVar];
393395
canChangeCase: @var[@notVarNested][notVar ];
396+
canChangeCase: @var[@notVarNested][ notVar ];
394397
canChangeCase: @var[notVar];
398+
canChangeCase: @var[ notVar];
399+
canChangeCase: @var[notVar ];
400+
canChangeCase: @var[ notVar ];
395401
}
396402
397403
=====================================output=====================================
@@ -453,11 +459,17 @@ printWidth: 80
453459
};
454460
455461
@not-var {
456-
canchangecase: @var[ @notVarNested][notVar];
457-
canchangecase: @var[ @notVarNested][notVar];
458-
canchangecase: @var[ @notVarNested ][notVar];
459-
canchangecase: @var[ @notVarNested][ notVar];
460-
canchangecase: @var[ @notVarNested][notVar ];
462+
canchangecase: @var[@notVarNested][notVar];
463+
canchangecase: @var[@notVarNested][notVar];
464+
canchangecase: @var[@notVarNested][notVar];
465+
canchangecase: @var[@notVarNested][notVar];
466+
canchangecase: @var[@notVarNested][notVar];
467+
canchangecase: @var[@notVarNested][notVar];
468+
canchangecase: @var[@notVarNested][notVar];
469+
canchangecase: @var[@notVarNested][notVar];
470+
canchangecase: @var[notVar];
471+
canchangecase: @var[notVar];
472+
canchangecase: @var[notVar];
461473
canchangecase: @var[notVar];
462474
}
463475

tests/format/less/case/variable.less

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,13 @@
5959
canChangeCase: @var[@notVarNested][notVar];
6060
canChangeCase: @var[ @notVarNested][notVar];
6161
canChangeCase: @var[@notVarNested ][notVar];
62+
canChangeCase: @var[ @notVarNested ][notVar];
63+
canChangeCase: @var[@notVarNested][notVar];
6264
canChangeCase: @var[@notVarNested][ notVar];
6365
canChangeCase: @var[@notVarNested][notVar ];
66+
canChangeCase: @var[@notVarNested][ notVar ];
6467
canChangeCase: @var[notVar];
68+
canChangeCase: @var[ notVar];
69+
canChangeCase: @var[notVar ];
70+
canChangeCase: @var[ notVar ];
6571
}

0 commit comments

Comments
 (0)