postcss-selector-parser icon indicating copy to clipboard operation
postcss-selector-parser copied to clipboard

Wrong source and sourceIndex for Sass interpolated selectors

Open p-szm opened this issue 4 years ago • 0 comments

Repro:

test('Sass selector', '.#{$classname}', (t, tree) => {
    const node = tree.nodes[0].nodes[0];
    t.deepEqual(node.type, "class"); // Ok
    t.deepEqual(node.value, "#{$classname}"); // Ok
    t.deepEqual(node.source.start.column, 1); // Fail. Received: 5
    t.deepEqual(node.source.end.column, 14); // Fail. Received: 18
    t.deepEqual(node.sourceIndex, 0); // Fail. Received: 4
});

Compare with this selector that has the same length:

test('Normal selector', '.XXXclassnameX', (t, tree) => {
    const node = tree.nodes[0].nodes[0];
    t.deepEqual(node.type, "class"); // Ok
    t.deepEqual(node.value, "XXXclassnameX"); // Ok
    t.deepEqual(node.source.start.column, 1); // Ok
    t.deepEqual(node.source.end.column, 14); // Ok
    t.deepEqual(node.sourceIndex, 0); // Ok
});

I tried to look at the parser code to figure out what's wrong but I didn't manage to figure this one out.

p-szm avatar Apr 30 '21 15:04 p-szm