On May 31, 2026, at 11:45 PM, Torbjorn SVENSSON <[email protected]> 
wrote:
> Another gentle ping! :)

Ok.

> 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