error on binding to undeclared variable

pull/2011/head
Richard Harris 7 years ago
parent dfd697f605
commit 1ee5752ca1

@ -38,6 +38,12 @@ export default class Binding extends Node {
}); });
} else { } else {
const variable = component.var_lookup.get(name); const variable = component.var_lookup.get(name);
if (!variable) component.error(this.expression.node, {
code: 'binding-undeclared',
message: `${name} is not declared`
});
variable[this.expression.node.type === 'MemberExpression' ? 'mutated' : 'reassigned'] = true; variable[this.expression.node.type === 'MemberExpression' ? 'mutated' : 'reassigned'] = true;
} }

@ -64,11 +64,16 @@ describe("validate", () => {
throw new Error(`Expected an error: ${expected.message}`); throw new Error(`Expected an error: ${expected.message}`);
} }
assert.equal(error.code, expected.code); try {
assert.equal(error.message, expected.message); assert.equal(error.code, expected.code);
assert.deepEqual(error.start, expected.start); assert.equal(error.message, expected.message);
assert.deepEqual(error.end, expected.end); assert.deepEqual(error.start, expected.start);
assert.equal(error.pos, expected.pos); assert.deepEqual(error.end, expected.end);
assert.equal(error.pos, expected.pos);
} catch (e) {
console.error(error)
throw e;
}
} }
}); });
}); });

@ -0,0 +1,15 @@
[{
"code": "binding-undeclared",
"message": "foo is not declared",
"pos": 37,
"start": {
"line": 2,
"column": 19,
"character": 37
},
"end": {
"line": 2,
"column": 22,
"character": 40
}
}]

@ -0,0 +1,2 @@
<script></script>
<input bind:value={foo}>
Loading…
Cancel
Save