diff --git a/src/compiler/compile/nodes/shared/Expression.ts b/src/compiler/compile/nodes/shared/Expression.ts index a5a730c4d1..7c7dad5e6c 100644 --- a/src/compiler/compile/nodes/shared/Expression.ts +++ b/src/compiler/compile/nodes/shared/Expression.ts @@ -127,7 +127,7 @@ export default class Expression { if (scope.has(name)) return; - if (globals.has(name) && !component.var_lookup.has(name)) return; + if (globals.has(name) && !(component.var_lookup.has(name) || template_scope.names.has(name))) return; if (name[0] === '$' && template_scope.names.has(name.slice(1))) { component.error(node, { @@ -261,7 +261,7 @@ export default class Expression { const { name, nodes } = flatten_reference(node); if (scope.has(name)) return; - if (globals.has(name) && !component.var_lookup.has(name)) return; + if (globals.has(name) && !(component.var_lookup.has(name) || template_scope.names.has(name))) return; if (function_expression) { if (template_scope.names.has(name)) { diff --git a/test/runtime/samples/globals-shadowed-by-each-binding/_config.js b/test/runtime/samples/globals-shadowed-by-each-binding/_config.js new file mode 100644 index 0000000000..f69e5e8b0e --- /dev/null +++ b/test/runtime/samples/globals-shadowed-by-each-binding/_config.js @@ -0,0 +1,3 @@ +export default { + html: '

Alert1

Alert2

', +}; diff --git a/test/runtime/samples/globals-shadowed-by-each-binding/main.svelte b/test/runtime/samples/globals-shadowed-by-each-binding/main.svelte new file mode 100644 index 0000000000..3d0ac3f3ec --- /dev/null +++ b/test/runtime/samples/globals-shadowed-by-each-binding/main.svelte @@ -0,0 +1,7 @@ + + +{#each alerts as alert} +

{alert}

+{/each}