mirror of https://github.com/sveltejs/svelte
parent
33c8cd3329
commit
81c5c480e8
@ -0,0 +1,33 @@
|
|||||||
|
import { Node } from 'estree';
|
||||||
|
import is_reference from 'is-reference';
|
||||||
|
|
||||||
|
export default function is_used_as_reference(
|
||||||
|
node: Node,
|
||||||
|
parent: Node
|
||||||
|
): boolean {
|
||||||
|
if (!is_reference(node, parent)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!parent) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (parent.type) {
|
||||||
|
// disregard the `foo` in `const foo = bar`
|
||||||
|
case 'VariableDeclarator':
|
||||||
|
return node !== parent.id;
|
||||||
|
// disregard the `foo`, `bar` in `function foo(bar){}`
|
||||||
|
case 'FunctionDeclaration':
|
||||||
|
// disregard the `foo` in `import { foo } from 'foo'`
|
||||||
|
case 'ImportSpecifier':
|
||||||
|
// disregard the `foo` in `import foo from 'foo'`
|
||||||
|
case 'ImportDefaultSpecifier':
|
||||||
|
// disregard the `foo` in `import * as foo from 'foo'`
|
||||||
|
case 'ImportNamespaceSpecifier':
|
||||||
|
// disregard the `foo` in `export { foo }`
|
||||||
|
case 'ExportSpecifier':
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
<script>
|
||||||
|
var a = 1;
|
||||||
|
let b = 1;
|
||||||
|
const c = 1;
|
||||||
|
var d = 1;
|
||||||
|
let e = 1;
|
||||||
|
const f = 1;
|
||||||
|
export { d, e, f};
|
||||||
|
export var g = 1;
|
||||||
|
export let h = 1;
|
||||||
|
export const i = 1;
|
||||||
|
export let j = () => {};
|
||||||
|
export const k = () => {};
|
||||||
|
export function l() {};
|
||||||
|
var m = 1;
|
||||||
|
let n = 1;
|
||||||
|
const o = 1;
|
||||||
|
function foo() {
|
||||||
|
return m + n + o;
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,77 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"code": "unused-export-let",
|
||||||
|
"end": {
|
||||||
|
"character": 103,
|
||||||
|
"column": 12,
|
||||||
|
"line": 8
|
||||||
|
},
|
||||||
|
"message": "Component has unused export property 'd'. If it is for external reference only, please consider using `export const 'd'`",
|
||||||
|
"pos": 102,
|
||||||
|
"start": {
|
||||||
|
"character": 102,
|
||||||
|
"column": 11,
|
||||||
|
"line": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "unused-export-let",
|
||||||
|
"end": {
|
||||||
|
"character": 106,
|
||||||
|
"column": 15,
|
||||||
|
"line": 8
|
||||||
|
},
|
||||||
|
"message": "Component has unused export property 'e'. If it is for external reference only, please consider using `export const 'e'`",
|
||||||
|
"pos": 105,
|
||||||
|
"start": {
|
||||||
|
"character": 105,
|
||||||
|
"column": 14,
|
||||||
|
"line": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "unused-export-let",
|
||||||
|
"end": {
|
||||||
|
"character": 130,
|
||||||
|
"column": 18,
|
||||||
|
"line": 9
|
||||||
|
},
|
||||||
|
"message": "Component has unused export property 'g'. If it is for external reference only, please consider using `export const 'g'`",
|
||||||
|
"pos": 125,
|
||||||
|
"start": {
|
||||||
|
"character": 125,
|
||||||
|
"column": 13,
|
||||||
|
"line": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "unused-export-let",
|
||||||
|
"end": {
|
||||||
|
"character": 150,
|
||||||
|
"column": 18,
|
||||||
|
"line": 10
|
||||||
|
},
|
||||||
|
"message": "Component has unused export property 'h'. If it is for external reference only, please consider using `export const 'h'`",
|
||||||
|
"pos": 145,
|
||||||
|
"start": {
|
||||||
|
"character": 145,
|
||||||
|
"column": 13,
|
||||||
|
"line": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "unused-export-let",
|
||||||
|
"end": {
|
||||||
|
"character": 199,
|
||||||
|
"column": 25,
|
||||||
|
"line": 12
|
||||||
|
},
|
||||||
|
"message": "Component has unused export property 'j'. If it is for external reference only, please consider using `export const 'j'`",
|
||||||
|
"pos": 187,
|
||||||
|
"start": {
|
||||||
|
"character": 187,
|
||||||
|
"column": 13,
|
||||||
|
"line": 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,160 @@
|
|||||||
|
export default {
|
||||||
|
test(assert, vars) {
|
||||||
|
assert.deepEqual(vars, [
|
||||||
|
{
|
||||||
|
name: 'i',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: false,
|
||||||
|
referenced_from_script: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'j',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: false,
|
||||||
|
referenced_from_script: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'k',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: false,
|
||||||
|
referenced_from_script: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'a',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: true,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'b',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'c',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'd',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'e',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'f',
|
||||||
|
export_name: 'f',
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'g',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'h',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: true,
|
||||||
|
referenced: false,
|
||||||
|
writable: true,
|
||||||
|
referenced_from_script: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'foo',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: false,
|
||||||
|
referenced_from_script: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'l',
|
||||||
|
export_name: null,
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
referenced_from_script: true,
|
||||||
|
writable: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'bar',
|
||||||
|
export_name: 'bar',
|
||||||
|
injected: false,
|
||||||
|
module: false,
|
||||||
|
mutated: false,
|
||||||
|
reassigned: false,
|
||||||
|
referenced: false,
|
||||||
|
writable: false,
|
||||||
|
referenced_from_script: false,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
};
|
@ -0,0 +1,16 @@
|
|||||||
|
<script>
|
||||||
|
import i from 'foo';
|
||||||
|
import * as j from 'foo';
|
||||||
|
import { k } from 'foo';
|
||||||
|
let a, b, c, d, e, f, g, h;
|
||||||
|
|
||||||
|
function foo() {
|
||||||
|
a = 1;
|
||||||
|
console.log(b);
|
||||||
|
return c + d.e + h++ + l();
|
||||||
|
}
|
||||||
|
function l() {}
|
||||||
|
|
||||||
|
export { f }
|
||||||
|
export const bar = g;
|
||||||
|
</script>
|
Loading…
Reference in new issue