From ea5cedced1aa6bb5e1c1a07fcd16c5bed08c971f Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sat, 2 Mar 2019 14:31:04 -0500 Subject: [PATCH] fix @typeName on slices closes #2026 --- src/analyze.cpp | 4 +++- test/stage1/behavior.zig | 1 + test/stage1/behavior/typename.zig | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/stage1/behavior/typename.zig diff --git a/src/analyze.cpp b/src/analyze.cpp index 30e147c62d..e43888e43f 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -6857,7 +6857,9 @@ void emit_error_notes_for_ref_stack(CodeGen *g, ErrorMsg *msg) { } Buf *type_bare_name(ZigType *type_entry) { - if (is_container(type_entry)) { + if (is_slice(type_entry)) { + return &type_entry->name; + } else if (is_container(type_entry)) { return get_container_scope(type_entry)->bare_name; } else if (type_entry->id == ZigTypeIdOpaque) { return type_entry->data.opaque.bare_name; diff --git a/test/stage1/behavior.zig b/test/stage1/behavior.zig index 610aaaab67..c232003db7 100644 --- a/test/stage1/behavior.zig +++ b/test/stage1/behavior.zig @@ -80,6 +80,7 @@ comptime { _ = @import("behavior/truncate.zig"); _ = @import("behavior/try.zig"); _ = @import("behavior/type_info.zig"); + _ = @import("behavior/typename.zig"); _ = @import("behavior/undefined.zig"); _ = @import("behavior/underscore.zig"); _ = @import("behavior/union.zig"); diff --git a/test/stage1/behavior/typename.zig b/test/stage1/behavior/typename.zig new file mode 100644 index 0000000000..1abefe5b5e --- /dev/null +++ b/test/stage1/behavior/typename.zig @@ -0,0 +1,7 @@ +const std = @import("std"); +const expect = std.testing.expect; +const expectEqualSlices = std.testing.expectEqualSlices; + +test "slice" { + expectEqualSlices(u8, "[]u8", @typeName([]u8)); +}