Skip to content

Commit e2adf6a

Browse files
authored
fix: do not generate unused-export-let inside <script context="module"> (#7232)
Fixes #7055. This warning can be delegated to userland tools like eslint
1 parent 9b7b814 commit e2adf6a

File tree

3 files changed

+84
-61
lines changed

3 files changed

+84
-61
lines changed

src/compiler/compile/Component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ export default class Component {
519519
return result;
520520
}
521521

522-
private _extract_exports(node: ExportDefaultDeclaration | ExportNamedDeclaration | ExportAllDeclaration, module_script) {
522+
private _extract_exports(node: ExportDefaultDeclaration | ExportNamedDeclaration | ExportAllDeclaration, module_script: boolean) {
523523
if (node.type === 'ExportDefaultDeclaration') {
524524
return this.error(node as any, compiler_errors.default_export);
525525
}
@@ -539,7 +539,7 @@ export default class Component {
539539
extract_names(declarator.id).forEach(name => {
540540
const variable = this.var_lookup.get(name);
541541
variable.export_name = name;
542-
if (variable.writable && !(variable.referenced || variable.referenced_from_script || variable.subscribable)) {
542+
if (!module_script && variable.writable && !(variable.referenced || variable.referenced_from_script || variable.subscribable)) {
543543
this.warn(declarator as any, compiler_warnings.unused_export_let(this.name.name, name));
544544
}
545545
});
@@ -559,7 +559,7 @@ export default class Component {
559559
if (variable) {
560560
variable.export_name = specifier.exported.name;
561561

562-
if (variable.writable && !(variable.referenced || variable.referenced_from_script || variable.subscribable)) {
562+
if (!module_script && variable.writable && !(variable.referenced || variable.referenced_from_script || variable.subscribable)) {
563563
this.warn(specifier as any, compiler_warnings.unused_export_let(this.name.name, specifier.exported.name));
564564
}
565565
}
Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,48 @@
1+
<script context="module">
2+
var a1 = 1;
3+
let b1 = 1;
4+
const c1 = 1;
5+
var d1 = 1;
6+
let e1 = 1;
7+
const f1 = 1;
8+
export { d1, e1, f1};
9+
export var g1 = 1;
10+
export let h1 = 1;
11+
export const i1 = 1;
12+
export let j1 = () => {};
13+
export const k1 = () => {};
14+
export function l1() {};
15+
var m1 = 1;
16+
let n1 = 1;
17+
const o1 = 1;
18+
function foo1() {
19+
return m1 + n1 + o1;
20+
}
21+
export let p1;
22+
</script>
23+
124
<script>
2-
var a = 1;
3-
let b = 1;
4-
const c = 1;
5-
var d = 1;
6-
let e = 1;
7-
const f = 1;
8-
export { d, e, f};
9-
export var g = 1;
10-
export let h = 1;
11-
export const i = 1;
12-
export let j = () => {};
13-
export const k = () => {};
14-
export function l() {};
15-
var m = 1;
16-
let n = 1;
17-
const o = 1;
18-
function foo() {
19-
return m + n + o;
25+
var a2 = 1;
26+
let b2 = 1;
27+
const c2 = 1;
28+
var d2 = 1;
29+
let e2 = 1;
30+
const f2 = 1;
31+
export { d2, e2, f2};
32+
export var g2 = 1;
33+
export let h2 = 1;
34+
export const i2 = 1;
35+
export let j2 = () => {};
36+
export const k2 = () => {};
37+
export function l2() {};
38+
var m2 = 1;
39+
let n2 = 1;
40+
const o2 = 1;
41+
function foo2() {
42+
return m2 + n2 + o2;
2043
}
21-
export let p;
22-
export let q;
23-
$p;
44+
export let p2;
45+
export let q2;
46+
$p2;
2447
</script>
25-
{$q}
48+
{$q2}

test/validator/samples/unreferenced-variables/warnings.json

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,76 +2,76 @@
22
{
33
"code": "unused-export-let",
44
"end": {
5-
"character": 103,
6-
"column": 12,
7-
"line": 8
5+
"character": 519,
6+
"column": 13,
7+
"line": 31
88
},
9-
"message": "Component has unused export property 'd'. If it is for external reference only, please consider using `export const d`",
10-
"pos": 102,
9+
"message": "Component has unused export property 'd2'. If it is for external reference only, please consider using `export const d2`",
10+
"pos": 517,
1111
"start": {
12-
"character": 102,
12+
"character": 517,
1313
"column": 11,
14-
"line": 8
14+
"line": 31
1515
}
1616
},
1717
{
1818
"code": "unused-export-let",
1919
"end": {
20-
"character": 106,
21-
"column": 15,
22-
"line": 8
20+
"character": 523,
21+
"column": 17,
22+
"line": 31
2323
},
24-
"message": "Component has unused export property 'e'. If it is for external reference only, please consider using `export const e`",
25-
"pos": 105,
24+
"message": "Component has unused export property 'e2'. If it is for external reference only, please consider using `export const e2`",
25+
"pos": 521,
2626
"start": {
27-
"character": 105,
28-
"column": 14,
29-
"line": 8
27+
"character": 521,
28+
"column": 15,
29+
"line": 31
3030
}
3131
},
3232
{
3333
"code": "unused-export-let",
3434
"end": {
35-
"character": 130,
36-
"column": 18,
37-
"line": 9
35+
"character": 549,
36+
"column": 19,
37+
"line": 32
3838
},
39-
"message": "Component has unused export property 'g'. If it is for external reference only, please consider using `export const g`",
40-
"pos": 125,
39+
"message": "Component has unused export property 'g2'. If it is for external reference only, please consider using `export const g2`",
40+
"pos": 543,
4141
"start": {
42-
"character": 125,
42+
"character": 543,
4343
"column": 13,
44-
"line": 9
44+
"line": 32
4545
}
4646
},
4747
{
4848
"code": "unused-export-let",
4949
"end": {
50-
"character": 150,
51-
"column": 18,
52-
"line": 10
50+
"character": 570,
51+
"column": 19,
52+
"line": 33
5353
},
54-
"message": "Component has unused export property 'h'. If it is for external reference only, please consider using `export const h`",
55-
"pos": 145,
54+
"message": "Component has unused export property 'h2'. If it is for external reference only, please consider using `export const h2`",
55+
"pos": 564,
5656
"start": {
57-
"character": 145,
57+
"character": 564,
5858
"column": 13,
59-
"line": 10
59+
"line": 33
6060
}
6161
},
6262
{
6363
"code": "unused-export-let",
6464
"end": {
65-
"character": 199,
66-
"column": 25,
67-
"line": 12
65+
"character": 621,
66+
"column": 26,
67+
"line": 35
6868
},
69-
"message": "Component has unused export property 'j'. If it is for external reference only, please consider using `export const j`",
70-
"pos": 187,
69+
"message": "Component has unused export property 'j2'. If it is for external reference only, please consider using `export const j2`",
70+
"pos": 608,
7171
"start": {
72-
"character": 187,
72+
"character": 608,
7373
"column": 13,
74-
"line": 12
74+
"line": 35
7575
}
7676
}
7777
]

0 commit comments

Comments
 (0)