Skip to content

Commit ce56d5d

Browse files
authored
Fix unexpected change of syntax in computed EditInfo (#8638)
1 parent 4066d12 commit ce56d5d

File tree

5 files changed

+31
-6
lines changed

5 files changed

+31
-6
lines changed

.changeset/eight-donkeys-repair.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"stylelint": patch
3+
---
4+
5+
Fixed: unexpected change of syntax in computed `EditInfo`

lib/__tests__/fixtures/postcss-naive-css-in-js.cjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ function stringify(node, builder) {
4141
node.each((root) => {
4242
builder(`css\`${root}\`;`, root);
4343
});
44+
} else {
45+
postcss.stringify(node, builder);
4446
}
4547
}
4648

lib/__tests__/standalone-compute-edit-info.test.mjs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,22 @@ describe('standalone with computeEditInfo', () => {
110110
// Second warning should not have fix due to overlapping range
111111
expect(results[0].warnings[1].fix).toBeUndefined();
112112
});
113+
114+
it('should use the correct syntax when computing EditInfo', async () => {
115+
const { results } = await standalone({
116+
customSyntax: 'postcss-scss',
117+
code: '// a comment\na {\n\tcolor: red;\n}',
118+
config: {
119+
rules: {
120+
'rule-empty-line-before': 'always',
121+
},
122+
},
123+
computeEditInfo: true,
124+
});
125+
126+
expect(results[0].warnings).toHaveLength(1);
127+
expect(results[0].warnings[0].fix).toBeTruthy();
128+
expect(results[0].warnings[0].fix.text).toBe('\n\n');
129+
expect(results[0].warnings[0].fix.range).toEqual([12, 13]);
130+
});
113131
});

lib/utils/report.cjs

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/utils/report.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,10 @@ function isFixApplied({ fix, line, result: { stylelint }, ruleName }) {
247247
* @param {Problem & { line: number }} problem
248248
* @returns {{range: [number, number], text: string} | undefined}
249249
*/
250-
function computeEditInfo({ fix, line, result: { stylelint }, ruleName }) {
250+
function computeEditInfo({ fix, line, result, ruleName }) {
251251
if (!fix) return;
252252

253-
const { disabledRanges, config = {}, rangesOfComputedEditInfos } = stylelint;
253+
const { disabledRanges, config = {}, rangesOfComputedEditInfos } = result.stylelint;
254254

255255
if (!config.computeEditInfo || config.fix) return;
256256

@@ -274,7 +274,7 @@ function computeEditInfo({ fix, line, result: { stylelint }, ruleName }) {
274274
// Apply the fix
275275
apply();
276276

277-
let fixData = { range: fixedNodeRange, text: node.toString() };
277+
let fixData = { range: fixedNodeRange, text: node.toString(result.opts?.syntax) };
278278

279279
fixData = addSemicolonForEditInfo(node, fixData);
280280

0 commit comments

Comments
 (0)