From afe38e892d6c558da03b5a54a077915cc0a7b215 Mon Sep 17 00:00:00 2001 From: Stefan Marr Date: Wed, 11 Jan 2023 13:04:18 +0000 Subject: [PATCH] The #= on Symbol and String should be symmetric MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - it’s only defined in String - there’s no hint that it should behave differently in Symbol which is a subclass - so, we really should just consider the string content when comparing #foobar = ‘foobar’ Signed-off-by: Stefan Marr --- core-lib | 2 +- src/som/primitives/SymbolPrimitives.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core-lib b/core-lib index 51d42a5..afd5a63 160000 --- a/core-lib +++ b/core-lib @@ -1 +1 @@ -Subproject commit 51d42a5e6606894d57c51f960e9bd57c1e274132 +Subproject commit afd5a63b662eca78de80b37653daf7f0a0ece958 diff --git a/src/som/primitives/SymbolPrimitives.js b/src/som/primitives/SymbolPrimitives.js index d7a928e..205a929 100644 --- a/src/som/primitives/SymbolPrimitives.js +++ b/src/som/primitives/SymbolPrimitives.js @@ -24,6 +24,7 @@ import { Primitives } from './Primitives.js'; import { universe } from '../vm/Universe.js'; +import { SString } from '../vmobjects/SString.js'; function _asString(_frame, args) { return universe.newString(args[0].getString()); @@ -35,6 +36,10 @@ function _equals(_frame, args) { if (op1 === op2) { return universe.trueObject; } + + if (op1 instanceof SString && op1.getEmbeddedString() === op2.getEmbeddedString()) { + return universe.trueObject; + } return universe.falseObject; }