-
2006f601
by Francis De Brabandere at 2026-06-02T10:33:14+02:00
scrrun/tests: Add tests for Empty dictionary keys.
An Empty key matches the zero/default value of the other key's type: any
numeric zero or the empty string, but not a non-zero number, a non-empty
string, or Null.
-
4f822c81
by Francis De Brabandere at 2026-06-02T10:33:16+02:00
scrrun/dictionary: Match Empty keys against zero-valued and empty-string keys.
An uninitialized VBScript variable is Empty, so scripts can end up using
Empty as a dictionary key alongside a numeric 0 or "". Native treats
those as the same key; Wine kept Empty distinct from every other type.
Match an Empty key against any numeric zero or the empty string, while
keeping it distinct from Null and from non-zero/non-empty keys.
-
0456d46f
by Francis De Brabandere at 2026-06-02T10:33:18+02:00
scrrun/tests: Add tests for Boolean dictionary keys.
A Boolean key hashes by its numeric value and matches the equal numeric
value across types (True is -1, False is 0); False is the zero/default
value, so it matches an Empty key. A script can use a comparison result
(a Boolean) as the key to Exists and Remove, which must not fail.
-
e426bd4e
by Francis De Brabandere at 2026-06-02T10:33:20+02:00
scrrun/dictionary: Match native key semantics for Boolean keys.
Boolean keys were rejected outright by the hash function, returning
E_NOTIMPL, so Exists and Remove failed for them. An uninitialized or
comparison-result VBScript value can be a Boolean, so a script can end up
using one as a dictionary key. Hash it by its numeric value like the
other numeric types, so True and False match the equal numeric value
across types (and False matches an Empty key).