Skip to content

Commit df33374

Browse files
alexander-akaitjonathantneal
authored andcommitted
fix: do not create invalid combinator before comment
1 parent 41c84d3 commit df33374

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

src/__tests__/comments.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,50 @@ test('ending in comment', ".bar /* comment 3 */", (t, tree) => {
3838
t.deepEqual(classname.spaces.after, ' ');
3939
t.deepEqual(classname.raws.spaces.after, ' /* comment 3 */');
4040
});
41+
42+
test('comments in selector list', 'h2, /*test*/ h4', (t, tree) => {
43+
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
44+
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2');
45+
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, ' ');
46+
t.deepEqual(tree.nodes[1].nodes[0].type, 'comment');
47+
t.deepEqual(tree.nodes[1].nodes[0].value, '/*test*/');
48+
t.deepEqual(tree.nodes[1].nodes[1].rawSpaceBefore, ' ');
49+
t.deepEqual(tree.nodes[1].nodes[1].type, 'tag');
50+
t.deepEqual(tree.nodes[1].nodes[1].value, 'h4');
51+
});
52+
53+
test('comments in selector list (2)', 'h2,/*test*/h4', (t, tree) => {
54+
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
55+
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2');
56+
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, '');
57+
t.deepEqual(tree.nodes[1].nodes[0].type, 'comment');
58+
t.deepEqual(tree.nodes[1].nodes[0].value, '/*test*/');
59+
t.deepEqual(tree.nodes[1].nodes[1].type, 'tag');
60+
t.deepEqual(tree.nodes[1].nodes[1].value, 'h4');
61+
t.deepEqual(tree.nodes[1].nodes[1].rawSpaceBefore, '');
62+
});
63+
64+
test('comments in selector list (3)', 'h2/*test*/, h4', (t, tree) => {
65+
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
66+
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2');
67+
t.deepEqual(tree.nodes[0].nodes[1].rawSpaceBefore, '');
68+
t.deepEqual(tree.nodes[0].nodes[1].type, 'comment');
69+
t.deepEqual(tree.nodes[0].nodes[1].value, '/*test*/');
70+
t.deepEqual(tree.nodes[1].nodes[0].type, 'tag');
71+
t.deepEqual(tree.nodes[1].nodes[0].value, 'h4');
72+
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, ' ');
73+
});
74+
75+
test('comments in selector list (4)', 'h2, /*test*/ /*test*/ h4', (t, tree) => {
76+
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag');
77+
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2');
78+
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, ' ');
79+
t.deepEqual(tree.nodes[1].nodes[0].type, 'comment');
80+
t.deepEqual(tree.nodes[1].nodes[0].value, '/*test*/');
81+
t.deepEqual(tree.nodes[1].nodes[1].rawSpaceBefore, ' ');
82+
t.deepEqual(tree.nodes[1].nodes[1].type, 'comment');
83+
t.deepEqual(tree.nodes[1].nodes[1].value, '/*test*/');
84+
t.deepEqual(tree.nodes[1].nodes[2].rawSpaceBefore, ' ');
85+
t.deepEqual(tree.nodes[1].nodes[2].type, 'tag');
86+
t.deepEqual(tree.nodes[1].nodes[2].value, 'h4');
87+
});

src/parser.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,8 @@ export default class Parser {
761761
if (
762762
this.position === 0 ||
763763
this.prevToken[TOKEN.TYPE] === tokens.comma ||
764-
this.prevToken[TOKEN.TYPE] === tokens.openParenthesis
764+
this.prevToken[TOKEN.TYPE] === tokens.openParenthesis ||
765+
(this.current.nodes.every((node) => node.type === 'comment'))
765766
) {
766767
this.spaces = this.optionalSpace(content);
767768
this.position ++;

0 commit comments

Comments
 (0)