Skip to content

Commit

Permalink
Add Object.equals default method
Browse files Browse the repository at this point in the history
  • Loading branch information
RevolvingMadness committed Feb 15, 2024
1 parent 800e5a4 commit 2db6d19
Showing 1 changed file with 13 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {
Expand All @@ -37,4 +39,15 @@ public BuiltinClass call(Interpreter interpreter, List<BuiltinClass> arguments)
return new StringInstance(this.boundClass.toString());
}
}

private static class Equals extends BuiltinMethod {
@Override
public BuiltinClass call(Interpreter interpreter, List<BuiltinClass> arguments) {
this.validate("equals", arguments, List.of(ObjectType.TYPE));

BuiltinClass object = arguments.get(0);

return new BooleanInstance(this.boundClass.equals(object));
}
}
}

0 comments on commit 2db6d19

Please sign in to comment.