From ee01fb58c66d6f5b21ae3ce6a51522b0c1609e28 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Wed, 4 Apr 2018 08:42:39 -0400 Subject: [PATCH] make CSS DCE case-insensitive - fixes #1269 --- src/css/Selector.ts | 3 ++- .../omit-scoping-element-uppercase/_config.js | 22 +++++++++++++++++++ .../expected.css | 1 + .../expected.html | 1 + .../omit-scoping-element-uppercase/input.html | 9 ++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 test/css/samples/omit-scoping-element-uppercase/_config.js create mode 100644 test/css/samples/omit-scoping-element-uppercase/expected.css create mode 100644 test/css/samples/omit-scoping-element-uppercase/expected.html create mode 100644 test/css/samples/omit-scoping-element-uppercase/input.html diff --git a/src/css/Selector.ts b/src/css/Selector.ts index b1932adba9..487b5d578e 100644 --- a/src/css/Selector.ts +++ b/src/css/Selector.ts @@ -167,7 +167,8 @@ function applySelector(blocks: Block[], node: Node, stack: Node[], toEncapsulate } else if (selector.type === 'TypeSelector') { - if (node.name !== selector.name && selector.name !== '*') return false; + // remove toLowerCase() in v2, when uppercase elements will be forbidden + if (node.name.toLowerCase() !== selector.name.toLowerCase() && selector.name !== '*') return false; } else if (selector.type === 'RefSelector') { diff --git a/test/css/samples/omit-scoping-element-uppercase/_config.js b/test/css/samples/omit-scoping-element-uppercase/_config.js new file mode 100644 index 0000000000..8ade4401cf --- /dev/null +++ b/test/css/samples/omit-scoping-element-uppercase/_config.js @@ -0,0 +1,22 @@ +export default { + cascade: false, + + warnings: [{ + message: 'P component is not defined', + loc: { + line: 2, + column: 1 + }, + end: { + line: 2, + column: 22 + }, + pos: 7, + frame: ` + 1:
+ 2:

this is styled

+ ^ + 3:
+ 4:` + }] +}; \ No newline at end of file diff --git a/test/css/samples/omit-scoping-element-uppercase/expected.css b/test/css/samples/omit-scoping-element-uppercase/expected.css new file mode 100644 index 0000000000..5d8d69ac33 --- /dev/null +++ b/test/css/samples/omit-scoping-element-uppercase/expected.css @@ -0,0 +1 @@ +p.svelte-xyz{color:red} \ No newline at end of file diff --git a/test/css/samples/omit-scoping-element-uppercase/expected.html b/test/css/samples/omit-scoping-element-uppercase/expected.html new file mode 100644 index 0000000000..1bc4a66f62 --- /dev/null +++ b/test/css/samples/omit-scoping-element-uppercase/expected.html @@ -0,0 +1 @@ +

this is styled

\ No newline at end of file diff --git a/test/css/samples/omit-scoping-element-uppercase/input.html b/test/css/samples/omit-scoping-element-uppercase/input.html new file mode 100644 index 0000000000..96887547a5 --- /dev/null +++ b/test/css/samples/omit-scoping-element-uppercase/input.html @@ -0,0 +1,9 @@ +
+

this is styled

+
+ + \ No newline at end of file