From 673a1efa228f1e28317c202b8ab9135afb9ed2a2 Mon Sep 17 00:00:00 2001 From: David <87927264+Rexicon226@users.noreply.github.com> Date: Thu, 16 Nov 2023 08:08:30 -0800 Subject: [PATCH] Sema: include sentinel in type of pointer-to-array `ptr` field Resolves: #18007 --- src/Sema.zig | 2 +- test/behavior/string_literals.zig | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Sema.zig b/src/Sema.zig index 39fd818d974f2bf3b91d548cd04d4ea6d7970476..aa6dab0b2bae246691a3fab9a70a72dee6a8d813 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -26089,7 +26089,7 @@ fn fieldVal( const ptr_info = object_ty.ptrInfo(mod); const result_ty = try sema.ptrType(.{ .child = ptr_info.child.toType().childType(mod).toIntern(), - .sentinel = ptr_info.sentinel, + .sentinel = if (inner_ty.sentinel(mod)) |s| s.toIntern() else .none, .flags = .{ .size = .Many, .alignment = ptr_info.flags.alignment, diff --git a/test/behavior/string_literals.zig b/test/behavior/string_literals.zig index 51ca7e997c30f79774afc7a9b4fd78c77782a3e5..04ec145e3ffa59ef4a96f047fa826f1e30cf07c9 100644 --- a/test/behavior/string_literals.zig +++ b/test/behavior/string_literals.zig @@ -74,3 +74,9 @@ test "@src() returns a struct containing 0-terminated string slices" { const ptr_src_fn_name: [*:0]const u8 = src.fn_name; _ = ptr_src_fn_name; // unused } + +test "string literal pointer sentinel" { + const string_literal = "something"; + + try std.testing.expect(@TypeOf(string_literal.ptr) == [*:0]const u8); +} -- 2.54.0