Merge pull request #11049 from mitchellh/peer-arrays

stage2: fix a couple issues with peer resolution and const casting arrays
This commit is contained in:
Andrew Kelley 2022-03-03 17:56:37 -05:00 committed by GitHub
commit 0ea51f7f49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 6 deletions

View File

@ -18270,7 +18270,7 @@ fn resolvePeerTypes(
convert_to_slice = false;
if (chosen_ty.childType().isConstPtr() and !candidate_ty.childType().isConstPtr())
if (chosen_ty.isConstPtr() and !candidate_ty.isConstPtr())
seen_const = true;
continue;
@ -18282,7 +18282,7 @@ fn resolvePeerTypes(
chosen_ty_tag == .Pointer and
chosen_ty.ptrSize() == .Many)
{
if (candidate_ty.childType().isConstPtr() and !chosen_ty.childType().isConstPtr())
if (candidate_ty.isConstPtr() and !chosen_ty.isConstPtr())
seen_const = true;
continue;
@ -18303,7 +18303,7 @@ fn resolvePeerTypes(
convert_to_slice = false; // it already is a slice
// If the pointer is const then we need to const
if (candidate_ty.childType().isConstPtr())
if (candidate_ty.isConstPtr())
seen_const = true;
continue;
@ -18326,7 +18326,7 @@ fn resolvePeerTypes(
convert_to_slice = false; // it already is a slice
// If the prev pointer is const then we need to const
if (chosen_child_ty.isConstPtr())
if (chosen_ty.isConstPtr())
seen_const = true;
continue;

View File

@ -964,7 +964,11 @@ test "cast between C pointer with different but compatible types" {
}
test "peer type resolve string lit with sentinel-terminated mutable slice" {
if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
var array: [4:0]u8 = undefined;
array[4] = 0; // TODO remove this when #4372 is solved
@ -981,7 +985,11 @@ test "peer type resolve array pointers, one of them const" {
}
test "peer type resolve array pointer and unknown pointer" {
if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
const const_array: [4]u8 = undefined;
var array: [4]u8 = undefined;