fix: ensure if block is executed in correct order

pull/10053/head
Dominic Gannaway 3 years ago
parent b8f3c49e5f
commit 100d2e6083

@ -0,0 +1,5 @@
---
'svelte': patch
---
fix: ensure if block is executed in correct order

@ -843,7 +843,7 @@ export function get(signal) {
current_dependencies_index++;
} else if (current_dependencies === null) {
current_dependencies = [signal];
} else if (signal !== current_dependencies[current_dependencies.length - 1]) {
} else {
current_dependencies.push(signal);
}
if (

@ -0,0 +1,9 @@
<script>
const { item } = $props();
</script>
<div>
{#if item}
{item.length}
{/if}
</div>

@ -0,0 +1,17 @@
import { flushSync } from 'svelte';
import { test } from '../../test';
export default test({
async test({ assert, target, component }) {
const [b1, b2] = target.querySelectorAll('button');
assert.htmlEqual(target.innerHTML, '<div>5</div><div>5</div><div>3</div><button>set null</button><button>set object</button');
flushSync(() => {
b2.click();
});
assert.htmlEqual(target.innerHTML, '<div>5</div><div>5</div><div>3</div><button>set null</button><button>set object</button');
flushSync(() => {
b1.click();
});
assert.htmlEqual(target.innerHTML, '<div>5</div><div></div><div>3</div><button>set null</button><button>set object</button');
}
});

@ -0,0 +1,12 @@
<script>
import Component from './Component.svelte';
let items = $state(['hello', 'world', 'bye']);
</script>
{#each items as item}
<Component {item} />
{/each}
<button onclick={() => (items[1] = null)}> set null </button>
<button onclick={() => (items[1] = 'hello')}> set object </button>
Loading…
Cancel
Save