From 4a5a0b15d90e7c735dab2bc6b434c7feae204cc6 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 30 Oct 2024 21:08:33 +0000 Subject: [PATCH] fix: ensure onMount correctly fires when new expressions are used (#14049) * fix: ensure onMount correctly fires when used externally * fix root context * fix root context * revert * alternative fix --- .changeset/early-hounds-float.md | 5 +++++ .../phases/2-analyze/visitors/NewExpression.js | 2 ++ .../samples/onmount-external/_config.js | 7 +++++++ .../samples/onmount-external/main.svelte | 13 +++++++++++++ 4 files changed, 27 insertions(+) create mode 100644 .changeset/early-hounds-float.md create mode 100644 packages/svelte/tests/runtime-legacy/samples/onmount-external/_config.js create mode 100644 packages/svelte/tests/runtime-legacy/samples/onmount-external/main.svelte diff --git a/.changeset/early-hounds-float.md b/.changeset/early-hounds-float.md new file mode 100644 index 0000000000..0a708c59e4 --- /dev/null +++ b/.changeset/early-hounds-float.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure onMount correctly fires when new expressions are used diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js index 6b393ae9b9..bcb2400932 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js @@ -11,5 +11,7 @@ export function NewExpression(node, context) { w.perf_avoid_inline_class(node); } + context.state.analysis.needs_context = true; + context.next(); } diff --git a/packages/svelte/tests/runtime-legacy/samples/onmount-external/_config.js b/packages/svelte/tests/runtime-legacy/samples/onmount-external/_config.js new file mode 100644 index 0000000000..6cf976bd48 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/onmount-external/_config.js @@ -0,0 +1,7 @@ +import { test } from '../../test'; + +export default test({ + async test({ assert, logs }) { + assert.deepEqual(logs, ['mounted']); + } +}); diff --git a/packages/svelte/tests/runtime-legacy/samples/onmount-external/main.svelte b/packages/svelte/tests/runtime-legacy/samples/onmount-external/main.svelte new file mode 100644 index 0000000000..e2e7dad8dc --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/onmount-external/main.svelte @@ -0,0 +1,13 @@ + + +