From 26b418d25485f67b06fa70f3c32c151c26572f13 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Thu, 21 Oct 2021 19:51:01 -0700 Subject: Chapter 21 --- clox/src/vm.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'clox/src/vm.c') diff --git a/clox/src/vm.c b/clox/src/vm.c index 5e35abd..80e11c3 100644 --- a/clox/src/vm.c +++ b/clox/src/vm.c @@ -119,8 +119,8 @@ static InterpretResult run() { ObjString *name = READ_STRING(); Value value; if (!tableGet(&vm.globals, name, &value)) { - runtimeError("Undefined variable '%s'.", name->chars); - return INTERPRET_RUNTIME_ERROR; + runtimeError("Undefined variable '%s'.", name->chars); + return INTERPRET_RUNTIME_ERROR; } push(value); break; @@ -131,6 +131,15 @@ static InterpretResult run() { pop(); break; } + case OP_SET_GLOBAL: { + ObjString *name = READ_STRING(); + if (tableSet(&vm.globals, name, peek(0))) { + tableDelete(&vm.globals, name); + runtimeError("Undefined variable '%s'.", name->chars); + return INTERPRET_RUNTIME_ERROR; + } + break; + } case OP_EQUAL: { Value b = pop(); Value a = pop(); -- cgit v1.2.3-54-g00ecf