Commit 32544ed56c

Techatrix <19954306+Techatrix@users.noreply.github.com>
2023-01-16 13:04:03
swap align and callconv in function typeName
1 parent d389dba
Changed files (2)
src
test
behavior
src/type.zig
@@ -1689,14 +1689,14 @@ pub const Type = extern union {
                         try writer.writeAll("...");
                     }
                     try writer.writeAll(") ");
+                    if (payload.alignment != 0) {
+                        try writer.print("align({d}) ", .{payload.alignment});
+                    }
                     if (payload.cc != .Unspecified) {
                         try writer.writeAll("callconv(.");
                         try writer.writeAll(@tagName(payload.cc));
                         try writer.writeAll(") ");
                     }
-                    if (payload.alignment != 0) {
-                        try writer.print("align({d}) ", .{payload.alignment});
-                    }
                     ty = payload.return_type;
                     continue;
                 },
@@ -2084,14 +2084,14 @@ pub const Type = extern union {
                     try writer.writeAll("...");
                 }
                 try writer.writeAll(") ");
+                if (fn_info.alignment != 0) {
+                    try writer.print("align({d}) ", .{fn_info.alignment});
+                }
                 if (fn_info.cc != .Unspecified) {
                     try writer.writeAll("callconv(.");
                     try writer.writeAll(@tagName(fn_info.cc));
                     try writer.writeAll(") ");
                 }
-                if (fn_info.alignment != 0) {
-                    try writer.print("align({d}) ", .{fn_info.alignment});
-                }
                 if (fn_info.return_type.tag() == .generic_poison) {
                     try writer.writeAll("anytype");
                 } else {
test/behavior/typename.zig
@@ -69,9 +69,22 @@ test "basic" {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
 
-    try expectEqualStrings(@typeName(i64), "i64");
-    try expectEqualStrings(@typeName(*usize), "*usize");
-    try expectEqualStrings(@typeName([]u8), "[]u8");
+    try expectEqualStrings("i64", @typeName(i64));
+    try expectEqualStrings("*usize", @typeName(*usize));
+    try expectEqualStrings("[]u8", @typeName([]u8));
+
+    try expectEqualStrings("fn() void", @typeName(fn () void));
+    try expectEqualStrings("fn(u32) void", @typeName(fn (u32) void));
+    try expectEqualStrings("fn(u32) void", @typeName(fn (a: u32) void));
+
+    try expectEqualStrings("fn(comptime u32) void", @typeName(fn (comptime u32) void));
+    try expectEqualStrings("fn(noalias []u8) void", @typeName(fn (noalias []u8) void));
+
+    try expectEqualStrings("fn() align(32) void", @typeName(fn () align(32) void));
+    try expectEqualStrings("fn() callconv(.C) void", @typeName(fn () callconv(.C) void));
+    try expectEqualStrings("fn() align(32) callconv(.C) void", @typeName(fn () align(32) callconv(.C) void));
+    try expectEqualStrings("fn(...) align(32) callconv(.C) void", @typeName(fn (...) align(32) callconv(.C) void));
+    try expectEqualStrings("fn(u32, ...) align(32) callconv(.C) void", @typeName(fn (u32, ...) align(32) callconv(.C) void));
 }
 
 test "top level decl" {