diff --git a/src/codegen.zig b/src/codegen.zig index 078feb409d189d9b2c108716c64ddc7da4d31df1..912bf036093aaf3ae22b50ceaff5e4aaca0fa66e 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -1156,11 +1156,13 @@ pub fn genTypedValue( const target = bin_file.options.target; const ptr_bits = target.cpu.arch.ptrBitWidth(); - if (typed_value.val.castTag(.decl_ref)) |payload| { - return genDeclRef(bin_file, src_loc, typed_value, payload.data); - } - if (typed_value.val.castTag(.decl_ref_mut)) |payload| { - return genDeclRef(bin_file, src_loc, typed_value, payload.data.decl_index); + if (!typed_value.ty.isSlice()) { + if (typed_value.val.castTag(.decl_ref)) |payload| { + return genDeclRef(bin_file, src_loc, typed_value, payload.data); + } + if (typed_value.val.castTag(.decl_ref_mut)) |payload| { + return genDeclRef(bin_file, src_loc, typed_value, payload.data.decl_index); + } } switch (typed_value.ty.zigTypeTag()) { diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index 3c1d26f284fa43a111405f48b16405526639f625..cbf1712f6711c33763895b478180dfeb4a3ae521 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -688,7 +688,6 @@ test "peer cast: error set any anyerror" { } test "peer type resolution: error set supersets" { - 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_sparc64) return error.SkipZigTest; // TODO @@ -718,7 +717,6 @@ test "peer type resolution: error set supersets" { } test "peer type resolution: disjoint error sets" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO 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_sparc64) return error.SkipZigTest; // TODO @@ -748,7 +746,6 @@ test "peer type resolution: disjoint error sets" { } test "peer type resolution: error union and error set" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO 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_sparc64) return error.SkipZigTest; // TODO @@ -782,7 +779,6 @@ test "peer type resolution: error union and error set" { } test "peer type resolution: error union after non-error" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO 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_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/generics.zig b/test/behavior/generics.zig index c5168e420b9c548a0ef9c2f790d6dbe1e6693dc7..367f2113d9733032be2aa79ef2922b3a0c708dc0 100644 --- a/test/behavior/generics.zig +++ b/test/behavior/generics.zig @@ -250,7 +250,6 @@ test "function parameter is generic" { } test "generic function instantiation turns into comptime call" { - 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_sparc64) return error.SkipZigTest; // TODO diff --git a/test/behavior/src.zig b/test/behavior/src.zig index e6b84e5d56eefa520232f087525c0e66cda3f27a..89a8e424aacaaf00b6e1a5378d476b232dd9094c 100644 --- a/test/behavior/src.zig +++ b/test/behavior/src.zig @@ -14,7 +14,6 @@ const builtin = @import("builtin"); const expect = std.testing.expect; test "@src" { - 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_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO diff --git a/test/behavior/type_info.zig b/test/behavior/type_info.zig index 5a1ab7c2aae3cf8089a2bb855b5657d5fca0696c..ad6d5ac42f31160a54f252998c99cba4b7ab14c7 100644 --- a/test/behavior/type_info.zig +++ b/test/behavior/type_info.zig @@ -159,7 +159,6 @@ fn testArray() !void { test "type info: error set, error union info, anyerror" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO try testErrorSet(); @@ -191,7 +190,6 @@ fn testErrorSet() !void { test "type info: error set single value" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO const TestSet = error.One; @@ -205,7 +203,6 @@ test "type info: error set single value" { test "type info: error set merged" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO const TestSet = error{ One, Two } || error{Three}; @@ -219,7 +216,6 @@ test "type info: error set merged" { } test "type info: enum info" { - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO