diff options
author | 2022-08-13 12:20:00 -0700 | |
---|---|---|
committer | 2022-08-13 12:20:00 -0700 | |
commit | 07f691425c95a53323229accd8a907c5dea7e530 (patch) | |
tree | f19d102a75daa1ac1d73208cbd19e5fbe471c300 /clox/src/vm.c | |
parent | 4e77cfa61262a03055aeb273108fd9a49e8dfa4f (diff) | |
download | crafting-interpreters-07f691425c95a53323229accd8a907c5dea7e530.tar.gz crafting-interpreters-07f691425c95a53323229accd8a907c5dea7e530.zip |
Chapter 28.1
Diffstat (limited to 'clox/src/vm.c')
-rw-r--r-- | clox/src/vm.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clox/src/vm.c b/clox/src/vm.c index 1d82dd1..fb359c2 100644 --- a/clox/src/vm.c +++ b/clox/src/vm.c @@ -163,6 +163,13 @@ static void closeUpvalues(Value *last) { } } +static void defineMethod(ObjString *name) { + Value method = peek(0); + ObjClass *klass = AS_CLASS(peek(1)); + tableSet(&klass->methods, name, method); + pop(); +} + static bool isFalsey(Value value) { return IS_NIL(value) || (IS_BOOL(value) && !AS_BOOL(value)); } @@ -422,6 +429,9 @@ static InterpretResult run() { case OP_CLASS: push(OBJ_VAL(newClass(READ_STRING()))); break; + case OP_METHOD: + defineMethod(READ_STRING()); + break; } } |