fix: print error set members in a consistent order

Co-authored-by: Matthew Lugg <mlugg@mlugg.co.uk>
This commit is contained in:
Will Lillis
2025-08-10 20:14:51 -04:00
committed by Matthew Lugg
parent e395c24c6d
commit e9eee8dace
4 changed files with 33 additions and 8 deletions

View File

@@ -0,0 +1,11 @@
const Set0 = error{ A, B, C, D, E, F };
const Set1 = error{ F, E, D, C, A };
comptime {
const x = Set0.B;
const y: Set1 = @errorCast(x);
_ = y;
}
// error
//
// :5:21: error: 'error.B' not a member of error set 'error{A,C,D,E,F}'

View File

@@ -54,8 +54,8 @@ export fn ptr_to_underaligned_ptr() void {
// error
//
// :16:33: error: expected type '*error{Foo,Bar}', found '*error{Foo}'
// :16:33: note: pointer type child 'error{Foo}' cannot cast into pointer type child 'error{Foo,Bar}'
// :16:33: error: expected type '*error{Bar,Foo}', found '*error{Foo}'
// :16:33: note: pointer type child 'error{Foo}' cannot cast into pointer type child 'error{Bar,Foo}'
// :16:33: note: 'error.Bar' not a member of destination error set
// :22:24: error: expected type '*anyerror', found '*error{Foo}'
// :22:24: note: pointer type child 'error{Foo}' cannot cast into pointer type child 'anyerror'

View File

@@ -491,16 +491,16 @@ pub fn addTestsForTarget(db: *Debugger, target: *const Target) void {
\\ (error{One,Two}) Two = error.Two
\\ }
\\ (type) Three = error {
\\ (error{One,Two,Three}) One = error.One
\\ (error{One,Two,Three}) Two = error.Two
\\ (error{One,Two,Three}) Three = error.Three
\\ (error{One,Three,Two}) One = error.One
\\ (error{One,Three,Two}) Two = error.Two
\\ (error{One,Three,Two}) Three = error.Three
\\ }
\\}
\\(lldb) frame variable --show-types -- errors
\\(root.errors.Errors) errors = {
\\ (error{One}) .one = error.One
\\ (error{One,Two}) .two = error.Two
\\ (error{One,Two,Three}) .three = error.Three
\\ (error{One,Three,Two}) .three = error.Three
\\ (anyerror) .any = error.Any
\\ (anyerror!void) .any_void = {
\\ (anyerror) .error = error.NotVoid