From d6b8ca3fdb0fa3819aab4d7da13b3fbb5635e123 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Wed, 4 Apr 2018 06:46:53 -0400 Subject: [PATCH] bail out of CSS optimisations on encountering spread - fixes #1300 --- src/css/Selector.ts | 3 +++ test/css/samples/spread/_config.js | 3 +++ test/css/samples/spread/expected.css | 1 + test/css/samples/spread/input.html | 11 +++++++++++ 4 files changed, 18 insertions(+) create mode 100644 test/css/samples/spread/_config.js create mode 100644 test/css/samples/spread/expected.css create mode 100644 test/css/samples/spread/input.html diff --git a/src/css/Selector.ts b/src/css/Selector.ts index fba0386f1f..b1932adba9 100644 --- a/src/css/Selector.ts +++ b/src/css/Selector.ts @@ -223,6 +223,9 @@ const operators = { }; function attributeMatches(node: Node, name: string, expectedValue: string, operator: string, caseInsensitive: boolean) { + const spread = node.attributes.find(attr => attr.type === 'Spread'); + if (spread) return true; + const attr = node.attributes.find((attr: Node) => attr.name === name); if (!attr) return false; if (attr.value === true) return operator === null; diff --git a/test/css/samples/spread/_config.js b/test/css/samples/spread/_config.js new file mode 100644 index 0000000000..b37866f9b6 --- /dev/null +++ b/test/css/samples/spread/_config.js @@ -0,0 +1,3 @@ +export default { + cascade: false +}; \ No newline at end of file diff --git a/test/css/samples/spread/expected.css b/test/css/samples/spread/expected.css new file mode 100644 index 0000000000..dc433318e8 --- /dev/null +++ b/test/css/samples/spread/expected.css @@ -0,0 +1 @@ +.foo.svelte-xyz{color:red;font-size:2em;font-family:'Comic Sans MS'} \ No newline at end of file diff --git a/test/css/samples/spread/input.html b/test/css/samples/spread/input.html new file mode 100644 index 0000000000..d55b90a62f --- /dev/null +++ b/test/css/samples/spread/input.html @@ -0,0 +1,11 @@ +
+ Big red Comic Sans +
+ + \ No newline at end of file