Skip to content

Commit 8fcdad2

Browse files
committed
update message, add some details
1 parent 46a8a26 commit 8fcdad2

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

documentation/docs/98-reference/.generated/compile-errors.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,9 +703,27 @@ Cannot use explicit children snippet at the same time as implicit children conte
703703
### snippet_invalid_export
704704

705705
```
706-
Cannot export snippet from a `<script module>` if it references logic or expressions inside the component
706+
An exported snippet can only reference things declared in a `<script module>`, or other exportable snippets
707707
```
708708

709+
It's possible to export a snippet from a `<script module>` block, but only if it doesn't reference anything defined inside a non-module-level `<script>`. For example you can't do this...
710+
711+
```svelte
712+
<script module>
713+
export { greeting };
714+
</script>
715+
716+
<script>
717+
let message = 'hello';
718+
</script>
719+
720+
{#snippet greeting(name)}
721+
<p>{message} {name}!</p>
722+
{/snippet}
723+
```
724+
725+
...because `greeting` references `message`, which is defined in the second `<script>`.
726+
709727
### snippet_invalid_rest_parameter
710728

711729
```

packages/svelte/messages/compile-errors/script.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,25 @@
140140
141141
## snippet_invalid_export
142142

143-
> Cannot export snippet from a `<script module>` if it references logic or expressions inside the component
143+
> An exported snippet can only reference things declared in a `<script module>`, or other exportable snippets
144+
145+
It's possible to export a snippet from a `<script module>` block, but only if it doesn't reference anything defined inside a non-module-level `<script>`. For example you can't do this...
146+
147+
```svelte
148+
<script module>
149+
export { greeting };
150+
</script>
151+
152+
<script>
153+
let message = 'hello';
154+
</script>
155+
156+
{#snippet greeting(name)}
157+
<p>{message} {name}!</p>
158+
{/snippet}
159+
```
160+
161+
...because `greeting` references `message`, which is defined in the second `<script>`.
144162

145163
## snippet_parameter_assignment
146164

packages/svelte/src/compiler/errors.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,12 +406,12 @@ export function runes_mode_invalid_import(node, name) {
406406
}
407407

408408
/**
409-
* Cannot export snippet from a `<script module>` if it references logic or expressions inside the component
409+
* An exported snippet can only reference things declared in a `<script module>`, or other exportable snippets
410410
* @param {null | number | NodeLike} node
411411
* @returns {never}
412412
*/
413413
export function snippet_invalid_export(node) {
414-
e(node, "snippet_invalid_export", "Cannot export snippet from a `<script module>` if it references logic or expressions inside the component");
414+
e(node, "snippet_invalid_export", "An exported snippet can only reference things declared in a `<script module>`, or other exportable snippets");
415415
}
416416

417417
/**

0 commit comments

Comments
 (0)