diff options
author | Tom Willemse | 2021-06-12 12:17:43 -0700 |
---|---|---|
committer | Tom Willemse | 2021-06-12 12:17:43 -0700 |
commit | 958ba22a570594ed2ce60d24cd082ce3b8a6b89a (patch) | |
tree | 81c48eb2de22314be24449b2333d84e465d2c8f6 /src/com/craftinginterpreters/lox/LoxClass.java | |
parent | e62d1a209e352306f36879dadd85773167e06246 (diff) | |
download | crafting-interpreters-958ba22a570594ed2ce60d24cd082ce3b8a6b89a.tar.gz crafting-interpreters-958ba22a570594ed2ce60d24cd082ce3b8a6b89a.zip |
12.7 Constructors and Initializers
Diffstat (limited to 'src/com/craftinginterpreters/lox/LoxClass.java')
-rw-r--r-- | src/com/craftinginterpreters/lox/LoxClass.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/com/craftinginterpreters/lox/LoxClass.java b/src/com/craftinginterpreters/lox/LoxClass.java index 0c0223f..5e0e755 100644 --- a/src/com/craftinginterpreters/lox/LoxClass.java +++ b/src/com/craftinginterpreters/lox/LoxClass.java @@ -28,11 +28,17 @@ class LoxClass implements LoxCallable { @Override public Object call(Interpreter interpreter, List<Object> arguments) { LoxInstance instance = new LoxInstance(this); + LoxFunction initializer = findMethod("init"); + if (initializer != null) { + initializer.bind(instance).call(interpreter, arguments); + } return instance; } @Override public int arity() { - return 0; + LoxFunction initializer = findMethod("init"); + if (initializer == null) return 0; + return initializer.arity(); } } |