From 2e0566e1d24eb476b6a324b51472a20dae954da1 Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Sat, 27 Jun 2020 20:13:40 +0800 Subject: [PATCH 1/3] error on expression scope store --- src/compiler/compile/nodes/shared/Expression.ts | 13 ++++++++----- .../store-template-expression-scope/_config.js | 3 +++ .../store-template-expression-scope/main.svelte | 9 +++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 test/runtime/samples/store-template-expression-scope/_config.js create mode 100644 test/runtime/samples/store-template-expression-scope/main.svelte diff --git a/src/compiler/compile/nodes/shared/Expression.ts b/src/compiler/compile/nodes/shared/Expression.ts index d4a219418b00..8bfc2bffce00 100644 --- a/src/compiler/compile/nodes/shared/Expression.ts +++ b/src/compiler/compile/nodes/shared/Expression.ts @@ -78,11 +78,14 @@ export default class Expression { if (scope.has(name)) return; - if (name[0] === '$' && template_scope.names.has(name.slice(1))) { - component.error(node, { - code: `contextual-store`, - message: `Stores must be declared at the top level of the component (this may change in a future version of Svelte)` - }); + if (name[0] === '$') { + const store_name = name.slice(1); + if (template_scope.names.has(store_name) || scope.has(store_name)) { + component.error(node, { + code: `contextual-store`, + message: `Stores must be declared at the top level of the component (this may change in a future version of Svelte)` + }); + } } if (template_scope.is_let(name)) { diff --git a/test/runtime/samples/store-template-expression-scope/_config.js b/test/runtime/samples/store-template-expression-scope/_config.js new file mode 100644 index 000000000000..e2d6fc780848 --- /dev/null +++ b/test/runtime/samples/store-template-expression-scope/_config.js @@ -0,0 +1,3 @@ +export default { + error: `Stores must be declared at the top level of the component (this may change in a future version of Svelte)` +}; diff --git a/test/runtime/samples/store-template-expression-scope/main.svelte b/test/runtime/samples/store-template-expression-scope/main.svelte new file mode 100644 index 000000000000..1c9ccb29334c --- /dev/null +++ b/test/runtime/samples/store-template-expression-scope/main.svelte @@ -0,0 +1,9 @@ + + +