The previous Map equality code was assuming that the set of keys would be identical between the two Maps. This change adds insertion-order tracking for each key with its corresponding key. If one of the two keys is an asymmetric equality obj, the keys are eq()'d, and if it succeeds, the corresponding values are compared. Otherwise, the "main" key is looked up directly in the other object; this is to prevent similar-looking obj keys with different obj identities from comparing equal. Fixes #1432.
24 KiB
24 KiB