Skip to content

Commit 895337c

Browse files
authored
fix: treat nullish expression as empty string (#15901)
* fix: treat nullish expression as empty string * fix
1 parent 8a35194 commit 895337c

File tree

5 files changed

+14
-3
lines changed

5 files changed

+14
-3
lines changed

.changeset/blue-badgers-play.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: treat nullish expression as empty string

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export function build_template_chunk(
7777
// If we have a single expression, then pass that in directly to possibly avoid doing
7878
// extra work in the template_effect (instead we do the work in set_text).
7979
if (evaluated.is_known) {
80-
value = b.literal(evaluated.value);
80+
value = b.literal((evaluated.value ?? '') + '');
8181
}
8282

8383
return { value, has_state };
@@ -96,7 +96,7 @@ export function build_template_chunk(
9696
}
9797

9898
if (evaluated.is_known) {
99-
quasi.value.cooked += evaluated.value + '';
99+
quasi.value.cooked += (evaluated.value ?? '') + '';
100100
} else {
101101
if (!evaluated.is_defined) {
102102
// add `?? ''` where necessary
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
html: '[]'
5+
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[{undefined ?? null}]

packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default function Purity($$anchor) {
88
var fragment = root();
99
var p = $.first_child(fragment);
1010

11-
p.textContent = 0;
11+
p.textContent = '0';
1212

1313
var p_1 = $.sibling(p, 2);
1414

0 commit comments

Comments
 (0)