From 4d4d9736225a63335f5a07d70c81e0bf397b1a5c Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 6 Feb 2024 16:50:11 -0500 Subject: [PATCH] use NestingSelector everywhere, include in SimpleSelector --- .../src/compiler/phases/1-parse/read/style.js | 4 ++-- .../src/compiler/phases/2-analyze/css/Selector.js | 4 ++-- packages/svelte/src/compiler/types/css.d.ts | 15 ++++++++------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/svelte/src/compiler/phases/1-parse/read/style.js b/packages/svelte/src/compiler/phases/1-parse/read/style.js index 7593c3a0cc..79707c59b1 100644 --- a/packages/svelte/src/compiler/phases/1-parse/read/style.js +++ b/packages/svelte/src/compiler/phases/1-parse/read/style.js @@ -162,7 +162,7 @@ function read_selector_list(parser, inside_pseudo_class = false) { function read_selector(parser, inside_pseudo_class = false) { const list_start = parser.index; - /** @type {Array} */ + /** @type {Array} */ const children = []; while (parser.index < parser.template.length) { @@ -170,7 +170,7 @@ function read_selector(parser, inside_pseudo_class = false) { if (parser.eat('&')) { children.push({ - type: 'NestedSelector', + type: 'NestingSelector', name: '&', start, end: parser.index diff --git a/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js b/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js index 0f5e5742ee..810b308ad6 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js +++ b/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js @@ -872,7 +872,7 @@ function group_selectors(selector, parent_selector) { if (parent_selector) { const nested_rule_indices = selector.children - .map((child, index) => (child.type === 'NestedSelector' ? index : -1)) + .map((child, index) => (child.type === 'NestingSelector' ? index : -1)) .filter((index) => index !== -1); const parent_children = parent_selector.node.children.map((child) => ({ @@ -900,7 +900,7 @@ function group_selectors(selector, parent_selector) { if (child.type === 'Combinator') { block = new Block(child); blocks.push(block); - } else if (child.type === 'NestedSelector') { + } else if (child.type === 'NestingSelector') { // Don't think we need to add it here } else { block.add(child); diff --git a/packages/svelte/src/compiler/types/css.d.ts b/packages/svelte/src/compiler/types/css.d.ts index 2ca708fc7c..8de0254ca9 100644 --- a/packages/svelte/src/compiler/types/css.d.ts +++ b/packages/svelte/src/compiler/types/css.d.ts @@ -25,7 +25,7 @@ export interface SelectorList extends BaseNode { export interface Selector extends BaseNode { type: 'Selector'; - children: Array; + children: Array; } export interface TypeSelector extends BaseNode { @@ -72,6 +72,11 @@ export interface Nth extends BaseNode { value: string; } +export interface NestingSelector extends BaseNode { + type: 'NestingSelector'; + name: '&'; +} + export type SimpleSelector = | TypeSelector | IdSelector @@ -80,18 +85,14 @@ export type SimpleSelector = | PseudoElementSelector | PseudoClassSelector | Percentage - | Nth; + | Nth + | NestingSelector; export interface Combinator extends BaseNode { type: 'Combinator'; name: string; } -export interface NestingSelector extends BaseNode { - type: 'NestedSelector'; - name: '&'; -} - export interface Block extends BaseNode { type: 'Block'; children: Array;