aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/craftinginterpreters/lox/LoxClass.java
diff options
context:
space:
mode:
authorGravatar Tom Willemse2021-06-12 12:17:43 -0700
committerGravatar Tom Willemse2021-06-12 12:17:43 -0700
commit958ba22a570594ed2ce60d24cd082ce3b8a6b89a (patch)
tree81c48eb2de22314be24449b2333d84e465d2c8f6 /src/com/craftinginterpreters/lox/LoxClass.java
parente62d1a209e352306f36879dadd85773167e06246 (diff)
downloadcrafting-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.java8
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();
}
}