mirror of https://github.com/sveltejs/svelte
commit
f4fbafea8e
@ -0,0 +1,19 @@
|
|||||||
|
import Expression from "./shared/Expression";
|
||||||
|
import map_children from "./shared/map_children";
|
||||||
|
import AbstractBlock from "./shared/AbstractBlock";
|
||||||
|
|
||||||
|
export default class KeyBlock extends AbstractBlock {
|
||||||
|
type: "KeyBlock";
|
||||||
|
|
||||||
|
expression: Expression;
|
||||||
|
|
||||||
|
constructor(component, parent, scope, info) {
|
||||||
|
super(component, parent, scope, info);
|
||||||
|
|
||||||
|
this.expression = new Expression(component, this, scope, info.expression);
|
||||||
|
|
||||||
|
this.children = map_children(component, this, scope, info.children);
|
||||||
|
|
||||||
|
this.warn_if_empty_block();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,136 @@
|
|||||||
|
import Wrapper from "./shared/Wrapper";
|
||||||
|
import Renderer from "../Renderer";
|
||||||
|
import Block from "../Block";
|
||||||
|
import EachBlock from "../../nodes/EachBlock";
|
||||||
|
import KeyBlock from "../../nodes/KeyBlock";
|
||||||
|
import create_debugging_comment from "./shared/create_debugging_comment";
|
||||||
|
import FragmentWrapper from "./Fragment";
|
||||||
|
import { b, x } from "code-red";
|
||||||
|
import { Identifier } from "estree";
|
||||||
|
|
||||||
|
export default class KeyBlockWrapper extends Wrapper {
|
||||||
|
node: KeyBlock;
|
||||||
|
fragment: FragmentWrapper;
|
||||||
|
block: Block;
|
||||||
|
dependencies: string[];
|
||||||
|
var: Identifier = { type: "Identifier", name: "key_block" };
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
renderer: Renderer,
|
||||||
|
block: Block,
|
||||||
|
parent: Wrapper,
|
||||||
|
node: EachBlock,
|
||||||
|
strip_whitespace: boolean,
|
||||||
|
next_sibling: Wrapper
|
||||||
|
) {
|
||||||
|
super(renderer, block, parent, node);
|
||||||
|
|
||||||
|
this.cannot_use_innerhtml();
|
||||||
|
this.not_static_content();
|
||||||
|
|
||||||
|
this.dependencies = node.expression.dynamic_dependencies();
|
||||||
|
|
||||||
|
if (this.dependencies.length) {
|
||||||
|
block = block.child({
|
||||||
|
comment: create_debugging_comment(node, renderer.component),
|
||||||
|
name: renderer.component.get_unique_name("create_key_block"),
|
||||||
|
type: "key"
|
||||||
|
});
|
||||||
|
renderer.blocks.push(block);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.block = block;
|
||||||
|
this.fragment = new FragmentWrapper(
|
||||||
|
renderer,
|
||||||
|
this.block,
|
||||||
|
node.children,
|
||||||
|
parent,
|
||||||
|
strip_whitespace,
|
||||||
|
next_sibling
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
render(block: Block, parent_node: Identifier, parent_nodes: Identifier) {
|
||||||
|
if (this.dependencies.length === 0) {
|
||||||
|
this.render_static_key(block, parent_node, parent_nodes);
|
||||||
|
} else {
|
||||||
|
this.render_dynamic_key(block, parent_node, parent_nodes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render_static_key(_block: Block, parent_node: Identifier, parent_nodes: Identifier) {
|
||||||
|
this.fragment.render(this.block, parent_node, parent_nodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
render_dynamic_key(block: Block, parent_node: Identifier, parent_nodes: Identifier) {
|
||||||
|
this.fragment.render(
|
||||||
|
this.block,
|
||||||
|
null,
|
||||||
|
(x`#nodes` as unknown) as Identifier
|
||||||
|
);
|
||||||
|
|
||||||
|
const has_transitions = !!(
|
||||||
|
this.block.has_intro_method || this.block.has_outro_method
|
||||||
|
);
|
||||||
|
const dynamic = this.block.has_update_method;
|
||||||
|
|
||||||
|
const previous_key = block.get_unique_name('previous_key');
|
||||||
|
const snippet = this.node.expression.manipulate(block);
|
||||||
|
block.add_variable(previous_key, snippet);
|
||||||
|
|
||||||
|
const not_equal = this.renderer.component.component_options.immutable ? x`@not_equal` : x`@safe_not_equal`;
|
||||||
|
const condition = x`${this.renderer.dirty(this.dependencies)} && ${not_equal}(${previous_key}, ${previous_key} = ${snippet})`;
|
||||||
|
|
||||||
|
block.chunks.init.push(b`
|
||||||
|
let ${this.var} = ${this.block.name}(#ctx);
|
||||||
|
`);
|
||||||
|
block.chunks.create.push(b`${this.var}.c();`);
|
||||||
|
if (this.renderer.options.hydratable) {
|
||||||
|
block.chunks.claim.push(b`${this.var}.l(${parent_nodes});`);
|
||||||
|
}
|
||||||
|
block.chunks.mount.push(
|
||||||
|
b`${this.var}.m(${parent_node || "#target"}, ${
|
||||||
|
parent_node ? "null" : "#anchor"
|
||||||
|
});`
|
||||||
|
);
|
||||||
|
const anchor = this.get_or_create_anchor(block, parent_node, parent_nodes);
|
||||||
|
const body = b`
|
||||||
|
${
|
||||||
|
has_transitions
|
||||||
|
? b`
|
||||||
|
@group_outros();
|
||||||
|
@transition_out(${this.var}, 1, 1, @noop);
|
||||||
|
@check_outros();
|
||||||
|
`
|
||||||
|
: b`${this.var}.d(1);`
|
||||||
|
}
|
||||||
|
${this.var} = ${this.block.name}(#ctx);
|
||||||
|
${this.var}.c();
|
||||||
|
${has_transitions && b`@transition_in(${this.var})`}
|
||||||
|
${this.var}.m(${this.get_update_mount_node(anchor)}, ${anchor});
|
||||||
|
`;
|
||||||
|
|
||||||
|
if (dynamic) {
|
||||||
|
block.chunks.update.push(b`
|
||||||
|
if (${condition}) {
|
||||||
|
${body}
|
||||||
|
} else {
|
||||||
|
${this.var}.p(#ctx, #dirty);
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
} else {
|
||||||
|
block.chunks.update.push(b`
|
||||||
|
if (${condition}) {
|
||||||
|
${body}
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_transitions) {
|
||||||
|
block.chunks.intro.push(b`@transition_in(${this.var})`);
|
||||||
|
block.chunks.outro.push(b`@transition_out(${this.var})`);
|
||||||
|
}
|
||||||
|
|
||||||
|
block.chunks.destroy.push(b`${this.var}.d(detaching)`);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
import KeyBlock from '../../nodes/KeyBlock';
|
||||||
|
import Renderer, { RenderOptions } from '../Renderer';
|
||||||
|
|
||||||
|
export default function(node: KeyBlock, renderer: Renderer, options: RenderOptions) {
|
||||||
|
renderer.render(node.children, options);
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
warnings: []
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.b.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.e.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.f.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.g.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.h.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz~.e.svelte-xyz~.f.svelte-xyz~.h.svelte-xyz{color:green}.b.svelte-xyz~.d.svelte-xyz~.h.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.g.svelte-xyz.svelte-xyz.svelte-xyz{color:green}
|
@ -0,0 +1,4 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
||||||
|
<div class="f svelte-xyz"></div>
|
||||||
|
<div class="h svelte-xyz"></div>
|
@ -0,0 +1,41 @@
|
|||||||
|
<script>
|
||||||
|
let promise = Promise.resolve();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a ~ .b { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
.a ~ .d { color: green; }
|
||||||
|
.a ~ .e { color: green; }
|
||||||
|
.a ~ .f { color: green; }
|
||||||
|
.a ~ .g { color: green; }
|
||||||
|
.a ~ .h { color: green; }
|
||||||
|
|
||||||
|
.b ~ .d { color: green; }
|
||||||
|
.c ~ .d { color: green; }
|
||||||
|
.b ~ .e ~ .f ~ .h { color: green; }
|
||||||
|
.b ~ .d ~ .h { color: green; }
|
||||||
|
.c ~ .g { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#await promise then value}
|
||||||
|
<div class="b" />
|
||||||
|
{:catch error}
|
||||||
|
<div class="c" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
{#await promise}
|
||||||
|
<div class="d" />
|
||||||
|
{:catch error}
|
||||||
|
<div class="e" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
{#await promise}
|
||||||
|
<div class="f" />
|
||||||
|
{:then error}
|
||||||
|
<div class="g" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
<div class="h" />
|
@ -0,0 +1,46 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
13:
|
||||||
|
14: /* no match */
|
||||||
|
15: .b ~ .c { color: green; }
|
||||||
|
^
|
||||||
|
16: .c ~ .d { color: green; }
|
||||||
|
17: .b ~ .d { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .c"',
|
||||||
|
pos: 269,
|
||||||
|
start: { character: 269, column: 1, line: 15 },
|
||||||
|
end: { character: 276, column: 8, line: 15 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
14: /* no match */
|
||||||
|
15: .b ~ .c { color: green; }
|
||||||
|
16: .c ~ .d { color: green; }
|
||||||
|
^
|
||||||
|
17: .b ~ .d { color: green; }
|
||||||
|
18: </style>`,
|
||||||
|
message: 'Unused CSS selector ".c ~ .d"',
|
||||||
|
pos: 296,
|
||||||
|
start: { character: 296, column: 1, line: 16 },
|
||||||
|
end: { character: 303, column: 8, line: 16 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
15: .b ~ .c { color: green; }
|
||||||
|
16: .c ~ .d { color: green; }
|
||||||
|
17: .b ~ .d { color: green; }
|
||||||
|
^
|
||||||
|
18: </style>
|
||||||
|
19:`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .d"',
|
||||||
|
pos: 323,
|
||||||
|
start: { character: 323, column: 1, line: 17 },
|
||||||
|
end: { character: 330, column: 8, line: 17 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.b.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz{color:green}.a.svelte-xyz~.d.svelte-xyz{color:green}.b.svelte-xyz~.e.svelte-xyz{color:green}.c.svelte-xyz~.e.svelte-xyz{color:green}.d.svelte-xyz~.e.svelte-xyz{color:green}.a.svelte-xyz~.e.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b svelte-xyz"></div>
|
||||||
|
<div class="e svelte-xyz"></div>
|
@ -0,0 +1,30 @@
|
|||||||
|
<script>
|
||||||
|
let promise = Promise.resolve();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a ~ .b { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
.a ~ .d { color: green; }
|
||||||
|
.b ~ .e { color: green; }
|
||||||
|
.c ~ .e { color: green; }
|
||||||
|
.d ~ .e { color: green; }
|
||||||
|
.a ~ .e { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.b ~ .c { color: green; }
|
||||||
|
.c ~ .d { color: green; }
|
||||||
|
.b ~ .d { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#await promise}
|
||||||
|
<div class="b" />
|
||||||
|
{:then value}
|
||||||
|
<div class="c" />
|
||||||
|
{:catch error}
|
||||||
|
<div class="d" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
<div class="e" />
|
@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
warnings: []
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.b.svelte-xyz{color:green}.c.svelte-xyz~.d.svelte-xyz{color:green}.a.svelte-xyz~.d.svelte-xyz{color:green}.c.svelte-xyz~.b.svelte-xyz{color:green}.b.svelte-xyz~.c.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz{color:green}
|
@ -0,0 +1,4 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b svelte-xyz"></div>
|
||||||
|
<div class="c svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
@ -0,0 +1,37 @@
|
|||||||
|
<script>
|
||||||
|
let array = [1];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* boundary of each */
|
||||||
|
.a ~ .b {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
.c ~ .d {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
/* if array is empty */
|
||||||
|
.a ~ .d {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
/* if array has multiple items */
|
||||||
|
.c ~ .b {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
/* normal sibling */
|
||||||
|
.b ~ .c {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
.a ~ .c {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="b" />
|
||||||
|
<div class="c" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<div class="d" />
|
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
33:
|
||||||
|
34: /* no match */
|
||||||
|
35: .e ~ .f { color: green; }
|
||||||
|
^
|
||||||
|
36: </style>
|
||||||
|
37:`,
|
||||||
|
message: 'Unused CSS selector ".e ~ .f"',
|
||||||
|
pos: 812,
|
||||||
|
start: { character: 812, column: 1, line: 35 },
|
||||||
|
end: { character: 819, column: 8, line: 35 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.e.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.f.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz~.c.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.e.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.f.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz~.e.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz~.f.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz~.e.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz~.j.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.h.svelte-xyz~.j.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.i.svelte-xyz~.j.svelte-xyz.svelte-xyz{color:green}.m.svelte-xyz~.m.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.m.svelte-xyz~.l.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz~.m.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.g.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz~.e.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.g.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.k.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.g.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.h.svelte-xyz~.h.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz~.i.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.j.svelte-xyz~.j.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.j.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.h.svelte-xyz~.i.svelte-xyz~.j.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="f svelte-xyz"></div>
|
||||||
|
<div class="k svelte-xyz"></div>
|
@ -0,0 +1,77 @@
|
|||||||
|
<script>
|
||||||
|
let array = [];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a ~ .e { color: green; }
|
||||||
|
.a ~ .f { color: green; }
|
||||||
|
.b ~ .c { color: green; }
|
||||||
|
.b ~ .d { color: green; }
|
||||||
|
.c ~ .e { color: green; }
|
||||||
|
.c ~ .f { color: green; }
|
||||||
|
.d ~ .e { color: green; }
|
||||||
|
.d ~ .f { color: green; }
|
||||||
|
.e ~ .e { color: green; }
|
||||||
|
.i ~ .j { color: green; }
|
||||||
|
.g ~ .h ~ .j { color: green; }
|
||||||
|
.g ~ .i ~ .j { color: green; }
|
||||||
|
.m ~ .m { color: green; }
|
||||||
|
.m ~ .l { color: green; }
|
||||||
|
.l ~ .m { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
.a ~ .g { color: green; }
|
||||||
|
.b ~ .e { color: green; }
|
||||||
|
.c ~ .g { color: green; }
|
||||||
|
.c ~ .k { color: green; }
|
||||||
|
.d ~ .d { color: green; }
|
||||||
|
.g ~ .g { color: green; }
|
||||||
|
.h ~ .h { color: green; }
|
||||||
|
.i ~ .i { color: green; }
|
||||||
|
.j ~ .j { color: green; }
|
||||||
|
.g ~ .j { color: green; }
|
||||||
|
.g ~ .h ~ .i ~ .j { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.e ~ .f { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as a}
|
||||||
|
<div class="b" />
|
||||||
|
{#each array as b}
|
||||||
|
<div class="c" />
|
||||||
|
{:else}
|
||||||
|
<div class="d" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as c}
|
||||||
|
{#each array as d}
|
||||||
|
<div class="e" />
|
||||||
|
{/each}
|
||||||
|
{:else}
|
||||||
|
<div class="f" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as x}
|
||||||
|
<div class="g" />
|
||||||
|
{#each array as y}
|
||||||
|
{#each array as z}
|
||||||
|
<div class="h" />
|
||||||
|
{/each}
|
||||||
|
{:else}
|
||||||
|
<div class="i" />
|
||||||
|
{/each}
|
||||||
|
<div class="j" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<div class="k" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="l" />
|
||||||
|
{:else}
|
||||||
|
<div class="m" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
11:
|
||||||
|
12: /* no match */
|
||||||
|
13: .b ~ .c { color: green; }
|
||||||
|
^
|
||||||
|
14: </style>
|
||||||
|
15:`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .c"',
|
||||||
|
pos: 199,
|
||||||
|
start: { character: 199, column: 1, line: 13 },
|
||||||
|
end: { character: 206, column: 8, line: 13 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.b.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz{color:green}.b.svelte-xyz~.d.svelte-xyz{color:green}.c.svelte-xyz~.d.svelte-xyz{color:green}.a.svelte-xyz~.d.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="c svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
@ -0,0 +1,24 @@
|
|||||||
|
<script>
|
||||||
|
let array = [];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a ~ .b { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
.b ~ .d { color: green; }
|
||||||
|
.c ~ .d { color: green; }
|
||||||
|
.a ~ .d { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.b ~ .c { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="b" />
|
||||||
|
{:else}
|
||||||
|
<div class="c" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<div class="d" />
|
@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
warnings: []
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.d.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.e.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.f.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.g.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.d.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.e.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.f.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.g.svelte-xyz.svelte-xyz{color:green}.j.svelte-xyz~.m.svelte-xyz.svelte-xyz{color:green}.j.svelte-xyz~.n.svelte-xyz.svelte-xyz{color:green}.j.svelte-xyz~.o.svelte-xyz.svelte-xyz{color:green}.k.svelte-xyz~.m.svelte-xyz.svelte-xyz{color:green}.k.svelte-xyz~.n.svelte-xyz.svelte-xyz{color:green}.k.svelte-xyz~.o.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz~.m.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz~.n.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz~.o.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz~.e.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz~.f.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.h.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz~.d.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz~.e.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz~.f.svelte-xyz.svelte-xyz{color:green}.h.svelte-xyz~.g.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz~.h.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz~.g.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz~.d.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz~.e.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz~.f.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.g.svelte-xyz.svelte-xyz{color:green}.h.svelte-xyz~.h.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz~.i.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz~.e.svelte-xyz~.f.svelte-xyz{color:green}.e.svelte-xyz~.e.svelte-xyz~.d.svelte-xyz{color:green}.h.svelte-xyz~.h.svelte-xyz~.i.svelte-xyz{color:green}.h.svelte-xyz~.h.svelte-xyz~.g.svelte-xyz{color:green}.a.svelte-xyz~.h.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.i.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.h.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.i.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz~.f.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz~.g.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz~.g.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz~.i.svelte-xyz.svelte-xyz{color:green}
|
@ -0,0 +1,15 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b"></div>
|
||||||
|
<div class="c svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
||||||
|
<div class="e svelte-xyz"></div>
|
||||||
|
<div class="f svelte-xyz"></div>
|
||||||
|
<div class="g svelte-xyz"></div>
|
||||||
|
<div class="h svelte-xyz"></div>
|
||||||
|
<div class="i svelte-xyz"></div>
|
||||||
|
<div class="j svelte-xyz"></div>
|
||||||
|
<div class="k svelte-xyz"></div>
|
||||||
|
<div class="l svelte-xyz"></div>
|
||||||
|
<div class="m svelte-xyz"></div>
|
||||||
|
<div class="n svelte-xyz"></div>
|
||||||
|
<div class="o svelte-xyz"></div>
|
@ -0,0 +1,113 @@
|
|||||||
|
<script>
|
||||||
|
let array = [1];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* boundary of each */
|
||||||
|
.a ~ .d { color: green; }
|
||||||
|
.a ~ .e { color: green; }
|
||||||
|
.a ~ .f { color: green; }
|
||||||
|
.a ~ .g { color: green; }
|
||||||
|
.c ~ .d { color: green; }
|
||||||
|
.c ~ .e { color: green; }
|
||||||
|
.c ~ .f { color: green; }
|
||||||
|
.c ~ .g { color: green; }
|
||||||
|
|
||||||
|
/* nested boundary of each */
|
||||||
|
.j ~ .m { color: green; }
|
||||||
|
.j ~ .n { color: green; }
|
||||||
|
.j ~ .o { color: green; }
|
||||||
|
.k ~ .m { color: green; }
|
||||||
|
.k ~ .n { color: green; }
|
||||||
|
.k ~ .o { color: green; }
|
||||||
|
.l ~ .m { color: green; }
|
||||||
|
.l ~ .n { color: green; }
|
||||||
|
.l ~ .o { color: green; }
|
||||||
|
|
||||||
|
/* parent each */
|
||||||
|
.d ~ .e { color: green; }
|
||||||
|
.e ~ .f { color: green; }
|
||||||
|
|
||||||
|
/* child each */
|
||||||
|
.g ~ .h { color: green; }
|
||||||
|
|
||||||
|
/* wrap around */
|
||||||
|
.f ~ .d { color: green; }
|
||||||
|
.f ~ .e { color: green; }
|
||||||
|
.f ~ .f { color: green; }
|
||||||
|
|
||||||
|
.h ~ .g { color: green; }
|
||||||
|
.i ~ .h { color: green; }
|
||||||
|
.i ~ .g { color: green; }
|
||||||
|
|
||||||
|
/* wrap around self */
|
||||||
|
.d ~ .d { color: green; }
|
||||||
|
.e ~ .e { color: green; }
|
||||||
|
.f ~ .f { color: green; }
|
||||||
|
.g ~ .g { color: green; }
|
||||||
|
.h ~ .h { color: green; }
|
||||||
|
.i ~ .i { color: green; }
|
||||||
|
|
||||||
|
/* wrap around self ~ next */
|
||||||
|
.e ~ .e ~ .f { color: green; }
|
||||||
|
.e ~ .e ~ .d { color: green; }
|
||||||
|
.h ~ .h ~ .i { color: green; }
|
||||||
|
.h ~ .h ~ .g { color: green; }
|
||||||
|
|
||||||
|
/* general siblings */
|
||||||
|
.a ~ .h { color: green; }
|
||||||
|
.a ~ .i { color: green; }
|
||||||
|
.c ~ .h { color: green; }
|
||||||
|
.c ~ .i { color: green; }
|
||||||
|
.d ~ .f { color: green; }
|
||||||
|
.d ~ .g { color: green; }
|
||||||
|
.e ~ .g { color: green; }
|
||||||
|
.g ~ .i { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="b" />
|
||||||
|
<div class="c" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="d" />
|
||||||
|
{/each}
|
||||||
|
<div class="e" />
|
||||||
|
{/each}
|
||||||
|
<div class="f" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="g" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="h" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="i" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="j" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="k" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="l" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="m" />
|
||||||
|
{/each}
|
||||||
|
<div class="n" />
|
||||||
|
{/each}
|
||||||
|
<div class="o" />
|
||||||
|
{/each}
|
@ -0,0 +1 @@
|
|||||||
|
div.svelte-xyz~span.svelte-xyz{color:green}
|
@ -0,0 +1,6 @@
|
|||||||
|
<div class="svelte-xyz"></div>
|
||||||
|
<span class="each svelte-xyz"></span>
|
||||||
|
<div class="each svelte-xyz"></div>
|
||||||
|
<span class="each svelte-xyz"></span>
|
||||||
|
<div class="each svelte-xyz"></div>
|
||||||
|
<span class="svelte-xyz"></span>
|
@ -0,0 +1,20 @@
|
|||||||
|
<script>
|
||||||
|
let array = [1];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
div ~ span {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<span class="each" />
|
||||||
|
<div class="each" />
|
||||||
|
<span class="each" />
|
||||||
|
<div class="each" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<span />
|
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
16:
|
||||||
|
17: /* no match */
|
||||||
|
18: .b ~ .c { color: green; }
|
||||||
|
^
|
||||||
|
19: </style>
|
||||||
|
20:`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .c"',
|
||||||
|
pos: 319,
|
||||||
|
start: { character: 319, column: 1, line: 18 },
|
||||||
|
end: { character: 326, column: 8, line: 18 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.b.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz~.c.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz~.c.svelte-xyz~.d.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz~.c.svelte-xyz~.d.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="c svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
@ -0,0 +1,31 @@
|
|||||||
|
<script>
|
||||||
|
let foo = false;
|
||||||
|
let array = [1];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a ~ .b { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
.a ~ .d { color: green; }
|
||||||
|
.b ~ .d { color: green; }
|
||||||
|
.c ~ .d { color: green; }
|
||||||
|
|
||||||
|
.a ~ .c ~ .c { color: green; }
|
||||||
|
.c ~ .c ~ .d { color: green; }
|
||||||
|
.a ~ .c ~ .c ~ .d { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.b ~ .c { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#if foo}
|
||||||
|
<div class="b" />
|
||||||
|
{:else}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="c" />
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div class="d" />
|
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
12:
|
||||||
|
13: /* no match */
|
||||||
|
14: .b ~ .c { color: green; }
|
||||||
|
^
|
||||||
|
15: </style>
|
||||||
|
16:`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .c"',
|
||||||
|
pos: 215,
|
||||||
|
start: { character: 215, column: 1, line: 14 },
|
||||||
|
end: { character: 222, column: 8, line: 14 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.b.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz{color:green}.a.svelte-xyz~.d.svelte-xyz{color:green}.b.svelte-xyz~.d.svelte-xyz{color:green}.c.svelte-xyz~.d.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
@ -0,0 +1,25 @@
|
|||||||
|
<script>
|
||||||
|
let foo = true;
|
||||||
|
let bar = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a ~ .b { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
.a ~ .d { color: green; }
|
||||||
|
.b ~ .d { color: green; }
|
||||||
|
.c ~ .d { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.b ~ .c { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#if foo}
|
||||||
|
<div class="b" />
|
||||||
|
{:else if bar}
|
||||||
|
<div class="c" />
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div class="d" />
|
@ -0,0 +1,46 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
14:
|
||||||
|
15: /* no match */
|
||||||
|
16: .b ~ .c { color: green; }
|
||||||
|
^
|
||||||
|
17: .b ~ .d { color: green; }
|
||||||
|
18: .c ~ .d { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .c"',
|
||||||
|
pos: 269,
|
||||||
|
start: { character: 269, column: 1, line: 16 },
|
||||||
|
end: { character: 276, column: 8, line: 16 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
15: /* no match */
|
||||||
|
16: .b ~ .c { color: green; }
|
||||||
|
17: .b ~ .d { color: green; }
|
||||||
|
^
|
||||||
|
18: .c ~ .d { color: green; }
|
||||||
|
19: </style>`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .d"',
|
||||||
|
pos: 296,
|
||||||
|
start: { character: 296, column: 1, line: 17 },
|
||||||
|
end: { character: 303, column: 8, line: 17 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
16: .b ~ .c { color: green; }
|
||||||
|
17: .b ~ .d { color: green; }
|
||||||
|
18: .c ~ .d { color: green; }
|
||||||
|
^
|
||||||
|
19: </style>
|
||||||
|
20:`,
|
||||||
|
message: 'Unused CSS selector ".c ~ .d"',
|
||||||
|
pos: 323,
|
||||||
|
start: { character: 323, column: 1, line: 18 },
|
||||||
|
end: { character: 330, column: 8, line: 18 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz~.b.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz{color:green}.a.svelte-xyz~.d.svelte-xyz{color:green}.b.svelte-xyz~.e.svelte-xyz{color:green}.c.svelte-xyz~.e.svelte-xyz{color:green}.d.svelte-xyz~.e.svelte-xyz{color:green}.a.svelte-xyz~.e.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b svelte-xyz"></div>
|
||||||
|
<div class="e svelte-xyz"></div>
|
@ -0,0 +1,31 @@
|
|||||||
|
<script>
|
||||||
|
let foo = true;
|
||||||
|
let bar = true;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a ~ .b { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
.a ~ .d { color: green; }
|
||||||
|
.b ~ .e { color: green; }
|
||||||
|
.c ~ .e { color: green; }
|
||||||
|
.d ~ .e { color: green; }
|
||||||
|
.a ~ .e { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.b ~ .c { color: green; }
|
||||||
|
.b ~ .d { color: green; }
|
||||||
|
.c ~ .d { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#if foo}
|
||||||
|
<div class="b" />
|
||||||
|
{:else if bar}
|
||||||
|
<div class="c" />
|
||||||
|
{:else}
|
||||||
|
<div class="d" />
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div class="e" />
|
@ -0,0 +1,88 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
8:
|
||||||
|
9: /* no match */
|
||||||
|
10: .a ~ .b { color: green; }
|
||||||
|
^
|
||||||
|
11: .b ~ .c { color: green; }
|
||||||
|
12: .c ~ .f { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".a ~ .b"',
|
||||||
|
pos: 111,
|
||||||
|
start: { character: 111, column: 1, line: 10 },
|
||||||
|
end: { character: 118, column: 8, line: 10 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
9: /* no match */
|
||||||
|
10: .a ~ .b { color: green; }
|
||||||
|
11: .b ~ .c { color: green; }
|
||||||
|
^
|
||||||
|
12: .c ~ .f { color: green; }
|
||||||
|
13: .f ~ .g { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .c"',
|
||||||
|
pos: 138,
|
||||||
|
start: { character: 138, column: 1, line: 11 },
|
||||||
|
end: { character: 145, column: 8, line: 11 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
10: .a ~ .b { color: green; }
|
||||||
|
11: .b ~ .c { color: green; }
|
||||||
|
12: .c ~ .f { color: green; }
|
||||||
|
^
|
||||||
|
13: .f ~ .g { color: green; }
|
||||||
|
14: .b ~ .f { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".c ~ .f"',
|
||||||
|
pos: 165,
|
||||||
|
start: { character: 165, column: 1, line: 12 },
|
||||||
|
end: { character: 172, column: 8, line: 12 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
11: .b ~ .c { color: green; }
|
||||||
|
12: .c ~ .f { color: green; }
|
||||||
|
13: .f ~ .g { color: green; }
|
||||||
|
^
|
||||||
|
14: .b ~ .f { color: green; }
|
||||||
|
15: .b ~ .g { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".f ~ .g"',
|
||||||
|
pos: 192,
|
||||||
|
start: { character: 192, column: 1, line: 13 },
|
||||||
|
end: { character: 199, column: 8, line: 13 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
12: .c ~ .f { color: green; }
|
||||||
|
13: .f ~ .g { color: green; }
|
||||||
|
14: .b ~ .f { color: green; }
|
||||||
|
^
|
||||||
|
15: .b ~ .g { color: green; }
|
||||||
|
16: </style>`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .f"',
|
||||||
|
pos: 219,
|
||||||
|
start: { character: 219, column: 1, line: 14 },
|
||||||
|
end: { character: 226, column: 8, line: 14 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
13: .f ~ .g { color: green; }
|
||||||
|
14: .b ~ .f { color: green; }
|
||||||
|
15: .b ~ .g { color: green; }
|
||||||
|
^
|
||||||
|
16: </style>
|
||||||
|
17:`,
|
||||||
|
message: 'Unused CSS selector ".b ~ .g"',
|
||||||
|
pos: 246,
|
||||||
|
start: { character: 246, column: 1, line: 15 },
|
||||||
|
end: { character: 253, column: 8, line: 15 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.d.svelte-xyz~.e.svelte-xyz{color:green}.a.svelte-xyz~.g.svelte-xyz{color:green}
|
@ -0,0 +1,30 @@
|
|||||||
|
<script>
|
||||||
|
let App;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.d ~ .e { color: green; }
|
||||||
|
.a ~ .g { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.a ~ .b { color: green; }
|
||||||
|
.b ~ .c { color: green; }
|
||||||
|
.c ~ .f { color: green; }
|
||||||
|
.f ~ .g { color: green; }
|
||||||
|
.b ~ .f { color: green; }
|
||||||
|
.b ~ .g { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
<App>
|
||||||
|
<div class="b" slot="a" />
|
||||||
|
|
||||||
|
<div class="c" slot="b">
|
||||||
|
<div class="d" />
|
||||||
|
<div class="e" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="f" slot="c" />
|
||||||
|
</App>
|
||||||
|
|
||||||
|
<div class="g" />
|
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
3: margin-left: 4px;
|
||||||
|
4: }
|
||||||
|
5: .not-match > * ~ * {
|
||||||
|
^
|
||||||
|
6: margin-left: 4px;
|
||||||
|
7: }`,
|
||||||
|
message: 'Unused CSS selector ".not-match > * ~ *"',
|
||||||
|
pos: 50,
|
||||||
|
start: { character: 50, column: 1, line: 5 },
|
||||||
|
end: { character: 68, column: 19, line: 5 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.match.svelte-xyz>.svelte-xyz~.svelte-xyz{margin-left:4px}
|
@ -0,0 +1,7 @@
|
|||||||
|
<div class="not-match">
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
<div class="match svelte-xyz">
|
||||||
|
<div class="svelte-xyz"></div>
|
||||||
|
<div class="svelte-xyz"></div>
|
||||||
|
</div>
|
@ -0,0 +1,17 @@
|
|||||||
|
<style>
|
||||||
|
.match > * ~ * {
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.not-match > * ~ * {
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="not-match">
|
||||||
|
<div />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="match">
|
||||||
|
<div />
|
||||||
|
<div />
|
||||||
|
</div>
|
@ -0,0 +1,60 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
10:
|
||||||
|
11: /* no match */
|
||||||
|
12: article ~ div { color: green; }
|
||||||
|
^
|
||||||
|
13: span ~ article { color: green; }
|
||||||
|
14: b ~ article { color: green; }`,
|
||||||
|
message: 'Unused CSS selector "article ~ div"',
|
||||||
|
pos: 275,
|
||||||
|
start: { character: 275, column: 1, line: 12 },
|
||||||
|
end: { character: 288, column: 14, line: 12 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
11: /* no match */
|
||||||
|
12: article ~ div { color: green; }
|
||||||
|
13: span ~ article { color: green; }
|
||||||
|
^
|
||||||
|
14: b ~ article { color: green; }
|
||||||
|
15: span ~ div { color: green; }`,
|
||||||
|
message: 'Unused CSS selector "span ~ article"',
|
||||||
|
pos: 308,
|
||||||
|
start: { character: 308, column: 1, line: 13 },
|
||||||
|
end: { character: 322, column: 15, line: 13 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
12: article ~ div { color: green; }
|
||||||
|
13: span ~ article { color: green; }
|
||||||
|
14: b ~ article { color: green; }
|
||||||
|
^
|
||||||
|
15: span ~ div { color: green; }
|
||||||
|
16: </style>`,
|
||||||
|
message: 'Unused CSS selector "b ~ article"',
|
||||||
|
pos: 342,
|
||||||
|
start: { character: 342, column: 1, line: 14 },
|
||||||
|
end: { character: 353, column: 12, line: 14 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
13: span ~ article { color: green; }
|
||||||
|
14: b ~ article { color: green; }
|
||||||
|
15: span ~ div { color: green; }
|
||||||
|
^
|
||||||
|
16: </style>
|
||||||
|
17:`,
|
||||||
|
message: 'Unused CSS selector "span ~ div"',
|
||||||
|
pos: 373,
|
||||||
|
start: { character: 373, column: 1, line: 15 },
|
||||||
|
end: { character: 383, column: 11, line: 15 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
div.svelte-xyz~article.svelte-xyz.svelte-xyz{color:green}span.svelte-xyz~b.svelte-xyz.svelte-xyz{color:green}div.svelte-xyz span.svelte-xyz~b.svelte-xyz{color:green}.a.svelte-xyz~article.svelte-xyz.svelte-xyz{color:green}div.svelte-xyz~.b.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~.c.svelte-xyz.svelte-xyz{color:green}article.svelte-xyz~details.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz~details.svelte-xyz.svelte-xyz{color:green}
|
@ -0,0 +1,7 @@
|
|||||||
|
<div class="a svelte-xyz">
|
||||||
|
<span class="svelte-xyz"></span>
|
||||||
|
<b class="svelte-xyz"></b>
|
||||||
|
</div>
|
||||||
|
<article class="b svelte-xyz"></article>
|
||||||
|
<p class="c svelte-xyz"></p>
|
||||||
|
<details class="d svelte-xyz"></details>
|
@ -0,0 +1,24 @@
|
|||||||
|
<style>
|
||||||
|
div ~ article { color: green; }
|
||||||
|
span ~ b { color: green; }
|
||||||
|
div span ~ b { color: green; }
|
||||||
|
.a ~ article { color: green; }
|
||||||
|
div ~ .b { color: green; }
|
||||||
|
.a ~ .c { color: green; }
|
||||||
|
article ~ details { color: green; }
|
||||||
|
.a ~ details { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
article ~ div { color: green; }
|
||||||
|
span ~ article { color: green; }
|
||||||
|
b ~ article { color: green; }
|
||||||
|
span ~ div { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a">
|
||||||
|
<span />
|
||||||
|
<b />
|
||||||
|
</div>
|
||||||
|
<article class="b"></article>
|
||||||
|
<p class="c"></p>
|
||||||
|
<details class="d"></details>
|
@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
warnings: []
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz+.b.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.c.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.e.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.f.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.g.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.h.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz+.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.d.svelte-xyz.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz+.e.svelte-xyz+.f.svelte-xyz+.h.svelte-xyz{color:green}.b.svelte-xyz+.d.svelte-xyz+.h.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.g.svelte-xyz.svelte-xyz.svelte-xyz{color:green}
|
@ -0,0 +1,4 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
||||||
|
<div class="f svelte-xyz"></div>
|
||||||
|
<div class="h svelte-xyz"></div>
|
@ -0,0 +1,41 @@
|
|||||||
|
<script>
|
||||||
|
let promise = Promise.resolve();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a + .b { color: green; }
|
||||||
|
.a + .c { color: green; }
|
||||||
|
.a + .d { color: green; }
|
||||||
|
.a + .e { color: green; }
|
||||||
|
.a + .f { color: green; }
|
||||||
|
.a + .g { color: green; }
|
||||||
|
.a + .h { color: green; }
|
||||||
|
|
||||||
|
.b + .d { color: green; }
|
||||||
|
.c + .d { color: green; }
|
||||||
|
.b + .e + .f + .h { color: green; }
|
||||||
|
.b + .d + .h { color: green; }
|
||||||
|
.c + .g { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#await promise then value}
|
||||||
|
<div class="b" />
|
||||||
|
{:catch error}
|
||||||
|
<div class="c" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
{#await promise}
|
||||||
|
<div class="d" />
|
||||||
|
{:catch error}
|
||||||
|
<div class="e" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
{#await promise}
|
||||||
|
<div class="f" />
|
||||||
|
{:then error}
|
||||||
|
<div class="g" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
<div class="h" />
|
@ -0,0 +1,60 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
12:
|
||||||
|
13: /* no match */
|
||||||
|
14: .a + .e { color: green; }
|
||||||
|
^
|
||||||
|
15: .b + .c { color: green; }
|
||||||
|
16: .c + .d { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".a + .e"',
|
||||||
|
pos: 242,
|
||||||
|
start: { character: 242, column: 1, line: 14 },
|
||||||
|
end: { character: 249, column: 8, line: 14 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
13: /* no match */
|
||||||
|
14: .a + .e { color: green; }
|
||||||
|
15: .b + .c { color: green; }
|
||||||
|
^
|
||||||
|
16: .c + .d { color: green; }
|
||||||
|
17: .b + .d { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".b + .c"',
|
||||||
|
pos: 269,
|
||||||
|
start: { character: 269, column: 1, line: 15 },
|
||||||
|
end: { character: 276, column: 8, line: 15 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
14: .a + .e { color: green; }
|
||||||
|
15: .b + .c { color: green; }
|
||||||
|
16: .c + .d { color: green; }
|
||||||
|
^
|
||||||
|
17: .b + .d { color: green; }
|
||||||
|
18: </style>`,
|
||||||
|
message: 'Unused CSS selector ".c + .d"',
|
||||||
|
pos: 296,
|
||||||
|
start: { character: 296, column: 1, line: 16 },
|
||||||
|
end: { character: 303, column: 8, line: 16 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
15: .b + .c { color: green; }
|
||||||
|
16: .c + .d { color: green; }
|
||||||
|
17: .b + .d { color: green; }
|
||||||
|
^
|
||||||
|
18: </style>
|
||||||
|
19:`,
|
||||||
|
message: 'Unused CSS selector ".b + .d"',
|
||||||
|
pos: 323,
|
||||||
|
start: { character: 323, column: 1, line: 17 },
|
||||||
|
end: { character: 330, column: 8, line: 17 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz+.b.svelte-xyz{color:green}.a.svelte-xyz+.c.svelte-xyz{color:green}.a.svelte-xyz+.d.svelte-xyz{color:green}.b.svelte-xyz+.e.svelte-xyz{color:green}.c.svelte-xyz+.e.svelte-xyz{color:green}.d.svelte-xyz+.e.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b svelte-xyz"></div>
|
||||||
|
<div class="e svelte-xyz"></div>
|
@ -0,0 +1,30 @@
|
|||||||
|
<script>
|
||||||
|
let promise = Promise.resolve();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a + .b { color: green; }
|
||||||
|
.a + .c { color: green; }
|
||||||
|
.a + .d { color: green; }
|
||||||
|
.b + .e { color: green; }
|
||||||
|
.c + .e { color: green; }
|
||||||
|
.d + .e { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.a + .e { color: green; }
|
||||||
|
.b + .c { color: green; }
|
||||||
|
.c + .d { color: green; }
|
||||||
|
.b + .d { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#await promise}
|
||||||
|
<div class="b" />
|
||||||
|
{:then value}
|
||||||
|
<div class="c" />
|
||||||
|
{:catch error}
|
||||||
|
<div class="d" />
|
||||||
|
{/await}
|
||||||
|
|
||||||
|
<div class="e" />
|
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
24: }
|
||||||
|
25: /* not match */
|
||||||
|
26: .a + .c {
|
||||||
|
^
|
||||||
|
27: color: green;
|
||||||
|
28: }`,
|
||||||
|
message: 'Unused CSS selector ".a + .c"',
|
||||||
|
pos: 320,
|
||||||
|
start: { character: 320, column: 1, line: 26 },
|
||||||
|
end: { character: 327, column: 8, line: 26 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz+.b.svelte-xyz{color:green}.c.svelte-xyz+.d.svelte-xyz{color:green}.a.svelte-xyz+.d.svelte-xyz{color:green}.c.svelte-xyz+.b.svelte-xyz{color:green}.b.svelte-xyz+.c.svelte-xyz{color:green}
|
@ -0,0 +1,4 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b svelte-xyz"></div>
|
||||||
|
<div class="c svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
@ -0,0 +1,38 @@
|
|||||||
|
<script>
|
||||||
|
let array = [1];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* boundary of each */
|
||||||
|
.a + .b {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
.c + .d {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
/* if array is empty */
|
||||||
|
.a + .d {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
/* if array has multiple items */
|
||||||
|
.c + .b {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
/* normal sibling */
|
||||||
|
.b + .c {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
/* not match */
|
||||||
|
.a + .c {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="b" />
|
||||||
|
<div class="c" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<div class="d" />
|
@ -0,0 +1,144 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
21:
|
||||||
|
22: /* no match */
|
||||||
|
23: .a + .c { color: green; }
|
||||||
|
^
|
||||||
|
24: .a + .g { color: green; }
|
||||||
|
25: .b + .e { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".a + .c"',
|
||||||
|
pos: 479,
|
||||||
|
start: { character: 479, column: 1, line: 23 },
|
||||||
|
end: { character: 486, column: 8, line: 23 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
22: /* no match */
|
||||||
|
23: .a + .c { color: green; }
|
||||||
|
24: .a + .g { color: green; }
|
||||||
|
^
|
||||||
|
25: .b + .e { color: green; }
|
||||||
|
26: .c + .g { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".a + .g"',
|
||||||
|
pos: 506,
|
||||||
|
start: { character: 506, column: 1, line: 24 },
|
||||||
|
end: { character: 513, column: 8, line: 24 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
23: .a + .c { color: green; }
|
||||||
|
24: .a + .g { color: green; }
|
||||||
|
25: .b + .e { color: green; }
|
||||||
|
^
|
||||||
|
26: .c + .g { color: green; }
|
||||||
|
27: .c + .k { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".b + .e"',
|
||||||
|
pos: 533,
|
||||||
|
start: { character: 533, column: 1, line: 25 },
|
||||||
|
end: { character: 540, column: 8, line: 25 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
24: .a + .g { color: green; }
|
||||||
|
25: .b + .e { color: green; }
|
||||||
|
26: .c + .g { color: green; }
|
||||||
|
^
|
||||||
|
27: .c + .k { color: green; }
|
||||||
|
28: .d + .d { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".c + .g"',
|
||||||
|
pos: 560,
|
||||||
|
start: { character: 560, column: 1, line: 26 },
|
||||||
|
end: { character: 567, column: 8, line: 26 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
25: .b + .e { color: green; }
|
||||||
|
26: .c + .g { color: green; }
|
||||||
|
27: .c + .k { color: green; }
|
||||||
|
^
|
||||||
|
28: .d + .d { color: green; }
|
||||||
|
29: .e + .f { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".c + .k"',
|
||||||
|
pos: 587,
|
||||||
|
start: { character: 587, column: 1, line: 27 },
|
||||||
|
end: { character: 594, column: 8, line: 27 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
26: .c + .g { color: green; }
|
||||||
|
27: .c + .k { color: green; }
|
||||||
|
28: .d + .d { color: green; }
|
||||||
|
^
|
||||||
|
29: .e + .f { color: green; }
|
||||||
|
30: .f + .f { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".d + .d"',
|
||||||
|
pos: 614,
|
||||||
|
start: { character: 614, column: 1, line: 28 },
|
||||||
|
end: { character: 621, column: 8, line: 28 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
27: .c + .k { color: green; }
|
||||||
|
28: .d + .d { color: green; }
|
||||||
|
29: .e + .f { color: green; }
|
||||||
|
^
|
||||||
|
30: .f + .f { color: green; }
|
||||||
|
31: .g + .j { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".e + .f"',
|
||||||
|
pos: 641,
|
||||||
|
start: { character: 641, column: 1, line: 29 },
|
||||||
|
end: { character: 648, column: 8, line: 29 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
28: .d + .d { color: green; }
|
||||||
|
29: .e + .f { color: green; }
|
||||||
|
30: .f + .f { color: green; }
|
||||||
|
^
|
||||||
|
31: .g + .j { color: green; }
|
||||||
|
32: .g + .h + .i + .j { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".f + .f"',
|
||||||
|
pos: 668,
|
||||||
|
start: { character: 668, column: 1, line: 30 },
|
||||||
|
end: { character: 675, column: 8, line: 30 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
29: .e + .f { color: green; }
|
||||||
|
30: .f + .f { color: green; }
|
||||||
|
31: .g + .j { color: green; }
|
||||||
|
^
|
||||||
|
32: .g + .h + .i + .j { color: green; }
|
||||||
|
33: </style>`,
|
||||||
|
message: 'Unused CSS selector ".g + .j"',
|
||||||
|
pos: 695,
|
||||||
|
start: { character: 695, column: 1, line: 31 },
|
||||||
|
end: { character: 702, column: 8, line: 31 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
30: .f + .f { color: green; }
|
||||||
|
31: .g + .j { color: green; }
|
||||||
|
32: .g + .h + .i + .j { color: green; }
|
||||||
|
^
|
||||||
|
33: </style>
|
||||||
|
34:`,
|
||||||
|
message: 'Unused CSS selector ".g + .h + .i + .j"',
|
||||||
|
pos: 722,
|
||||||
|
start: { character: 722, column: 1, line: 32 },
|
||||||
|
end: { character: 739, column: 18, line: 32 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz+.c.svelte-xyz.svelte-xyz{color:green}.b.svelte-xyz+.d.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz+.j.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz+.h.svelte-xyz+.j.svelte-xyz{color:green}.g.svelte-xyz+.i.svelte-xyz+.j.svelte-xyz{color:green}.m.svelte-xyz+.m.svelte-xyz.svelte-xyz{color:green}.m.svelte-xyz+.l.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz+.m.svelte-xyz.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="f svelte-xyz"></div>
|
||||||
|
<div class="k"></div>
|
@ -0,0 +1,74 @@
|
|||||||
|
<script>
|
||||||
|
let array = [];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a + .e { color: green; }
|
||||||
|
.a + .f { color: green; }
|
||||||
|
.b + .c { color: green; }
|
||||||
|
.b + .d { color: green; }
|
||||||
|
.c + .e { color: green; }
|
||||||
|
.c + .f { color: green; }
|
||||||
|
.d + .e { color: green; }
|
||||||
|
.d + .f { color: green; }
|
||||||
|
.e + .e { color: green; }
|
||||||
|
.i + .j { color: green; }
|
||||||
|
.g + .h + .j { color: green; }
|
||||||
|
.g + .i + .j { color: green; }
|
||||||
|
.m + .m { color: green; }
|
||||||
|
.m + .l { color: green; }
|
||||||
|
.l + .m { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.a + .c { color: green; }
|
||||||
|
.a + .g { color: green; }
|
||||||
|
.b + .e { color: green; }
|
||||||
|
.c + .g { color: green; }
|
||||||
|
.c + .k { color: green; }
|
||||||
|
.d + .d { color: green; }
|
||||||
|
.e + .f { color: green; }
|
||||||
|
.f + .f { color: green; }
|
||||||
|
.g + .j { color: green; }
|
||||||
|
.g + .h + .i + .j { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as a}
|
||||||
|
<div class="b" />
|
||||||
|
{#each array as b}
|
||||||
|
<div class="c" />
|
||||||
|
{:else}
|
||||||
|
<div class="d" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as c}
|
||||||
|
{#each array as d}
|
||||||
|
<div class="e" />
|
||||||
|
{/each}
|
||||||
|
{:else}
|
||||||
|
<div class="f" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="g" />
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="h" />
|
||||||
|
{/each}
|
||||||
|
{:else}
|
||||||
|
<div class="i" />
|
||||||
|
{/each}
|
||||||
|
<div class="j" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<div class="k" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="l" />
|
||||||
|
{:else}
|
||||||
|
<div class="m" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
@ -0,0 +1,32 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
10:
|
||||||
|
11: /* no match */
|
||||||
|
12: .a + .d { color: green; }
|
||||||
|
^
|
||||||
|
13: .b + .c { color: green; }
|
||||||
|
14: </style>`,
|
||||||
|
message: 'Unused CSS selector ".a + .d"',
|
||||||
|
pos: 172,
|
||||||
|
start: { character: 172, column: 1, line: 12 },
|
||||||
|
end: { character: 179, column: 8, line: 12 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
11: /* no match */
|
||||||
|
12: .a + .d { color: green; }
|
||||||
|
13: .b + .c { color: green; }
|
||||||
|
^
|
||||||
|
14: </style>
|
||||||
|
15:`,
|
||||||
|
message: 'Unused CSS selector ".b + .c"',
|
||||||
|
pos: 199,
|
||||||
|
start: { character: 199, column: 1, line: 13 },
|
||||||
|
end: { character: 206, column: 8, line: 13 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz+.b.svelte-xyz{color:green}.a.svelte-xyz+.c.svelte-xyz{color:green}.b.svelte-xyz+.d.svelte-xyz{color:green}.c.svelte-xyz+.d.svelte-xyz{color:green}
|
@ -0,0 +1,3 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="c svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
@ -0,0 +1,24 @@
|
|||||||
|
<script>
|
||||||
|
let array = [];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.a + .b { color: green; }
|
||||||
|
.a + .c { color: green; }
|
||||||
|
.b + .d { color: green; }
|
||||||
|
.c + .d { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.a + .d { color: green; }
|
||||||
|
.b + .c { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="b" />
|
||||||
|
{:else}
|
||||||
|
<div class="c" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<div class="d" />
|
@ -0,0 +1,116 @@
|
|||||||
|
export default {
|
||||||
|
warnings: [
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
56:
|
||||||
|
57: /* no match */
|
||||||
|
58: .a + .h { color: green; }
|
||||||
|
^
|
||||||
|
59: .a + .i { color: green; }
|
||||||
|
60: .c + .h { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".a + .h"',
|
||||||
|
pos: 1229,
|
||||||
|
start: { character: 1229, column: 1, line: 58 },
|
||||||
|
end: { character: 1236, column: 8, line: 58 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
57: /* no match */
|
||||||
|
58: .a + .h { color: green; }
|
||||||
|
59: .a + .i { color: green; }
|
||||||
|
^
|
||||||
|
60: .c + .h { color: green; }
|
||||||
|
61: .c + .i { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".a + .i"',
|
||||||
|
pos: 1256,
|
||||||
|
start: { character: 1256, column: 1, line: 59 },
|
||||||
|
end: { character: 1263, column: 8, line: 59 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
58: .a + .h { color: green; }
|
||||||
|
59: .a + .i { color: green; }
|
||||||
|
60: .c + .h { color: green; }
|
||||||
|
^
|
||||||
|
61: .c + .i { color: green; }
|
||||||
|
62: .d + .f { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".c + .h"',
|
||||||
|
pos: 1283,
|
||||||
|
start: { character: 1283, column: 1, line: 60 },
|
||||||
|
end: { character: 1290, column: 8, line: 60 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
59: .a + .i { color: green; }
|
||||||
|
60: .c + .h { color: green; }
|
||||||
|
61: .c + .i { color: green; }
|
||||||
|
^
|
||||||
|
62: .d + .f { color: green; }
|
||||||
|
63: .d + .g { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".c + .i"',
|
||||||
|
pos: 1310,
|
||||||
|
start: { character: 1310, column: 1, line: 61 },
|
||||||
|
end: { character: 1317, column: 8, line: 61 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
60: .c + .h { color: green; }
|
||||||
|
61: .c + .i { color: green; }
|
||||||
|
62: .d + .f { color: green; }
|
||||||
|
^
|
||||||
|
63: .d + .g { color: green; }
|
||||||
|
64: .e + .g { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".d + .f"',
|
||||||
|
pos: 1337,
|
||||||
|
start: { character: 1337, column: 1, line: 62 },
|
||||||
|
end: { character: 1344, column: 8, line: 62 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
61: .c + .i { color: green; }
|
||||||
|
62: .d + .f { color: green; }
|
||||||
|
63: .d + .g { color: green; }
|
||||||
|
^
|
||||||
|
64: .e + .g { color: green; }
|
||||||
|
65: .g + .i { color: green; }`,
|
||||||
|
message: 'Unused CSS selector ".d + .g"',
|
||||||
|
pos: 1364,
|
||||||
|
start: { character: 1364, column: 1, line: 63 },
|
||||||
|
end: { character: 1371, column: 8, line: 63 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
62: .d + .f { color: green; }
|
||||||
|
63: .d + .g { color: green; }
|
||||||
|
64: .e + .g { color: green; }
|
||||||
|
^
|
||||||
|
65: .g + .i { color: green; }
|
||||||
|
66: </style>`,
|
||||||
|
message: 'Unused CSS selector ".e + .g"',
|
||||||
|
pos: 1391,
|
||||||
|
start: { character: 1391, column: 1, line: 64 },
|
||||||
|
end: { character: 1398, column: 8, line: 64 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: "css-unused-selector",
|
||||||
|
frame: `
|
||||||
|
63: .d + .g { color: green; }
|
||||||
|
64: .e + .g { color: green; }
|
||||||
|
65: .g + .i { color: green; }
|
||||||
|
^
|
||||||
|
66: </style>
|
||||||
|
67:`,
|
||||||
|
message: 'Unused CSS selector ".g + .i"',
|
||||||
|
pos: 1418,
|
||||||
|
start: { character: 1418, column: 1, line: 65 },
|
||||||
|
end: { character: 1425, column: 8, line: 65 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
.a.svelte-xyz+.d.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.a.svelte-xyz+.g.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.d.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.c.svelte-xyz+.g.svelte-xyz.svelte-xyz{color:green}.j.svelte-xyz+.m.svelte-xyz.svelte-xyz{color:green}.j.svelte-xyz+.n.svelte-xyz.svelte-xyz{color:green}.j.svelte-xyz+.o.svelte-xyz.svelte-xyz{color:green}.k.svelte-xyz+.m.svelte-xyz.svelte-xyz{color:green}.k.svelte-xyz+.n.svelte-xyz.svelte-xyz{color:green}.k.svelte-xyz+.o.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz+.m.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz+.n.svelte-xyz.svelte-xyz{color:green}.l.svelte-xyz+.o.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz+.h.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz+.d.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.h.svelte-xyz+.g.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz+.h.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz+.g.svelte-xyz.svelte-xyz{color:green}.d.svelte-xyz+.d.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz+.e.svelte-xyz.svelte-xyz{color:green}.f.svelte-xyz+.f.svelte-xyz.svelte-xyz{color:green}.g.svelte-xyz+.g.svelte-xyz.svelte-xyz{color:green}.h.svelte-xyz+.h.svelte-xyz.svelte-xyz{color:green}.i.svelte-xyz+.i.svelte-xyz.svelte-xyz{color:green}.e.svelte-xyz+.e.svelte-xyz+.f.svelte-xyz{color:green}.e.svelte-xyz+.e.svelte-xyz+.d.svelte-xyz{color:green}.h.svelte-xyz+.h.svelte-xyz+.i.svelte-xyz{color:green}.h.svelte-xyz+.h.svelte-xyz+.g.svelte-xyz{color:green}
|
@ -0,0 +1,15 @@
|
|||||||
|
<div class="a svelte-xyz"></div>
|
||||||
|
<div class="b"></div>
|
||||||
|
<div class="c svelte-xyz"></div>
|
||||||
|
<div class="d svelte-xyz"></div>
|
||||||
|
<div class="e svelte-xyz"></div>
|
||||||
|
<div class="f svelte-xyz"></div>
|
||||||
|
<div class="g svelte-xyz"></div>
|
||||||
|
<div class="h svelte-xyz"></div>
|
||||||
|
<div class="i svelte-xyz"></div>
|
||||||
|
<div class="j svelte-xyz"></div>
|
||||||
|
<div class="k svelte-xyz"></div>
|
||||||
|
<div class="l svelte-xyz"></div>
|
||||||
|
<div class="m svelte-xyz"></div>
|
||||||
|
<div class="n svelte-xyz"></div>
|
||||||
|
<div class="o svelte-xyz"></div>
|
@ -0,0 +1,113 @@
|
|||||||
|
<script>
|
||||||
|
let array = [1];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* boundary of each */
|
||||||
|
.a + .d { color: green; }
|
||||||
|
.a + .e { color: green; }
|
||||||
|
.a + .f { color: green; }
|
||||||
|
.a + .g { color: green; }
|
||||||
|
.c + .d { color: green; }
|
||||||
|
.c + .e { color: green; }
|
||||||
|
.c + .f { color: green; }
|
||||||
|
.c + .g { color: green; }
|
||||||
|
|
||||||
|
/* nested boundary of each */
|
||||||
|
.j + .m { color: green; }
|
||||||
|
.j + .n { color: green; }
|
||||||
|
.j + .o { color: green; }
|
||||||
|
.k + .m { color: green; }
|
||||||
|
.k + .n { color: green; }
|
||||||
|
.k + .o { color: green; }
|
||||||
|
.l + .m { color: green; }
|
||||||
|
.l + .n { color: green; }
|
||||||
|
.l + .o { color: green; }
|
||||||
|
|
||||||
|
/* parent each */
|
||||||
|
.d + .e { color: green; }
|
||||||
|
.e + .f { color: green; }
|
||||||
|
|
||||||
|
/* child each */
|
||||||
|
.g + .h { color: green; }
|
||||||
|
|
||||||
|
/* wrap around */
|
||||||
|
.f + .d { color: green; }
|
||||||
|
.f + .e { color: green; }
|
||||||
|
.f + .f { color: green; }
|
||||||
|
|
||||||
|
.h + .g { color: green; }
|
||||||
|
.i + .h { color: green; }
|
||||||
|
.i + .g { color: green; }
|
||||||
|
|
||||||
|
/* wrap around self */
|
||||||
|
.d + .d { color: green; }
|
||||||
|
.e + .e { color: green; }
|
||||||
|
.f + .f { color: green; }
|
||||||
|
.g + .g { color: green; }
|
||||||
|
.h + .h { color: green; }
|
||||||
|
.i + .i { color: green; }
|
||||||
|
|
||||||
|
/* wrap around self + next */
|
||||||
|
.e + .e + .f { color: green; }
|
||||||
|
.e + .e + .d { color: green; }
|
||||||
|
.h + .h + .i { color: green; }
|
||||||
|
.h + .h + .g { color: green; }
|
||||||
|
|
||||||
|
/* no match */
|
||||||
|
.a + .h { color: green; }
|
||||||
|
.a + .i { color: green; }
|
||||||
|
.c + .h { color: green; }
|
||||||
|
.c + .i { color: green; }
|
||||||
|
.d + .f { color: green; }
|
||||||
|
.d + .g { color: green; }
|
||||||
|
.e + .g { color: green; }
|
||||||
|
.g + .i { color: green; }
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="a" />
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="b" />
|
||||||
|
<div class="c" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="d" />
|
||||||
|
{/each}
|
||||||
|
<div class="e" />
|
||||||
|
{/each}
|
||||||
|
<div class="f" />
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="g" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="h" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="i" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
<div class="j" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="k" />
|
||||||
|
{#each array as item}
|
||||||
|
<div class="l" />
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
{#each array as item}
|
||||||
|
<div class="m" />
|
||||||
|
{/each}
|
||||||
|
<div class="n" />
|
||||||
|
{/each}
|
||||||
|
<div class="o" />
|
||||||
|
{/each}
|
@ -0,0 +1 @@
|
|||||||
|
div.svelte-xyz+span.svelte-xyz{color:green}
|
@ -0,0 +1,6 @@
|
|||||||
|
<div class="svelte-xyz"></div>
|
||||||
|
<span class="each svelte-xyz"></span>
|
||||||
|
<div class="each svelte-xyz"></div>
|
||||||
|
<span class="each svelte-xyz"></span>
|
||||||
|
<div class="each svelte-xyz"></div>
|
||||||
|
<span class="svelte-xyz"></span>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue