aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler.rs
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-01-15 16:01:22 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-01-15 16:58:08 +0100
commit0fd774deba11e3cd5a70840d1ea8efb0bf8ff17b (patch)
tree40ae38aa039b4e2b01692a968271ac903b55859e /src/compiler.rs
parentbbd4123387a35d8920acaf77f3a2d420f9d76860 (diff)
downloadsylt-0fd774deba11e3cd5a70840d1ea8efb0bf8ff17b.tar.gz
typecheck: infere type from rhs in assignments
Diffstat (limited to 'src/compiler.rs')
-rw-r--r--src/compiler.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler.rs b/src/compiler.rs
index 3a4181b..df816c9 100644
--- a/src/compiler.rs
+++ b/src/compiler.rs
@@ -504,8 +504,9 @@ impl Compiler {
}
fn definition_statement(&mut self, name: &str, typ: Type, block: &mut Block) {
- let slot = self.define_variable(name, typ, block);
+ let slot = self.define_variable(name, typ.clone(), block);
self.expression(block);
+ block.add(Op::Define(typ), self.line());
if let Ok(slot) = slot {
self.stack_mut()[slot].active = true;