Skip to content

Commit 420257f

Browse files
committed
fix: enusre dev validation in dynamic component works as intended
1 parent f752b1e commit 420257f

File tree

5 files changed

+34
-2
lines changed

5 files changed

+34
-2
lines changed

.changeset/neat-jokes-beam.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: enusre dev validation in dynamic component works as intended

packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,9 @@ function serialize_inline_component(node, component_name, context) {
671671
/** @type {import('estree').Identifier | import('estree').MemberExpression | null} */
672672
let bind_this = null;
673673

674+
/**
675+
* @type {import("estree").ExpressionStatement[]}
676+
*/
674677
const binding_initializers = [];
675678

676679
/**
@@ -920,6 +923,8 @@ function serialize_inline_component(node, component_name, context) {
920923
};
921924
}
922925

926+
const statements = [...snippet_declarations];
927+
923928
if (node.type === 'SvelteComponent') {
924929
const prev = fn;
925930

@@ -930,6 +935,7 @@ function serialize_inline_component(node, component_name, context) {
930935
b.arrow(
931936
[b.id(component_name)],
932937
b.block([
938+
...binding_initializers,
933939
b.stmt(
934940
context.state.options.dev
935941
? b.call('$.validate_dynamic_component', b.thunk(prev(node_id)))
@@ -939,10 +945,10 @@ function serialize_inline_component(node, component_name, context) {
939945
)
940946
);
941947
};
948+
} else {
949+
statements.push(...binding_initializers);
942950
}
943951

944-
const statements = [...snippet_declarations, ...binding_initializers];
945-
946952
if (Object.keys(custom_css_props).length > 0) {
947953
context.state.template.push(
948954
context.state.metadata.namespace === 'svg'
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<script>
2+
export let div;
3+
</script>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
compileOptions: {
5+
dev: true
6+
},
7+
8+
test({ assert, component, target }) {
9+
// Shouldn't error
10+
}
11+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script>
2+
import Test from './Test.svelte'
3+
4+
let div
5+
</script>
6+
7+
<svelte:component this={Test} bind:div />

0 commit comments

Comments
 (0)