diff --git a/src/compile/nodes/Binding.ts b/src/compile/nodes/Binding.ts
index 939af8a8d9..3ab2cd8ff5 100644
--- a/src/compile/nodes/Binding.ts
+++ b/src/compile/nodes/Binding.ts
@@ -39,7 +39,7 @@ export default class Binding extends Node {
} else {
const variable = component.var_lookup.get(name);
- if (!variable) component.error(this.expression.node, {
+ if (!variable || variable.global) component.error(this.expression.node, {
code: 'binding-undeclared',
message: `${name} is not declared`
});
diff --git a/test/validator/samples/binding-invalid-value-global/errors.json b/test/validator/samples/binding-invalid-value-global/errors.json
new file mode 100644
index 0000000000..be23a21523
--- /dev/null
+++ b/test/validator/samples/binding-invalid-value-global/errors.json
@@ -0,0 +1,15 @@
+[{
+ "code": "binding-undeclared",
+ "message": "foo is not declared",
+ "pos": 58,
+ "start": {
+ "line": 4,
+ "column": 19,
+ "character": 58
+ },
+ "end": {
+ "line": 4,
+ "column": 22,
+ "character": 61
+ }
+}]
diff --git a/test/validator/samples/binding-invalid-value-global/input.svelte b/test/validator/samples/binding-invalid-value-global/input.svelte
new file mode 100644
index 0000000000..81357cf5de
--- /dev/null
+++ b/test/validator/samples/binding-invalid-value-global/input.svelte
@@ -0,0 +1,4 @@
+
+