From 9be2f767417ef4eb69f35b67348bb3e2ec752d4a Mon Sep 17 00:00:00 2001 From: Daniele Cocca Date: Wed, 28 Apr 2021 01:13:47 +0100 Subject: typeName: amend return type to string literal This was already the case, but the documentation failed to point out that the returned value is of type `*const [N:0]u8`, i.e. that of a string literal. Also adds a behavioral test to assert that this is the case. --- test/behavior/bugs/3779.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'test') diff --git a/test/behavior/bugs/3779.zig b/test/behavior/bugs/3779.zig index 5423a6f265..2c92236e20 100644 --- a/test/behavior/bugs/3779.zig +++ b/test/behavior/bugs/3779.zig @@ -19,3 +19,13 @@ test "@errorName() returns a string literal" { try std.testing.expectEqualStrings("TestErrorCode", error_name); try std.testing.expectEqualStrings("TestErrorCode", ptr_error_name[0..error_name.len]); } + +const TestType = struct {}; +const type_name = @typeName(TestType); +const ptr_type_name: [*:0]const u8 = type_name; + +test "@typeName() returns a string literal" { + try std.testing.expectEqual(*const [type_name.len:0]u8, @TypeOf(type_name)); + try std.testing.expectEqualStrings("TestType", type_name); + try std.testing.expectEqualStrings("TestType", ptr_type_name[0..type_name.len]); +} -- cgit v1.2.3