On 2026-06-07 08:40, Mike Stump wrote:
On May 31, 2026, at 11:45 PM, Torbjorn SVENSSON <[email protected]> 
wrote:
Another gentle ping! :)

Ok.

Pushed as r17-1419-g050c632327e4c4, r16-9070-gcd118739e98b8a and 
r15-11266-gb73fece22dfd20.

Kind regards,
Torbjörn


Kind regards,
Torbjörn

On 2026-04-14 08:42, Torbjorn SVENSSON wrote:
Gentle ping! :)
Kind regards,
Torbjörn
On 2026-04-07 14:41, Torbjörn SVENSSON wrote:
Ok for trunk and releases/gcc-15?

--

Without this patch, errors like below can be seen in g++.log:

Traceback (most recent call last):
    File "/build/gcc_src/gcc/testsuite/g++.dg/modules/test-p1689.py", line 220, in 
<module>
      is_ok = validate_p1689(actual, expect)
...
    File "/build/gcc_src/gcc/testsuite/g++.dg/modules/test-p1689.py", line 149, 
in compare_json
      actual = set(actual)
TypeError: unhashable type: 'dict'

To avoid hashing dicts, transform the elements to string representation
prior to sorting the array and then transform back to objects after.

gcc/testsuite/ChangeLog:

     * g++.dg/modules/test-p1689.py: Make arrays have predictable
     order.

Signed-off-by: Torbjörn SVENSSON <[email protected]>
---
   gcc/testsuite/g++.dg/modules/test-p1689.py | 14 ++++++++++++--
   1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/gcc/testsuite/g++.dg/modules/test-p1689.py 
b/gcc/testsuite/g++.dg/modules/test-p1689.py
index 2f07cc361aa..b9cb3ebfc32 100644
--- a/gcc/testsuite/g++.dg/modules/test-p1689.py
+++ b/gcc/testsuite/g++.dg/modules/test-p1689.py
@@ -131,6 +131,16 @@ def _inspect_ordering(arr):
       return arr, req_ordering
+def _get_predictable_ordered_array(arr):
+    if not arr:
+        return arr
+
+    # Convert to list of string to get predictable order.
+    # Using set() here causes issue with complex arrays
+    arr = [json.dumps(x) for x in arr]
+    arr.sort()
+    return [json.loads(x) for x in arr]
+
   def compare_json(path, actual, expect):
       actual_type = type(actual)
@@ -146,8 +156,8 @@ def compare_json(path, actual, expect):
       elif actual_type == list:
           expect, req_ordering = _inspect_ordering(expect)
           if not req_ordering:
-            actual = set(actual)
-            expect = set(expect)
+            actual = _get_predictable_ordered_array(actual)
+            expect = _get_predictable_ordered_array(expect)
           is_ok = _compare_array(path, actual, expect)
       elif actual_type == str:
           is_ok = _compare_string(path, actual, expect)



Reply via email to