From 2db6d196f4c9bd87fe9d0809640988fd29076c36 Mon Sep 17 00:00:00 2001 From: RevolvingMadness Date: Wed, 14 Feb 2024 18:52:14 -0600 Subject: [PATCH] Add `Object.equals` default method --- .../language/builtins/classes/types/ObjectType.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/revolvingmadness/sculk/language/builtins/classes/types/ObjectType.java b/src/main/java/com/revolvingmadness/sculk/language/builtins/classes/types/ObjectType.java index 3f8be16..c349e35 100644 --- a/src/main/java/com/revolvingmadness/sculk/language/builtins/classes/types/ObjectType.java +++ b/src/main/java/com/revolvingmadness/sculk/language/builtins/classes/types/ObjectType.java @@ -3,6 +3,7 @@ import com.revolvingmadness.sculk.language.builtins.classes.BuiltinClass; import com.revolvingmadness.sculk.language.builtins.classes.BuiltinMethod; import com.revolvingmadness.sculk.language.builtins.classes.BuiltinType; +import com.revolvingmadness.sculk.language.builtins.classes.instances.BooleanInstance; import com.revolvingmadness.sculk.language.builtins.classes.instances.NullInstance; import com.revolvingmadness.sculk.language.builtins.classes.instances.StringInstance; import com.revolvingmadness.sculk.language.interpreter.Interpreter; @@ -18,6 +19,7 @@ private ObjectType() { this.typeVariableScope.declare(List.of(TokenType.CONST), "init", new Init()); this.typeVariableScope.declare(List.of(TokenType.CONST), "toString", new ToString()); + this.typeVariableScope.declare(List.of(TokenType.CONST), "equals", new Equals()); } private static class Init extends BuiltinMethod { @@ -37,4 +39,15 @@ public BuiltinClass call(Interpreter interpreter, List arguments) return new StringInstance(this.boundClass.toString()); } } + + private static class Equals extends BuiltinMethod { + @Override + public BuiltinClass call(Interpreter interpreter, List arguments) { + this.validate("equals", arguments, List.of(ObjectType.TYPE)); + + BuiltinClass object = arguments.get(0); + + return new BooleanInstance(this.boundClass.equals(object)); + } + } } \ No newline at end of file