https://gcc.gnu.org/g:cd118739e98b8a9123e8277caa63add02331f410
commit r16-9070-gcd118739e98b8a9123e8277caa63add02331f410 Author: Torbjörn SVENSSON <[email protected]> Date: Tue Apr 7 14:32:46 2026 +0200 testsuite: get a predictable ordered array for comparison 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]> (cherry picked from commit 050c632327e4c499c66d4d258763a7b846a53134) Diff: --- 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 2f07cc361aaf..b9cb3ebfc323 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)
