diff options
author | Tom Willemse | 2022-08-14 20:14:43 -0700 |
---|---|---|
committer | Tom Willemse | 2022-08-14 20:14:43 -0700 |
commit | 726803c9d0c84bccc1d82d1c8aeadfc711752622 (patch) | |
tree | 2f90b75390ceb2a66133cbebce805086175fbeda /clox/src/vm.c | |
parent | 62858b60e43803477e898c7993e109a94701ce70 (diff) | |
download | crafting-interpreters-726803c9d0c84bccc1d82d1c8aeadfc711752622.tar.gz crafting-interpreters-726803c9d0c84bccc1d82d1c8aeadfc711752622.zip |
Chapter 29.1
Diffstat (limited to 'clox/src/vm.c')
-rw-r--r-- | clox/src/vm.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clox/src/vm.c b/clox/src/vm.c index b5cb1cc..8a6847e 100644 --- a/clox/src/vm.c +++ b/clox/src/vm.c @@ -496,6 +496,17 @@ static InterpretResult run() { case OP_CLASS: push(OBJ_VAL(newClass(READ_STRING()))); break; + case OP_INHERIT: { + Value superclass = peek(1); + if (!IS_CLASS(superclass)) { + runtimeError("Superclass must be a class."); + return INTERPRET_RUNTIME_ERROR; + } + ObjClass *subclass = AS_CLASS(peek(0)); + tableAddAll(&AS_CLASS(superclass)->methods, &subclass->methods); + pop(); /* Subclass. */ + break; + } case OP_METHOD: defineMethod(READ_STRING()); break; |