aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/pointers.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-10-03 14:12:08 +0300
committerVeikka Tuominen <git@vexu.eu>2022-10-05 17:26:29 +0300
commitba4aa12098a0a9def52582cecd5b0b664ded14d8 (patch)
treefbb7caad7c97b10a7db6f07a7d76d1fd026390b8 /test/behavior/pointers.zig
parent40578656e85a4bd930b03c143f179d43a925d151 (diff)
downloadzig-ba4aa12098a0a9def52582cecd5b0b664ded14d8.tar.gz
zig-ba4aa12098a0a9def52582cecd5b0b664ded14d8.zip
Sema: use correct value when `@ptrCast` operand is comptime known
Closes #13034
Diffstat (limited to 'test/behavior/pointers.zig')
-rw-r--r--test/behavior/pointers.zig11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/behavior/pointers.zig b/test/behavior/pointers.zig
index 91d398e84d..b0fb0f3a42 100644
--- a/test/behavior/pointers.zig
+++ b/test/behavior/pointers.zig
@@ -483,3 +483,14 @@ test "pointer to constant decl preserves alignment" {
const alignment = @typeInfo(@TypeOf(&S.aligned)).Pointer.alignment;
try std.testing.expect(alignment == 8);
}
+
+test "ptrCast comptime known slice to C pointer" {
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+
+ const s: [:0]const u8 = "foo";
+ var p = @ptrCast([*c]const u8, s);
+ try std.testing.expectEqualStrings(s, std.mem.sliceTo(p, 0));
+}