note action/etc. references even when hoistable (#2294)

pull/2312/head
Conduitry 5 years ago
parent d1536b21a2
commit b33fd1797a

@ -1164,9 +1164,11 @@ export default class Component {
const variable = this.var_lookup.get(name);
if (!variable) return name;
if (variable && variable.hoistable) return name;
this.add_reference(name); // TODO we can probably remove most other occurrences of this
if (variable.hoistable) return name;
return `ctx.${name}`;
}

@ -1,6 +1,16 @@
export default {
test(assert, vars) {
assert.deepEqual(vars, [
{
export_name: null,
injected: false,
module: false,
mutated: false,
name: 'hoistable_foo',
reassigned: false,
referenced: true,
writable: false
},
{
export_name: null,
injected: false,

@ -1,5 +1,7 @@
<script>
import hoistable_foo from '';
let foo;
</script>
<div use:hoistable_foo/>
<div use:foo/>

@ -1,6 +1,16 @@
export default {
test(assert, vars) {
assert.deepEqual(vars, [
{
export_name: null,
injected: false,
module: false,
mutated: false,
name: 'hoistable_foo',
reassigned: false,
referenced: true,
writable: false
},
{
export_name: null,
injected: false,

@ -1,7 +1,11 @@
<script>
import hoistable_foo from '';
let foo;
</script>
{#each [] as x (x)}
<div animate:hoistable_foo/>
{/each}
{#each [] as x (x)}
<div animate:foo/>
{/each}

@ -1,6 +1,36 @@
export default {
test(assert, vars) {
assert.deepEqual(vars, [
{
export_name: null,
injected: false,
module: false,
mutated: false,
name: 'hoistable_foo',
reassigned: false,
referenced: true,
writable: false
},
{
export_name: null,
injected: false,
module: false,
mutated: false,
name: 'hoistable_bar',
reassigned: false,
referenced: true,
writable: false
},
{
export_name: null,
injected: false,
module: false,
mutated: false,
name: 'hoistable_baz',
reassigned: false,
referenced: true,
writable: false
},
{
export_name: null,
injected: false,

@ -1,9 +1,13 @@
<script>
import { hoistable_foo, hoistable_bar, hoistable_baz } from '';
let foo;
let bar;
let baz;
</script>
<div in:hoistable_foo/>
<div out:hoistable_bar/>
<div transition:hoistable_baz/>
<div in:foo/>
<div out:bar/>
<div transition:baz/>

Loading…
Cancel
Save