From b0d8a072aabe04f8ad2dde9948a916df47216634 Mon Sep 17 00:00:00 2001 From: TopchetoEU <36534413+TopchetoEU@users.noreply.github.com> Date: Mon, 9 Dec 2024 23:38:39 +0200 Subject: [PATCH] add hashCode to primitives --- .../jscript/runtime/values/primitives/BoolValue.java | 3 +++ .../jscript/runtime/values/primitives/StringValue.java | 3 +++ .../jscript/runtime/values/primitives/VoidValue.java | 3 ++- .../jscript/runtime/values/primitives/numbers/DoubleValue.java | 3 +++ .../jscript/runtime/values/primitives/numbers/IntValue.java | 3 +++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/BoolValue.java b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/BoolValue.java index cb963e4..7fb5398 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/BoolValue.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/BoolValue.java @@ -20,6 +20,9 @@ public final class BoolValue extends PrimitiveValue { return env.get(BOOL_PROTO); } + @Override public int hashCode() { + return Boolean.hashCode(value); + } @Override public boolean equals(Object other) { if (other == this) return true; else if (other instanceof BoolValue bool) return value == bool.value; diff --git a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/StringValue.java b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/StringValue.java index 7789e06..378dab8 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/StringValue.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/StringValue.java @@ -36,6 +36,9 @@ public final class StringValue extends PrimitiveValue { } @Override public String toString(Environment ext) { return value; } + @Override public int hashCode() { + return value.hashCode(); + } @Override public boolean equals(Object other) { if (this == other) return true; else if (other instanceof StringValue val) return value.length() == val.value.length() && value.equals(val.value); diff --git a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/VoidValue.java b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/VoidValue.java index 07c53d6..938db35 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/VoidValue.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/VoidValue.java @@ -23,7 +23,8 @@ public final class VoidValue extends PrimitiveValue { @Override public ObjectValue getPrototype(Environment env) { return null; } @Override public Member getOwnMember(Environment env, KeyCache key) { - throw EngineException.ofError(String.format("Cannot read properties of %s (reading '%s')", name, key.toString(env))); + if (key.isSymbol()) throw EngineException.ofError(String.format("Cannot read properties of %s (reading '%s')", name, key.toSymbol().toString())); + else throw EngineException.ofError(String.format("Cannot read properties of %s (reading '%s')", name, key.toString(env))); } @Override public List toReadableLines(Environment env, HashSet passed) { diff --git a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/DoubleValue.java b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/DoubleValue.java index 183ff49..0c75f61 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/DoubleValue.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/DoubleValue.java @@ -24,6 +24,9 @@ public final class DoubleValue extends NumberValue { @Override public String toString() { return JSON.stringify(JSONElement.number(value)); } + @Override public int hashCode() { + return Double.hashCode(value); + } @Override public boolean equals(Object other) { if (this == other) return true; else if (other instanceof NumberValue val) return value == val.getDouble(); diff --git a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java index 5124c1b..b624bdb 100644 --- a/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java +++ b/src/main/java/me/topchetoeu/jscript/runtime/values/primitives/numbers/IntValue.java @@ -26,6 +26,9 @@ public final class IntValue extends NumberValue { return value; } + @Override public int hashCode() { + return Long.hashCode(value); + } @Override public String toString() { return value + ""; } @Override public boolean equals(Object other) { if (this == other) return true;