Skip to content

Commit f6f06b3

Browse files
authored
Merge pull request sveltejs#2312 from sveltejs/sveltejsgh-2294
note action/etc. references even when hoistable
2 parents 415da7d + b33fd17 commit f6f06b3

File tree

7 files changed

+63
-1
lines changed

7 files changed

+63
-1
lines changed

src/compile/Component.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1164,9 +1164,11 @@ export default class Component {
11641164
const variable = this.var_lookup.get(name);
11651165

11661166
if (!variable) return name;
1167-
if (variable && variable.hoistable) return name;
11681167

11691168
this.add_reference(name); // TODO we can probably remove most other occurrences of this
1169+
1170+
if (variable.hoistable) return name;
1171+
11701172
return `ctx.${name}`;
11711173
}
11721174

test/vars/samples/actions/_config.js

+10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
export default {
22
test(assert, vars) {
33
assert.deepEqual(vars, [
4+
{
5+
export_name: null,
6+
injected: false,
7+
module: false,
8+
mutated: false,
9+
name: 'hoistable_foo',
10+
reassigned: false,
11+
referenced: true,
12+
writable: false
13+
},
414
{
515
export_name: null,
616
injected: false,
+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<script>
2+
import hoistable_foo from '';
23
let foo;
34
</script>
45

6+
<div use:hoistable_foo/>
57
<div use:foo/>

test/vars/samples/animations/_config.js

+10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
export default {
22
test(assert, vars) {
33
assert.deepEqual(vars, [
4+
{
5+
export_name: null,
6+
injected: false,
7+
module: false,
8+
mutated: false,
9+
name: 'hoistable_foo',
10+
reassigned: false,
11+
referenced: true,
12+
writable: false
13+
},
414
{
515
export_name: null,
616
injected: false,
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<script>
2+
import hoistable_foo from '';
23
let foo;
34
</script>
45

6+
{#each [] as x (x)}
7+
<div animate:hoistable_foo/>
8+
{/each}
59
{#each [] as x (x)}
610
<div animate:foo/>
711
{/each}

test/vars/samples/transitions/_config.js

+30
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,36 @@
11
export default {
22
test(assert, vars) {
33
assert.deepEqual(vars, [
4+
{
5+
export_name: null,
6+
injected: false,
7+
module: false,
8+
mutated: false,
9+
name: 'hoistable_foo',
10+
reassigned: false,
11+
referenced: true,
12+
writable: false
13+
},
14+
{
15+
export_name: null,
16+
injected: false,
17+
module: false,
18+
mutated: false,
19+
name: 'hoistable_bar',
20+
reassigned: false,
21+
referenced: true,
22+
writable: false
23+
},
24+
{
25+
export_name: null,
26+
injected: false,
27+
module: false,
28+
mutated: false,
29+
name: 'hoistable_baz',
30+
reassigned: false,
31+
referenced: true,
32+
writable: false
33+
},
434
{
535
export_name: null,
636
injected: false,
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
<script>
2+
import { hoistable_foo, hoistable_bar, hoistable_baz } from '';
23
let foo;
34
let bar;
45
let baz;
56
</script>
67

8+
<div in:hoistable_foo/>
9+
<div out:hoistable_bar/>
10+
<div transition:hoistable_baz/>
711
<div in:foo/>
812
<div out:bar/>
913
<div transition:baz/>

0 commit comments

Comments
 (0)