diff options
Diffstat (limited to 'clox/src/vm.c')
-rw-r--r-- | clox/src/vm.c | 13 |
1 files changed, 11 insertions, 2 deletions
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(); |