Skip to content

Commit d91f431

Browse files
committed
Merge remote-tracking branch 'origin/main' into const-tag-svelte-boundary
2 parents d93af12 + 8a1acac commit d91f431

File tree

43 files changed

+206
-88
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+206
-88
lines changed

.changeset/healthy-hairs-run.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: never consider inert boundary effects

packages/svelte/src/internal/client/reactivity/effects.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ import {
3535
INSPECT_EFFECT,
3636
HEAD_EFFECT,
3737
MAYBE_DIRTY,
38-
EFFECT_HAS_DERIVED
38+
EFFECT_HAS_DERIVED,
39+
BOUNDARY_EFFECT
3940
} from '../constants.js';
4041
import { set } from './sources.js';
4142
import * as e from '../errors.js';
@@ -142,7 +143,7 @@ function create_effect(type, fn, sync, push = true) {
142143
effect.first === null &&
143144
effect.nodes_start === null &&
144145
effect.teardown === null &&
145-
(effect.f & EFFECT_HAS_DERIVED) === 0;
146+
(effect.f & (EFFECT_HAS_DERIVED | BOUNDARY_EFFECT)) === 0;
146147

147148
if (!inert && !is_root && push) {
148149
if (parent_effect !== null) {

packages/svelte/tests/runtime-browser/custom-elements-samples/camel-case-attribute/_config.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../assert';
23
const tick = () => Promise.resolve();
34

@@ -14,8 +15,7 @@ export default test({
1415
el.setAttribute('camel-case', 'universe');
1516
el.setAttribute('an-array', '[3,4]');
1617
el.setAttribute('camelcase2', 'Hi');
17-
await tick();
18-
await tick();
18+
flushSync();
1919
assert.htmlEqual(el.shadowRoot.innerHTML, '<h1>Hi universe!</h1> <p>3</p><p>4</p>');
2020
assert.htmlEqual(
2121
target.innerHTML,
@@ -25,8 +25,7 @@ export default test({
2525
el.camelCase = 'galaxy';
2626
el.camelCase2 = 'Hey';
2727
el.anArray = [5, 6];
28-
await tick();
29-
await tick();
28+
flushSync();
3029
assert.htmlEqual(el.shadowRoot.innerHTML, '<h1>Hey galaxy!</h1> <p>5</p><p>6</p>');
3130
assert.htmlEqual(
3231
target.innerHTML,

packages/svelte/tests/runtime-browser/custom-elements-samples/custom-method/_config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../assert';
23
const tick = () => Promise.resolve();
34

@@ -8,7 +9,8 @@ export default test({
89
/** @type {any} */
910
const el = target.querySelector('custom-element');
1011

11-
await el.updateFoo(42);
12+
el.updateFoo(42);
13+
flushSync();
1214

1315
const p = el.shadowRoot.querySelector('p');
1416
assert.equal(p.textContent, '42');

packages/svelte/tests/runtime-browser/custom-elements-samples/element-effect-context/_config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { test } from '../../assert';
2+
import { flushSync } from 'svelte';
23
const tick = () => Promise.resolve();
34

45
export default test({
@@ -16,7 +17,7 @@ export default test({
1617
assert.equal(p.innerHTML, 'false');
1718

1819
button.click();
19-
await tick();
20+
flushSync();
2021

2122
assert.equal(button.innerHTML, '1');
2223
assert.equal(p.innerHTML, 'false');

packages/svelte/tests/runtime-legacy/samples/action-custom-event-handler-in-each-destructured/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../test';
23

34
export default test({
@@ -10,12 +11,13 @@ export default test({
1011
<p>second: </p>
1112
`,
1213

13-
async test({ assert, component, target, window }) {
14+
test({ assert, component, target, window }) {
1415
const event = new window.MouseEvent('click');
1516

1617
const buttons = target.querySelectorAll('button');
1718

18-
await buttons[1].dispatchEvent(event);
19+
buttons[1].dispatchEvent(event);
20+
flushSync();
1921

2022
assert.htmlEqual(
2123
target.innerHTML,

packages/svelte/tests/runtime-legacy/samples/action-custom-event-handler-in-each/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../test';
23

34
export default test({
@@ -10,12 +11,13 @@ export default test({
1011
<p>fromState: </p>
1112
`,
1213

13-
async test({ assert, component, target, window }) {
14+
test({ assert, component, target, window }) {
1415
const event = new window.MouseEvent('click');
1516

1617
const buttons = target.querySelectorAll('button');
1718

18-
await buttons[1].dispatchEvent(event);
19+
buttons[1].dispatchEvent(event);
20+
flushSync();
1921

2022
assert.htmlEqual(
2123
target.innerHTML,

packages/svelte/tests/runtime-legacy/samples/action-custom-event-handler-node-context/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
45
mode: ['client', 'hydrate'],
56

67
html: '<button>10</button>',
78

8-
async test({ assert, target, window }) {
9+
test({ assert, target, window }) {
910
const event = new window.MouseEvent('click');
1011

1112
const button = target.querySelector('button');
1213
ok(button);
1314

14-
await button.dispatchEvent(event);
15+
button.dispatchEvent(event);
16+
flushSync();
1517

1618
assert.htmlEqual(target.innerHTML, '<button>11</button>');
1719
}

packages/svelte/tests/runtime-legacy/samples/action-custom-event-handler-with-context/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
45
html: '<button>???</button>',
56

6-
async test({ assert, target, window }) {
7+
test({ assert, target, window }) {
78
const event = new window.MouseEvent('click', {
89
clientX: 42,
910
clientY: 42
@@ -12,7 +13,8 @@ export default test({
1213
const button = target.querySelector('button');
1314
ok(button);
1415

15-
await button.dispatchEvent(event);
16+
button.dispatchEvent(event);
17+
flushSync();
1618

1719
assert.htmlEqual(target.innerHTML, '<button>42</button>');
1820
}

packages/svelte/tests/runtime-legacy/samples/action-custom-event-handler/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
45
html: '<button>0, 0</button>',
56

6-
async test({ assert, target, window }) {
7+
test({ assert, target, window }) {
78
const event = new window.MouseEvent('click', {
89
clientX: 42,
910
clientY: 42
@@ -12,7 +13,8 @@ export default test({
1213
const button = target.querySelector('button');
1314
ok(button);
1415

15-
await button.dispatchEvent(event);
16+
button.dispatchEvent(event);
17+
flushSync();
1618

1719
assert.htmlEqual(target.innerHTML, '<button>42, 42</button>');
1820
}

packages/svelte/tests/runtime-legacy/samples/action-this/_config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
@@ -8,7 +9,8 @@ export default test({
89
const click = new window.MouseEvent('click');
910

1011
assert.htmlEqual(target.innerHTML, '<button>1</button>');
11-
await button.dispatchEvent(click);
12+
button.dispatchEvent(click);
13+
flushSync();
1214
assert.htmlEqual(target.innerHTML, '<button>2</button>');
1315
}
1416
});

packages/svelte/tests/runtime-legacy/samples/await-mutate-array/_config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../test';
23

34
export default test({
@@ -11,7 +12,9 @@ export default test({
1112
const [b1] = target.querySelectorAll('button');
1213

1314
b1.click();
14-
await Promise.resolve();
15+
Promise.resolve();
16+
flushSync();
17+
1518
assert.htmlEqual(
1619
target.innerHTML,
1720
`<button>2</button><button>3</button><button>4</button>\n-------\n<button>1</button>`

packages/svelte/tests/runtime-legacy/samples/await-then-destruct-object-if/_config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../test';
23

34
export default test({
@@ -11,6 +12,7 @@ export default test({
1112

1213
async test({ assert, component, target }) {
1314
await (component.thePromise = Promise.resolve({ result: 1 }));
15+
flushSync();
1416

1517
assert.htmlEqual(
1618
target.innerHTML,
@@ -21,6 +23,7 @@ export default test({
2123
);
2224

2325
await new Promise((resolve) => setTimeout(resolve, 1));
26+
flushSync();
2427

2528
assert.htmlEqual(
2629
target.innerHTML,

packages/svelte/tests/runtime-legacy/samples/before-render-chain/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../test';
23

34
export default test({
@@ -9,8 +10,9 @@ export default test({
910
<span>1</span>
1011
`,
1112

12-
async test({ assert, component, target }) {
13-
await component.list.update();
13+
test({ assert, component, target }) {
14+
component.list.update();
15+
flushSync();
1416

1517
assert.htmlEqual(
1618
target.innerHTML,

packages/svelte/tests/runtime-legacy/samples/binding-contenteditable-text-initial/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
@@ -18,7 +19,7 @@ export default test({
1819
<p>hello</p>
1920
`,
2021

21-
async test({ assert, component, target, window }) {
22+
test({ assert, component, target, window }) {
2223
assert.equal(component.name, 'world');
2324

2425
const el = target.querySelector('editor');
@@ -27,7 +28,8 @@ export default test({
2728
const event = new window.Event('input');
2829

2930
el.textContent = 'everybody';
30-
await el.dispatchEvent(event);
31+
el.dispatchEvent(event);
32+
flushSync();
3133

3234
assert.htmlEqual(
3335
target.innerHTML,

packages/svelte/tests/runtime-legacy/samples/binding-contenteditable-text/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
@@ -10,15 +11,16 @@ export default test({
1011
<p>hello world</p>
1112
`,
1213

13-
async test({ assert, component, target, window }) {
14+
test({ assert, component, target, window }) {
1415
const el = target.querySelector('editor');
1516
ok(el);
1617
assert.equal(el.textContent, 'world');
1718

1819
const event = new window.Event('input');
1920

2021
el.textContent = 'everybody';
21-
await el.dispatchEvent(event);
22+
el.dispatchEvent(event);
23+
flushSync();
2224

2325
assert.htmlEqual(
2426
target.innerHTML,

packages/svelte/tests/runtime-legacy/samples/binding-input-checkbox-indeterminate/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
@@ -17,7 +18,7 @@ export default test({
1718
<p>indeterminate? true</p>
1819
`,
1920

20-
async test({ assert, component, target, window }) {
21+
test({ assert, component, target, window }) {
2122
const input = target.querySelector('input');
2223
ok(input);
2324

@@ -28,7 +29,8 @@ export default test({
2829

2930
input.checked = true;
3031
input.indeterminate = false;
31-
await input.dispatchEvent(event);
32+
input.dispatchEvent(event);
33+
flushSync();
3234

3335
assert.equal(component.indeterminate, false);
3436
assert.equal(component.checked, true);

packages/svelte/tests/runtime-legacy/samples/binding-select-in-yield/_config.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { flushSync } from 'svelte';
12
import { ok, test } from '../../test';
23

34
export default test({
@@ -7,8 +8,9 @@ export default test({
78
return { letter: 'b' };
89
},
910

10-
async test({ assert, component, target, window }) {
11-
await component.modal.toggle();
11+
test({ assert, component, target, window }) {
12+
component.modal.toggle();
13+
flushSync();
1214

1315
assert.htmlEqual(
1416
target.innerHTML,
@@ -28,7 +30,8 @@ export default test({
2830
const change = new window.MouseEvent('change');
2931

3032
select.options[2].selected = true;
31-
await select.dispatchEvent(change);
33+
select.dispatchEvent(change);
34+
flushSync();
3235
assert.equal(component.letter, 'c');
3336

3437
assert.deepEqual(
@@ -49,9 +52,9 @@ export default test({
4952
`
5053
);
5154

52-
await component.modal.toggle();
53-
await component.modal.toggle();
54-
await Promise.resolve();
55+
component.modal.toggle();
56+
component.modal.toggle();
57+
flushSync();
5558

5659
select = target.querySelector('select');
5760
ok(select);

packages/svelte/tests/runtime-legacy/samples/bindings-coalesced/_config.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
import { flushSync } from 'svelte';
12
import { test } from '../../test';
23

34
export default test({
4-
async test({ assert, component }) {
5+
test({ assert, component }) {
56
const { foo, p } = component;
67

78
/** @type {string[]} */
@@ -13,7 +14,8 @@ export default test({
1314
}
1415
});
1516

16-
await foo.double();
17+
foo.double();
18+
flushSync();
1719

1820
assert.deepEqual(values, ['6']);
1921
}

0 commit comments

Comments
 (0)