Commit 641ecc260f
Changed files (112)
doc
lib
std
crypto
math
os
rand
special
unicode
x
os
src
test
behavior
stage2
doc/docgen.zig
@@ -1017,7 +1017,6 @@ fn tokenizeAndPrint(docgen_tokenizer: *Tokenizer, out: anytype, source_token: To
}
fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: anytype, zig_exe: []const u8, do_code_tests: bool) !void {
- var code_progress_index: usize = 0;
var progress = Progress{};
const root_node = try progress.start("Generating docgen examples", toc.nodes.len);
defer root_node.end();
@@ -1090,7 +1089,6 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
switch (code.id) {
Code.Id.Exe => |expected_outcome| code_block: {
- const name_plus_bin_ext = try std.fmt.allocPrint(allocator, "{s}{s}", .{ code.name, exe_ext });
var build_args = std.ArrayList([]const u8).init(allocator);
defer build_args.deinit();
try build_args.appendSlice(&[_][]const u8{
@@ -1361,19 +1359,9 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: any
},
Code.Id.Obj => |maybe_error_match| {
const name_plus_obj_ext = try std.fmt.allocPrint(allocator, "{s}{s}", .{ code.name, obj_ext });
- const tmp_obj_file_name = try fs.path.join(
- allocator,
- &[_][]const u8{ tmp_dir_name, name_plus_obj_ext },
- );
var build_args = std.ArrayList([]const u8).init(allocator);
defer build_args.deinit();
- const name_plus_h_ext = try std.fmt.allocPrint(allocator, "{s}.h", .{code.name});
- const output_h_file_name = try fs.path.join(
- allocator,
- &[_][]const u8{ tmp_dir_name, name_plus_h_ext },
- );
-
try build_args.appendSlice(&[_][]const u8{
zig_exe,
"build-obj",
lib/std/c/tokenizer.zig
@@ -351,7 +351,6 @@ pub const Tokenizer = struct {
pp_directive: bool = false,
pub fn next(self: *Tokenizer) Token {
- const start_index = self.index;
var result = Token{
.id = .Eof,
.start = self.index,
@@ -1380,12 +1379,12 @@ test "operators" {
test "keywords" {
try expectTokens(
- \\auto break case char const continue default do
- \\double else enum extern float for goto if int
- \\long register return short signed sizeof static
- \\struct switch typedef union unsigned void volatile
- \\while _Bool _Complex _Imaginary inline restrict _Alignas
- \\_Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local
+ \\auto break case char const continue default do
+ \\double else enum extern float for goto if int
+ \\long register return short signed sizeof static
+ \\struct switch typedef union unsigned void volatile
+ \\while _Bool _Complex _Imaginary inline restrict _Alignas
+ \\_Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local
\\
, &[_]Token.Id{
.Keyword_auto,
lib/std/compress/gzip.zig
@@ -62,6 +62,8 @@ pub fn GzipStream(comptime ReaderType: type) type {
const XFL = header[8];
// Operating system where the compression took place
const OS = header[9];
+ _ = XFL;
+ _ = OS;
if (FLG & FEXTRA != 0) {
// Skip the extra data, we could read and expose it to the user
lib/std/compress/zlib.zig
@@ -35,6 +35,7 @@ pub fn ZlibStream(comptime ReaderType: type) type {
const CM = @truncate(u4, header[0]);
const CINFO = @truncate(u4, header[0] >> 4);
const FCHECK = @truncate(u5, header[1]);
+ _ = FCHECK;
const FDICT = @truncate(u1, header[1] >> 5);
if ((@as(u16, header[0]) << 8 | header[1]) % 31 != 0)
lib/std/crypto/25519/scalar.zig
@@ -330,13 +330,10 @@ pub const Scalar = struct {
const carry9 = z02 >> 56;
const c01 = carry9;
const carry10 = (z12 + c01) >> 56;
- const t21 = @truncate(u64, z12 + c01) & 0xffffffffffffff;
const c11 = carry10;
const carry11 = (z22 + c11) >> 56;
- const t22 = @truncate(u64, z22 + c11) & 0xffffffffffffff;
const c21 = carry11;
const carry12 = (z32 + c21) >> 56;
- const t23 = @truncate(u64, z32 + c21) & 0xffffffffffffff;
const c31 = carry12;
const carry13 = (z42 + c31) >> 56;
const t24 = @truncate(u64, z42 + c31) & 0xffffffffffffff;
@@ -605,13 +602,10 @@ const ScalarDouble = struct {
const carry0 = z01 >> 56;
const c00 = carry0;
const carry1 = (z11 + c00) >> 56;
- const t100 = @as(u64, @truncate(u64, z11 + c00)) & 0xffffffffffffff;
const c10 = carry1;
const carry2 = (z21 + c10) >> 56;
- const t101 = @as(u64, @truncate(u64, z21 + c10)) & 0xffffffffffffff;
const c20 = carry2;
const carry3 = (z31 + c20) >> 56;
- const t102 = @as(u64, @truncate(u64, z31 + c20)) & 0xffffffffffffff;
const c30 = carry3;
const carry4 = (z41 + c30) >> 56;
const t103 = @as(u64, @truncate(u64, z41 + c30)) & 0xffffffffffffff;
lib/std/crypto/aes/soft.zig
@@ -49,8 +49,6 @@ pub const Block = struct {
/// Encrypt a block with a round key.
pub inline fn encrypt(block: Block, round_key: Block) Block {
- const src = &block.repr;
-
const s0 = block.repr[0];
const s1 = block.repr[1];
const s2 = block.repr[2];
@@ -66,8 +64,6 @@ pub const Block = struct {
/// Encrypt a block with the last round key.
pub inline fn encryptLast(block: Block, round_key: Block) Block {
- const src = &block.repr;
-
const t0 = block.repr[0];
const t1 = block.repr[1];
const t2 = block.repr[2];
@@ -88,8 +84,6 @@ pub const Block = struct {
/// Decrypt a block with a round key.
pub inline fn decrypt(block: Block, round_key: Block) Block {
- const src = &block.repr;
-
const s0 = block.repr[0];
const s1 = block.repr[1];
const s2 = block.repr[2];
@@ -105,8 +99,6 @@ pub const Block = struct {
/// Decrypt a block with the last round key.
pub inline fn decryptLast(block: Block, round_key: Block) Block {
- const src = &block.repr;
-
const t0 = block.repr[0];
const t1 = block.repr[1];
const t2 = block.repr[2];
lib/std/crypto/aes_gcm.zig
@@ -114,7 +114,6 @@ test "Aes256Gcm - Empty message and no associated data" {
const ad = "";
const m = "";
var c: [m.len]u8 = undefined;
- var m2: [m.len]u8 = undefined;
var tag: [Aes256Gcm.tag_length]u8 = undefined;
Aes256Gcm.encrypt(&c, &tag, m, ad, nonce, key);
lib/std/crypto/aes_ocb.zig
@@ -271,7 +271,6 @@ test "AesOcb test vector 1" {
var c: [0]u8 = undefined;
Aes128Ocb.encrypt(&c, &tag, "", "", nonce, k);
- var expected_c: [c.len]u8 = undefined;
var expected_tag: [tag.len]u8 = undefined;
_ = try hexToBytes(&expected_tag, "785407BFFFC8AD9EDCC5520AC9111EE6");
lib/std/crypto/bcrypt.zig
@@ -48,7 +48,6 @@ const State = struct {
fn expand0(state: *State, key: []const u8) void {
var i: usize = 0;
var j: usize = 0;
- var t: u32 = undefined;
while (i < state.subkeys.len) : (i += 1) {
state.subkeys[i] ^= toWord(key, &j);
}
@@ -75,7 +74,6 @@ const State = struct {
fn expand(state: *State, data: []const u8, key: []const u8) void {
var i: usize = 0;
var j: usize = 0;
- var t: u32 = undefined;
while (i < state.subkeys.len) : (i += 1) {
state.subkeys[i] ^= toWord(key, &j);
}
lib/std/crypto/chacha20.zig
@@ -444,7 +444,6 @@ fn ChaChaWith64BitNonce(comptime rounds_nb: usize) type {
if (comptime @sizeOf(usize) > 4) {
// A big block is giant: 256 GiB, but we can avoid this limitation
var remaining_blocks: u32 = @intCast(u32, (in.len / big_block));
- var i: u32 = 0;
while (remaining_blocks > 0) : (remaining_blocks -= 1) {
ChaChaImpl(rounds_nb).chacha20Xor(out[cursor .. cursor + big_block], in[cursor .. cursor + big_block], k, c);
c[1] += 1; // upper 32-bit of counter, generic chacha20Xor() doesn't know about this.
lib/std/event/channel.zig
@@ -308,7 +308,6 @@ test "std.event.Channel wraparound" {
// add items to channel and pull them out until
// the buffer wraps around, make sure it doesn't crash.
- var result: i32 = undefined;
channel.put(5);
try testing.expectEqual(@as(i32, 5), channel.get());
channel.put(6);
lib/std/event/group.zig
@@ -130,7 +130,7 @@ test "std.event.Group" {
// TODO this file has bit-rotted. repair it
if (true) return error.SkipZigTest;
- const handle = async testGroup(std.heap.page_allocator);
+ _ = async testGroup(std.heap.page_allocator);
}
fn testGroup(allocator: *Allocator) callconv(.Async) void {
var count: usize = 0;
lib/std/event/loop.zig
@@ -680,7 +680,7 @@ pub const Loop = struct {
fn run(func_args: Args, loop: *Loop, allocator: *mem.Allocator) void {
loop.beginOneEvent();
loop.yield();
- const result = @call(.{}, func, func_args);
+ @call(.{}, func, func_args); // compile error when called with non-void ret type
suspend {
loop.finishOneEvent();
allocator.destroy(@frame());
lib/std/event/rwlock.zig
@@ -225,7 +225,7 @@ test "std.event.RwLock" {
var lock = RwLock.init();
defer lock.deinit();
- const handle = testLock(std.heap.page_allocator, &lock);
+ _ = testLock(std.heap.page_allocator, &lock);
const expected_result = [1]i32{shared_it_count * @intCast(i32, shared_test_data.len)} ** shared_test_data.len;
try testing.expectEqualSlices(i32, expected_result, shared_test_data);
lib/std/fmt/parse_float.zig
@@ -200,7 +200,6 @@ const ParseResult = enum {
fn parseRepr(s: []const u8, n: *FloatRepr) !ParseResult {
var digit_index: usize = 0;
- var negative = false;
var negative_exp = false;
var exponent: i32 = 0;
lib/std/hash/cityhash.zig
@@ -353,7 +353,6 @@ fn SMHasherTest(comptime hash_fn: anytype) u32 {
var key: [256]u8 = undefined;
var hashes_bytes: [256 * @sizeOf(HashResult)]u8 = undefined;
- var final: HashResult = 0;
std.mem.set(u8, &key, 0);
std.mem.set(u8, &hashes_bytes, 0);
lib/std/hash/wyhash.zig
@@ -166,8 +166,6 @@ pub const Wyhash = struct {
}
pub fn final(self: *Wyhash) u64 {
- const seed = self.state.seed;
- const rem_len = @intCast(u5, self.buf_len);
const rem_key = self.buf[0..self.buf_len];
return self.state.final(rem_key);
lib/std/math/big/int.zig
@@ -2000,8 +2000,6 @@ fn llmulacc_karatsuba(allocator: *Allocator, r: []Limb, x: []const Limb, y: []co
} else {
llsub(j1, y0[0..y0_len], y1[0..y1_len]);
}
- const j0_len = llnormalize(j0);
- const j1_len = llnormalize(j1);
if (x_cmp == y_cmp) {
mem.set(Limb, tmp[0..length], 0);
llmulacc(allocator, tmp, j0, j1);
lib/std/math/big/rational.zig
@@ -204,7 +204,6 @@ pub const Rational = struct {
const esize = math.floatExponentBits(T);
const ebias = (1 << (esize - 1)) - 1;
const emin = 1 - ebias;
- const emax = ebias;
if (self.p.eqZero()) {
return 0;
lib/std/math/complex/ldexp.zig
@@ -12,8 +12,8 @@
const std = @import("../../std.zig");
const debug = std.debug;
const math = std.math;
-const cmath = math.complex;
const testing = std.testing;
+const cmath = math.complex;
const Complex = cmath.Complex;
/// Returns exp(z) scaled to avoid overflow.
lib/std/math/expm1.zig
@@ -316,16 +316,12 @@ test "math.expm1_64" {
}
test "math.expm1_32.special" {
- const epsilon = 0.000001;
-
try expect(math.isPositiveInf(expm1_32(math.inf(f32))));
try expect(expm1_32(-math.inf(f32)) == -1.0);
try expect(math.isNan(expm1_32(math.nan(f32))));
}
test "math.expm1_64.special" {
- const epsilon = 0.000001;
-
try expect(math.isPositiveInf(expm1_64(math.inf(f64))));
try expect(expm1_64(-math.inf(f64)) == -1.0);
try expect(math.isNan(expm1_64(math.nan(f64))));
lib/std/math/modf.zig
@@ -12,6 +12,7 @@
const std = @import("../std.zig");
const math = std.math;
const expect = std.testing.expect;
+const expectEqual = std.testing.expectEqual;
const maxInt = std.math.maxInt;
fn modf_result(comptime T: type) type {
@@ -131,11 +132,7 @@ test "math.modf" {
const a = modf(@as(f32, 1.0));
const b = modf32(1.0);
// NOTE: No struct comparison on generic return type function? non-named, makes sense, but still.
- try expect(a.ipart == b.ipart and a.fpart == b.fpart);
-
- const c = modf(@as(f64, 1.0));
- const d = modf64(1.0);
- try expect(a.ipart == b.ipart and a.fpart == b.fpart);
+ try expectEqual(a, b);
}
test "math.modf32" {
lib/std/os/linux/io_uring.zig
@@ -1272,12 +1272,12 @@ test "accept/connect/send/recv" {
var accept_addr: os.sockaddr = undefined;
var accept_addr_len: os.socklen_t = @sizeOf(@TypeOf(accept_addr));
- const accept = try ring.accept(0xaaaaaaaa, server, &accept_addr, &accept_addr_len, 0);
+ _ = try ring.accept(0xaaaaaaaa, server, &accept_addr, &accept_addr_len, 0);
try testing.expectEqual(@as(u32, 1), try ring.submit());
const client = try os.socket(address.any.family, os.SOCK_STREAM | os.SOCK_CLOEXEC, 0);
defer os.close(client);
- const connect = try ring.connect(0xcccccccc, client, &address.any, address.getOsSockLen());
+ _ = try ring.connect(0xcccccccc, client, &address.any, address.getOsSockLen());
try testing.expectEqual(@as(u32, 1), try ring.submit());
var cqe_accept = try ring.copy_cqe();
@@ -1305,7 +1305,7 @@ test "accept/connect/send/recv" {
const send = try ring.send(0xeeeeeeee, client, buffer_send[0..], 0);
send.flags |= linux.IOSQE_IO_LINK;
- const recv = try ring.recv(0xffffffff, cqe_accept.res, buffer_recv[0..], 0);
+ _ = try ring.recv(0xffffffff, cqe_accept.res, buffer_recv[0..], 0);
try testing.expectEqual(@as(u32, 2), try ring.submit());
const cqe_send = try ring.copy_cqe();
lib/std/os/linux/vdso.zig
@@ -15,7 +15,6 @@ pub fn lookup(vername: []const u8, name: []const u8) usize {
const eh = @intToPtr(*elf.Ehdr, vdso_addr);
var ph_addr: usize = vdso_addr + eh.e_phoff;
- const ph = @intToPtr(*elf.Phdr, ph_addr);
var maybe_dynv: ?[*]usize = null;
var base: usize = maxInt(usize);
lib/std/os/windows.zig
@@ -1156,7 +1156,6 @@ pub fn GetFinalPathNameByHandle(
&mount_points_struct.MountPoints[0],
)[0..mount_points_struct.NumberOfMountPoints];
- var found: bool = false;
for (mount_points) |mount_point| {
const symlink = @ptrCast(
[*]const u16,
lib/std/rand/ziggurat.zig
@@ -175,5 +175,5 @@ test "exp dist sanity" {
test "table gen" {
if (please_windows_dont_oom) return error.SkipZigTest;
- const table = NormDist;
+ _ = NormDist;
}
lib/std/special/compiler_rt/addXf3.zig
@@ -83,7 +83,6 @@ fn addXf3(comptime T: type, a: T, b: T) T {
const signBit = (@as(Z, 1) << (significandBits + exponentBits));
const maxExponent = ((1 << exponentBits) - 1);
- const exponentBias = (maxExponent >> 1);
const implicitBit = (@as(Z, 1) << significandBits);
const quietBit = implicitBit >> 1;
@@ -98,10 +97,6 @@ fn addXf3(comptime T: type, a: T, b: T) T {
const aAbs = aRep & absMask;
const bAbs = bRep & absMask;
- const negative = (aRep & signBit) != 0;
- const exponent = @intCast(i32, aAbs >> significandBits) - exponentBias;
- const significand = (aAbs & significandMask) | implicitBit;
-
const infRep = @bitCast(Z, std.math.inf(T));
// Detect if a or b is zero, infinity, or NaN.
lib/std/special/compiler_rt/divtf3.zig
@@ -12,7 +12,6 @@ const wideMultiply = @import("divdf3.zig").wideMultiply;
pub fn __divtf3(a: f128, b: f128) callconv(.C) f128 {
@setRuntimeSafety(builtin.is_test);
const Z = std.meta.Int(.unsigned, 128);
- const SignedZ = std.meta.Int(.signed, 128);
const significandBits = std.math.floatMantissaBits(f128);
const exponentBits = std.math.floatExponentBits(f128);
lib/std/special/compiler_rt/extendXfYf2.zig
@@ -46,7 +46,6 @@ fn extendXfYf2(comptime dst_t: type, comptime src_t: type, a: std.meta.Int(.unsi
const dst_rep_t = std.meta.Int(.unsigned, @typeInfo(dst_t).Float.bits);
const srcSigBits = std.math.floatMantissaBits(src_t);
const dstSigBits = std.math.floatMantissaBits(dst_t);
- const SrcShift = std.math.Log2Int(src_rep_t);
const DstShift = std.math.Log2Int(dst_rep_t);
// Various constants whose values follow from the type parameters.
lib/std/special/compiler_rt/fixuint.zig
@@ -16,7 +16,6 @@ pub fn fixuint(comptime fp_t: type, comptime fixuint_t: type, a: fp_t) fixuint_t
else => unreachable,
};
const typeWidth = @typeInfo(rep_t).Int.bits;
- const srep_t = @import("std").meta.Int(.signed, typeWidth);
const significandBits = switch (fp_t) {
f32 => 23,
f64 => 52,
lib/std/special/compiler_rt/truncXfYf2.zig
@@ -50,7 +50,6 @@ fn truncXfYf2(comptime dst_t: type, comptime src_t: type, a: src_t) dst_t {
const srcSigBits = std.math.floatMantissaBits(src_t);
const dstSigBits = std.math.floatMantissaBits(dst_t);
const SrcShift = std.math.Log2Int(src_rep_t);
- const DstShift = std.math.Log2Int(dst_rep_t);
// Various constants whose values follow from the type parameters.
// Any reasonable optimizer will fold and propagate all of these.
lib/std/unicode/throughput_test.zig
@@ -47,8 +47,6 @@ fn benchmarkCodepointCount(buf: []const u8) !ResultCount {
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
- const args = try std.process.argsAlloc(std.heap.page_allocator);
-
try stdout.print("short ASCII strings\n", .{});
{
const result = try benchmarkCodepointCount("abc");
lib/std/x/os/io.zig
@@ -122,7 +122,6 @@ test "reactor/linux: drive async tcp client/listener pair" {
const IPv4 = std.x.os.IPv4;
const IPv6 = std.x.os.IPv6;
- const Socket = std.x.os.Socket;
const reactor = try Reactor.init(.{ .close_on_exec = true });
defer reactor.deinit();
lib/std/zig/ast.zig
@@ -1866,7 +1866,6 @@ pub const Tree = struct {
}
fn fullStructInit(tree: Tree, info: full.StructInit.Ast) full.StructInit {
- const token_tags = tree.tokens.items(.tag);
var result: full.StructInit = .{
.ast = info,
};
lib/std/zig/parse.zig
@@ -586,7 +586,7 @@ const Parser = struct {
const thread_local_token = p.eatToken(.keyword_threadlocal);
const var_decl = try p.parseVarDecl();
if (var_decl != 0) {
- const semicolon_token = try p.expectToken(.semicolon);
+ _ = try p.expectToken(.semicolon);
return var_decl;
}
if (thread_local_token != null) {
@@ -614,7 +614,7 @@ const Parser = struct {
fn expectUsingNamespace(p: *Parser) !Node.Index {
const usingnamespace_token = p.assertToken(.keyword_usingnamespace);
const expr = try p.expectExpr();
- const semicolon_token = try p.expectToken(.semicolon);
+ _ = try p.expectToken(.semicolon);
return p.addNode(.{
.tag = .@"usingnamespace",
.main_token = usingnamespace_token,
@@ -647,7 +647,7 @@ const Parser = struct {
const align_expr = try p.parseByteAlign();
const section_expr = try p.parseLinkSection();
const callconv_expr = try p.parseCallconv();
- const bang_token = p.eatToken(.bang);
+ _ = p.eatToken(.bang);
const return_type_expr = try p.parseTypeExpr();
if (return_type_expr == 0) {
@@ -775,7 +775,7 @@ const Parser = struct {
/// ContainerField <- KEYWORD_comptime? IDENTIFIER (COLON (KEYWORD_anytype / TypeExpr) ByteAlign?)? (EQUAL Expr)?
fn expectContainerField(p: *Parser) !Node.Index {
- const comptime_token = p.eatToken(.keyword_comptime);
+ _ = p.eatToken(.keyword_comptime);
const name_token = p.assertToken(.identifier);
var align_expr: Node.Index = 0;
@@ -967,7 +967,7 @@ const Parser = struct {
_ = try p.expectToken(.l_paren);
const condition = try p.expectExpr();
_ = try p.expectToken(.r_paren);
- const then_payload = try p.parsePtrPayload();
+ _ = try p.parsePtrPayload();
// TODO propose to change the syntax so that semicolons are always required
// inside if statements, even if there is an `else`.
@@ -992,7 +992,7 @@ const Parser = struct {
else_required = true;
break :blk assign_expr;
};
- const else_token = p.eatToken(.keyword_else) orelse {
+ _ = p.eatToken(.keyword_else) orelse {
if (else_required) {
try p.warn(.expected_semi_or_else);
}
@@ -1087,7 +1087,7 @@ const Parser = struct {
else_required = true;
break :blk assign_expr;
};
- const else_token = p.eatToken(.keyword_else) orelse {
+ _ = p.eatToken(.keyword_else) orelse {
if (else_required) {
try p.warn(.expected_semi_or_else);
}
@@ -1122,7 +1122,7 @@ const Parser = struct {
_ = try p.expectToken(.l_paren);
const condition = try p.expectExpr();
_ = try p.expectToken(.r_paren);
- const then_payload = try p.parsePtrPayload();
+ _ = try p.parsePtrPayload();
const cont_expr = try p.parseWhileContinueExpr();
// TODO propose to change the syntax so that semicolons are always required
@@ -1162,7 +1162,7 @@ const Parser = struct {
else_required = true;
break :blk assign_expr;
};
- const else_token = p.eatToken(.keyword_else) orelse {
+ _ = p.eatToken(.keyword_else) orelse {
if (else_required) {
try p.warn(.expected_semi_or_else);
}
@@ -1550,7 +1550,7 @@ const Parser = struct {
},
.l_bracket => switch (p.token_tags[p.tok_i + 1]) {
.asterisk => {
- const lbracket = p.nextToken();
+ _ = p.nextToken();
const asterisk = p.nextToken();
var sentinel: Node.Index = 0;
prefix: {
@@ -1907,7 +1907,7 @@ const Parser = struct {
if (found_payload == 0) try p.warn(.expected_loop_payload);
const then_expr = try p.expectExpr();
- const else_token = p.eatToken(.keyword_else) orelse {
+ _ = p.eatToken(.keyword_else) orelse {
return p.addNode(.{
.tag = .for_simple,
.main_token = for_token,
@@ -1938,11 +1938,11 @@ const Parser = struct {
_ = try p.expectToken(.l_paren);
const condition = try p.expectExpr();
_ = try p.expectToken(.r_paren);
- const then_payload = try p.parsePtrPayload();
+ _ = try p.parsePtrPayload();
const cont_expr = try p.parseWhileContinueExpr();
const then_expr = try p.expectExpr();
- const else_token = p.eatToken(.keyword_else) orelse {
+ _ = p.eatToken(.keyword_else) orelse {
if (cont_expr == 0) {
return p.addNode(.{
.tag = .while_simple,
@@ -1966,7 +1966,7 @@ const Parser = struct {
});
}
};
- const else_payload = try p.parsePayload();
+ _ = try p.parsePayload();
const else_expr = try p.expectExpr();
return p.addNode(.{
.tag = .@"while",
@@ -2565,8 +2565,8 @@ const Parser = struct {
p.tok_i += 2;
while (true) {
if (p.eatToken(.r_brace)) |_| break;
- const doc_comment = try p.eatDocComments();
- const identifier = try p.expectToken(.identifier);
+ _ = try p.eatDocComments();
+ _ = try p.expectToken(.identifier);
switch (p.token_tags[p.tok_i]) {
.comma => p.tok_i += 1,
.r_brace => {
@@ -2634,7 +2634,7 @@ const Parser = struct {
if (found_payload == 0) try p.warn(.expected_loop_payload);
const then_expr = try p.expectTypeExpr();
- const else_token = p.eatToken(.keyword_else) orelse {
+ _ = p.eatToken(.keyword_else) orelse {
return p.addNode(.{
.tag = .for_simple,
.main_token = for_token,
@@ -2665,11 +2665,11 @@ const Parser = struct {
_ = try p.expectToken(.l_paren);
const condition = try p.expectExpr();
_ = try p.expectToken(.r_paren);
- const then_payload = try p.parsePtrPayload();
+ _ = try p.parsePtrPayload();
const cont_expr = try p.parseWhileContinueExpr();
const then_expr = try p.expectTypeExpr();
- const else_token = p.eatToken(.keyword_else) orelse {
+ _ = p.eatToken(.keyword_else) orelse {
if (cont_expr == 0) {
return p.addNode(.{
.tag = .while_simple,
@@ -2693,7 +2693,7 @@ const Parser = struct {
});
}
};
- const else_payload = try p.parsePayload();
+ _ = try p.parsePayload();
const else_expr = try p.expectTypeExpr();
return p.addNode(.{
.tag = .@"while",
@@ -3570,12 +3570,12 @@ const Parser = struct {
_ = try p.expectToken(.l_paren);
const condition = try p.expectExpr();
_ = try p.expectToken(.r_paren);
- const then_payload = try p.parsePtrPayload();
+ _ = try p.parsePtrPayload();
const then_expr = try bodyParseFn(p);
if (then_expr == 0) return p.fail(.invalid_token);
- const else_token = p.eatToken(.keyword_else) orelse return p.addNode(.{
+ _ = p.eatToken(.keyword_else) orelse return p.addNode(.{
.tag = .if_simple,
.main_token = if_token,
.data = .{
@@ -3583,7 +3583,7 @@ const Parser = struct {
.rhs = then_expr,
},
});
- const else_payload = try p.parsePayload();
+ _ = try p.parsePayload();
const else_expr = try bodyParseFn(p);
if (else_expr == 0) return p.fail(.invalid_token);
lib/std/zig/parser_test.zig
@@ -5201,7 +5201,6 @@ fn testParse(source: []const u8, allocator: *mem.Allocator, anything_changed: *b
defer tree.deinit(allocator);
for (tree.errors) |parse_error| {
- const token_start = tree.tokens.items(.start)[parse_error.token];
const loc = tree.tokenLocation(0, parse_error.token);
try stderr.print("(memory buffer):{d}:{d}: error: ", .{ loc.line + 1, loc.column + 1 });
try tree.renderError(parse_error, stderr);
lib/std/zig/render.zig
@@ -1086,8 +1086,6 @@ fn renderWhile(gpa: *Allocator, ais: *Ais, tree: ast.Tree, while_node: ast.full.
}
if (while_node.ast.else_expr != 0) {
- const first_else_expr_tok = tree.firstToken(while_node.ast.else_expr);
-
if (indent_then_expr) {
ais.pushIndent();
try renderExpression(gpa, ais, tree, while_node.ast.then_expr, .newline);
@@ -1133,7 +1131,6 @@ fn renderContainerField(
field: ast.full.ContainerField,
space: Space,
) Error!void {
- const main_tokens = tree.nodes.items(.main_token);
if (field.comptime_token) |t| {
try renderToken(ais, tree, t, .space); // comptime
}
@@ -1519,7 +1516,6 @@ fn renderBlock(
) Error!void {
const token_tags = tree.tokens.items(.tag);
const node_tags = tree.nodes.items(.tag);
- const nodes_data = tree.nodes.items(.data);
const lbrace = tree.nodes.items(.main_token)[block_node];
if (token_tags[lbrace - 1] == .colon and
@@ -1617,7 +1613,6 @@ fn renderArrayInit(
space: Space,
) Error!void {
const token_tags = tree.tokens.items(.tag);
- const token_starts = tree.tokens.items(.start);
if (array_init.ast.type_expr == 0) {
try renderToken(ais, tree, array_init.ast.lbrace - 1, .none); // .
@@ -2046,7 +2041,6 @@ fn renderCall(
space: Space,
) Error!void {
const token_tags = tree.tokens.items(.tag);
- const main_tokens = tree.nodes.items(.main_token);
if (call.async_token) |async_token| {
try renderToken(ais, tree, async_token, .space);
lib/std/zig/system.zig
@@ -478,13 +478,6 @@ pub const NativeTargetInfo = struct {
}
const ld_info_list = ld_info_list_buffer[0..ld_info_list_len];
- if (cross_target.dynamic_linker.get()) |explicit_ld| {
- const explicit_ld_basename = fs.path.basename(explicit_ld);
- for (ld_info_list) |ld_info| {
- const standard_ld_basename = fs.path.basename(ld_info.ld.get().?);
- }
- }
-
// Best case scenario: the executable is dynamically linked, and we can iterate
// over our own shared objects and find a dynamic linker.
self_exe: {
@@ -838,7 +831,7 @@ pub const NativeTargetInfo = struct {
if (dynstr) |ds| {
const strtab_len = std.math.min(ds.size, strtab_buf.len);
- const strtab_read_len = try preadMin(file, &strtab_buf, ds.offset, shstrtab_len);
+ const strtab_read_len = try preadMin(file, &strtab_buf, ds.offset, strtab_len);
const strtab = strtab_buf[0..strtab_read_len];
// TODO this pointer cast should not be necessary
const rpoff_usize = std.math.cast(usize, rpoff) catch |err| switch (err) {
lib/std/zig/tokenizer.zig
@@ -416,7 +416,6 @@ pub const Tokenizer = struct {
self.pending_invalid_token = null;
return token;
}
- const start_index = self.index;
var state: State = .start;
var result = Token{
.tag = .eof,
lib/std/base64.zig
@@ -112,9 +112,6 @@ pub const Base64Encoder = struct {
const out_len = encoder.calcSize(source.len);
assert(dest.len >= out_len);
- const nibbles = source.len / 3;
- const leftover = source.len - 3 * nibbles;
-
var acc: u12 = 0;
var acc_len: u4 = 0;
var out_idx: usize = 0;
@@ -223,7 +220,6 @@ pub const Base64Decoder = struct {
if (decoder.pad_char) |pad_char| {
const padding_len = acc_len / 2;
var padding_chars: usize = 0;
- var i: usize = 0;
for (leftover) |c| {
if (c != pad_char) {
return if (c == Base64Decoder.invalid_char) error.InvalidCharacter else error.InvalidPadding;
@@ -302,7 +298,6 @@ pub const Base64DecoderWithIgnore = struct {
var leftover = source[leftover_idx.?..];
if (decoder.pad_char) |pad_char| {
var padding_chars: usize = 0;
- var i: usize = 0;
for (leftover) |c| {
if (decoder_with_ignore.char_is_ignored[c]) continue;
if (c != pad_char) {
lib/std/dynamic_library.zig
@@ -407,7 +407,7 @@ test "dynamic_library" {
else => return error.SkipZigTest,
};
- const dynlib = DynLib.open(libname) catch |err| {
+ _ = DynLib.open(libname) catch |err| {
try testing.expect(err == error.FileNotFound);
return;
};
lib/std/fmt.zig
@@ -1140,7 +1140,7 @@ pub fn formatFloatHexadecimal(
// +1 for the decimal part.
var buf: [1 + mantissa_digits]u8 = undefined;
- const N = formatIntBuf(&buf, mantissa, 16, .lower, .{ .fill = '0', .width = 1 + mantissa_digits });
+ _ = formatIntBuf(&buf, mantissa, 16, .lower, .{ .fill = '0', .width = 1 + mantissa_digits });
try writer.writeAll("0x");
try writer.writeByte(buf[0]);
@@ -2162,7 +2162,6 @@ test "custom" {
}
};
- var buf1: [32]u8 = undefined;
var value = Vec2{
.x = 10.2,
.y = 2.22,
@@ -2220,7 +2219,7 @@ test "union" {
try std.testing.expect(mem.eql(u8, uu_result[0..3], "UU@"));
const eu_result = try bufPrint(buf[0..], "{}", .{eu_inst});
- try std.testing.expect(mem.eql(u8, uu_result[0..3], "EU@"));
+ try std.testing.expect(mem.eql(u8, eu_result[0..3], "EU@"));
}
test "enum" {
lib/std/fs.zig
@@ -477,7 +477,7 @@ pub const Dir = struct {
}
var stat_info: os.libc_stat = undefined;
- const rc2 = os.system._kern_read_stat(
+ _ = os.system._kern_read_stat(
self.dir.fd,
&haiku_entry.d_name,
false,
@@ -2438,7 +2438,7 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 {
}) catch continue;
var real_path_buf: [MAX_PATH_BYTES]u8 = undefined;
- if (os.realpathZ(&resolved_path_buf, &real_path_buf)) |real_path| {
+ if (os.realpathZ(resolved_path, &real_path_buf)) |real_path| {
// found a file, and hope it is the right file
if (real_path.len > out_buffer.len)
return error.NameTooLong;
lib/std/hash_map.zig
@@ -1809,7 +1809,7 @@ test "std.hash_map getOrPut" {
i = 0;
while (i < 20) : (i += 1) {
- var n = try map.getOrPutValue(i, 1);
+ _ = try map.getOrPutValue(i, 1);
}
i = 0;
lib/std/leb128.zig
@@ -198,7 +198,7 @@ fn test_read_ileb128_seq(comptime T: type, comptime N: usize, encoded: []const u
var reader = std.io.fixedBufferStream(encoded);
var i: usize = 0;
while (i < N) : (i += 1) {
- const v1 = try readILEB128(T, reader.reader());
+ _ = try readILEB128(T, reader.reader());
}
}
@@ -206,7 +206,7 @@ fn test_read_uleb128_seq(comptime T: type, comptime N: usize, encoded: []const u
var reader = std.io.fixedBufferStream(encoded);
var i: usize = 0;
while (i < N) : (i += 1) {
- const v1 = try readULEB128(T, reader.reader());
+ _ = try readULEB128(T, reader.reader());
}
}
@@ -309,7 +309,6 @@ fn test_write_leb128(value: anytype) !void {
const B = std.meta.Int(signedness, larger_type_bits);
const bytes_needed = bn: {
- const S = std.meta.Int(signedness, @sizeOf(T) * 8);
if (@typeInfo(T).Int.bits <= 7) break :bn @as(u16, 1);
const unused_bits = if (value < 0) @clz(T, ~value) else @clz(T, value);
lib/std/linked_list.zig
@@ -359,8 +359,8 @@ test "basic TailQueue test" {
}
}
- var first = list.popFirst(); // {2, 3, 4, 5}
- var last = list.pop(); // {2, 3, 4}
+ _ = list.popFirst(); // {2, 3, 4, 5}
+ _ = list.pop(); // {2, 3, 4}
list.remove(&three); // {2, 4}
try testing.expect(list.first.?.data == 2);
lib/std/meta.zig
@@ -654,7 +654,6 @@ pub fn TagPayload(comptime U: type, tag: Tag(U)) type {
try testing.expect(trait.is(.Union)(U));
const info = @typeInfo(U).Union;
- const tag_info = @typeInfo(Tag(U)).Enum;
inline for (info.fields) |field_info| {
if (comptime mem.eql(u8, field_info.name, @tagName(tag)))
@@ -757,12 +756,6 @@ test "std.meta.eql" {
.c = "12345".*,
};
- const s_2 = S{
- .a = 1,
- .b = 123.3,
- .c = "54321".*,
- };
-
var s_3 = S{
.a = 134,
.b = 123.3,
lib/std/os.zig
@@ -5341,7 +5341,7 @@ pub fn sendfile(
ENXIO => return error.Unseekable,
ESPIPE => return error.Unseekable,
else => |err| {
- const discard = unexpectedErrno(err);
+ unexpectedErrno(err) catch {};
break :sf;
},
}
@@ -5422,7 +5422,7 @@ pub fn sendfile(
EPIPE => return error.BrokenPipe,
else => {
- const discard = unexpectedErrno(err);
+ unexpectedErrno(err) catch {};
if (amt != 0) {
return amt;
} else {
@@ -5484,7 +5484,7 @@ pub fn sendfile(
EPIPE => return error.BrokenPipe,
else => {
- const discard = unexpectedErrno(err);
+ unexpectedErrno(err) catch {};
if (amt != 0) {
return amt;
} else {
lib/std/pdb.zig
@@ -590,11 +590,11 @@ pub const Pdb = struct {
var sect_cont_offset: usize = 0;
if (section_contrib_size != 0) {
- // the version
- _ = reader.readEnum(SectionContrSubstreamVersion, .Little) catch |err| switch (err) {
+ const version = reader.readEnum(SectionContrSubstreamVersion, .Little) catch |err| switch (err) {
error.InvalidValue => return error.InvalidDebugInfo,
else => |e| return e,
};
+ _ = version;
sect_cont_offset += @sizeOf(u32);
}
while (sect_cont_offset != section_contrib_size) {
@@ -617,8 +617,8 @@ pub const Pdb = struct {
// Parse the InfoStreamHeader.
const version = try reader.readIntLittle(u32);
- // The signature
- _ = try reader.readIntLittle(u32);
+ const signature = try reader.readIntLittle(u32);
+ _ = signature;
const age = try reader.readIntLittle(u32);
const guid = try reader.readBytesNoEof(16);
lib/std/testing.zig
@@ -191,7 +191,6 @@ test "expectEqual.union(enum)" {
};
const a10 = T{ .a = 10 };
- const a20 = T{ .a = 20 };
try expectEqual(a10, a10);
}
lib/std/Thread.zig
@@ -518,8 +518,8 @@ pub fn cpuCount() CpuCountError!usize {
},
.haiku => {
var count: u32 = undefined;
- var system_info: os.system_info = undefined;
- const rc = os.system.get_system_info(&system_info);
+ // var system_info: os.system_info = undefined;
+ // const rc = os.system.get_system_info(&system_info);
count = system_info.cpu_count;
return @intCast(usize, count);
},
src/codegen/c.zig
@@ -1107,7 +1107,6 @@ fn genAsm(o: *Object, as: *Inst.Assembly) !CValue {
for (as.inputs) |i, index| {
if (i[0] == '{' and i[i.len - 1] == '}') {
const reg = i[1 .. i.len - 1];
- const arg = as.args[index];
if (index > 0) {
try writer.writeAll(", ");
}
src/codegen/spirv.zig
@@ -714,7 +714,6 @@ pub const DeclGen = struct {
return self.fail(inst.base.src, "TODO: SPIR-V backend: binary operations for strange integers", .{});
}
- const is_bool = info.class == .bool;
const is_float = info.class == .float;
const is_signed = info.signedness == .signed;
// **Note**: All these operations must be valid for vectors as well!
@@ -802,8 +801,6 @@ pub const DeclGen = struct {
const result_id = self.spv.allocResultId();
const result_type_id = try self.genType(inst.base.src, inst.base.ty);
- const info = try self.arithmeticTypeInfo(inst.operand.ty);
-
const opcode = switch (inst.base.tag) {
// Bool -> bool
.not => Opcode.OpLogicalNot,
@@ -867,6 +864,7 @@ pub const DeclGen = struct {
// are not allowed to be created from a phi node, and throw an error for those. For now, genType already throws
// an error for pointers.
const result_type_id = try self.genType(inst.base.src, inst.base.ty);
+ _ = result_type_id;
try writeOpcode(&self.code, .OpPhi, 2 + @intCast(u16, incoming_blocks.items.len * 2)); // result type + result + variable/parent...
src/codegen/wasm.zig
@@ -849,7 +849,6 @@ pub const Context = struct {
}
fn genCall(self: *Context, inst: *Inst.Call) InnerError!WValue {
- const func_inst = inst.func.castTag(.constant).?;
const func_val = inst.func.value().?;
const target: *Decl = blk: {
@@ -1146,8 +1145,6 @@ pub const Context = struct {
}
fn genCmp(self: *Context, inst: *Inst.BinOp, op: std.math.CompareOperator) InnerError!WValue {
- const ty = inst.lhs.ty.tag();
-
// save offset, so potential conditions can insert blocks in front of
// the comparison that we can later jump back to
const offset = self.code.items.len;
src/link/MachO/reloc/x86_64.zig
@@ -175,7 +175,6 @@ pub const Parser = struct {
const rel_type = @intToEnum(macho.reloc_type_x86_64, rel.r_type);
const target = Relocation.Target.from_reloc(rel, parser.symbols);
- const is_extern = rel.r_extern == 1;
const offset = @intCast(u32, rel.r_address);
const inst = parser.code[offset..][0..4];
src/link/MachO/DebugSymbols.zig
@@ -500,7 +500,6 @@ pub fn flushModule(self: *DebugSymbols, allocator: *Allocator, options: link.Opt
if (self.debug_aranges_section_dirty) {
const dwarf_segment = &self.load_commands.items[self.dwarf_segment_cmd_index.?].Segment;
const debug_aranges_sect = &dwarf_segment.sections.items[self.debug_aranges_section_index.?];
- const debug_info_sect = dwarf_segment.sections.items[self.debug_info_section_index.?];
var di_buf = std.ArrayList(u8).init(allocator);
defer di_buf.deinit();
@@ -844,7 +843,6 @@ fn relocateSymbolTable(self: *DebugSymbols) !void {
const nsyms = nlocals + nglobals;
if (symtab.nsyms < nsyms) {
- const linkedit_segment = self.load_commands.items[self.linkedit_segment_cmd_index.?].Segment;
const needed_size = nsyms * @sizeOf(macho.nlist_64);
if (needed_size > self.allocatedSizeLinkedit(symtab.symoff)) {
// Move the entire symbol table to a new location
@@ -904,11 +902,6 @@ pub fn updateDeclLineNumber(self: *DebugSymbols, module: *Module, decl: *const M
const tracy = trace(@src());
defer tracy.end();
- const tree = decl.namespace.file_scope.tree;
- const node_tags = tree.nodes.items(.tag);
- const node_datas = tree.nodes.items(.data);
- const token_starts = tree.tokens.items(.start);
-
const func = decl.val.castTag(.function).?.data;
const line_off = @intCast(u28, decl.src_line + func.lbrace_line);
src/link/MachO/Object.zig
@@ -478,7 +478,6 @@ pub fn parseDebugInfo(self: *Object) !void {
self.tu_path = try std.fs.path.join(self.allocator, &[_][]const u8{ comp_dir, name });
self.tu_mtime = mtime: {
- var buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined;
const stat = try self.file.?.stat();
break :mtime @intCast(u64, @divFloor(stat.mtime, 1_000_000_000));
};
src/link/MachO/Zld.zig
@@ -432,7 +432,6 @@ fn mapAndUpdateSections(
fn updateMetadata(self: *Zld) !void {
for (self.objects.items) |object| {
- const object_seg = object.load_commands.items[object.segment_cmd_index.?].Segment;
const text_seg = &self.load_commands.items[self.text_segment_cmd_index.?].Segment;
const data_const_seg = &self.load_commands.items[self.data_const_segment_cmd_index.?].Segment;
const data_seg = &self.load_commands.items[self.data_segment_cmd_index.?].Segment;
@@ -1294,7 +1293,6 @@ fn allocateLinkeditSegment(self: *Zld) void {
}
fn allocateSegment(self: *Zld, index: u16, offset: u64) !void {
- const base_vmaddr = self.load_commands.items[self.pagezero_segment_cmd_index.?].Segment.inner.vmsize;
const seg = &self.load_commands.items[index].Segment;
// Allocate the sections according to their alignment at the beginning of the segment.
@@ -1427,7 +1425,6 @@ fn writeStubHelperCommon(self: *Zld) !void {
const got = &data_const_segment.sections.items[self.got_section_index.?];
const data_segment = &self.load_commands.items[self.data_segment_cmd_index.?].Segment;
const data = &data_segment.sections.items[self.data_section_index.?];
- const la_symbol_ptr = data_segment.sections.items[self.la_symbol_ptr_section_index.?];
self.stub_helper_stubs_start_off = blk: {
switch (self.arch.?) {
@@ -2654,7 +2651,6 @@ fn setEntryPoint(self: *Zld) !void {
// TODO we should respect the -entry flag passed in by the user to set a custom
// entrypoint. For now, assume default of `_main`.
const seg = self.load_commands.items[self.text_segment_cmd_index.?].Segment;
- const text = seg.sections.items[self.text_section_index.?];
const sym = self.globals.get("_main") orelse return error.MissingMainEntrypoint;
const entry_sym = sym.cast(Symbol.Regular) orelse unreachable;
const ec = &self.load_commands.items[self.main_cmd_index.?].Main;
@@ -2862,7 +2858,6 @@ fn populateLazyBindOffsetsInStubHelper(self: *Zld, buffer: []const u8) !void {
error.EndOfStream => break,
else => return err,
};
- const imm: u8 = inst & macho.BIND_IMMEDIATE_MASK;
const opcode: u8 = inst & macho.BIND_OPCODE_MASK;
switch (opcode) {
@@ -2959,6 +2954,7 @@ fn writeDebugInfo(self: *Zld) !void {
for (self.objects.items) |object| {
const tu_path = object.tu_path orelse continue;
const tu_mtime = object.tu_mtime orelse continue;
+ _ = tu_mtime;
const dirname = std.fs.path.dirname(tu_path) orelse "./";
// Current dir
try stabs.append(.{
src/link/MachO.zig
@@ -2918,7 +2918,6 @@ fn relocateSymbolTable(self: *MachO) !void {
const nsyms = nlocals + nglobals + nundefs;
if (symtab.nsyms < nsyms) {
- const linkedit_segment = self.load_commands.items[self.linkedit_segment_cmd_index.?].Segment;
const needed_size = nsyms * @sizeOf(macho.nlist_64);
if (needed_size > self.allocatedSizeLinkedit(symtab.symoff)) {
// Move the entire symbol table to a new location
@@ -3150,7 +3149,6 @@ fn writeExportTrie(self: *MachO) !void {
const nwritten = try trie.write(stream.writer());
assert(nwritten == trie.size);
- const linkedit_segment = self.load_commands.items[self.linkedit_segment_cmd_index.?].Segment;
const dyld_info = &self.load_commands.items[self.dyld_info_cmd_index.?].DyldInfoOnly;
const allocated_size = self.allocatedSizeLinkedit(dyld_info.export_off);
const needed_size = mem.alignForwardGeneric(u64, buffer.len, @alignOf(u64));
@@ -3357,7 +3355,6 @@ fn populateLazyBindOffsetsInStubHelper(self: *MachO, buffer: []const u8) !void {
error.EndOfStream => break,
else => return err,
};
- const imm: u8 = inst & macho.BIND_IMMEDIATE_MASK;
const opcode: u8 = inst & macho.BIND_OPCODE_MASK;
switch (opcode) {
src/link/Wasm.zig
@@ -496,7 +496,6 @@ pub fn flushModule(self: *Wasm, comp: *Compilation) !void {
if (data_size != 0) {
const header_offset = try reserveVecSectionHeader(file);
const writer = file.writer();
- var len: u32 = 0;
// index to memory section (currently, there can only be 1 memory section in wasm)
try leb.writeULEB128(writer, @as(u32, 0));
src/AstGen.zig
@@ -206,7 +206,6 @@ pub const ResultLoc = union(enum) {
};
fn strategy(rl: ResultLoc, block_scope: *GenZir) Strategy {
- var elide_store_to_block_ptr_instructions = false;
switch (rl) {
// In this branch there will not be any store_to_block_ptr instructions.
.discard, .none, .none_or_ref, .ty, .ref => return .{
@@ -905,7 +904,6 @@ fn nosuspendExpr(
node: ast.Node.Index,
) InnerError!Zir.Inst.Ref {
const astgen = gz.astgen;
- const gpa = astgen.gpa;
const tree = astgen.tree;
const node_datas = tree.nodes.items(.data);
const body_node = node_datas[node].lhs;
@@ -1113,7 +1111,6 @@ fn arrayInitExpr(
) InnerError!Zir.Inst.Ref {
const astgen = gz.astgen;
const tree = astgen.tree;
- const gpa = astgen.gpa;
const node_tags = tree.nodes.items(.tag);
const main_tokens = tree.nodes.items(.main_token);
@@ -1293,7 +1290,6 @@ fn structInitExpr(
) InnerError!Zir.Inst.Ref {
const astgen = gz.astgen;
const tree = astgen.tree;
- const gpa = astgen.gpa;
if (struct_init.ast.fields.len == 0) {
if (struct_init.ast.type_expr == 0) {
@@ -1675,9 +1671,6 @@ fn checkLabelRedefinition(astgen: *AstGen, parent_scope: *Scope, label: ast.Toke
const gen_zir = scope.cast(GenZir).?;
if (gen_zir.label) |prev_label| {
if (try astgen.tokenIdentEql(label, prev_label.token)) {
- const tree = astgen.tree;
- const main_tokens = tree.nodes.items(.main_token);
-
const label_name = try astgen.identifierTokenString(label);
return astgen.failTokNotes(label, "redefinition of label '{s}'", .{
label_name,
@@ -1790,7 +1783,6 @@ fn blockExprStmts(
) !void {
const astgen = gz.astgen;
const tree = astgen.tree;
- const main_tokens = tree.nodes.items(.main_token);
const node_tags = tree.nodes.items(.tag);
var block_arena = std.heap.ArenaAllocator.init(gz.astgen.gpa);
@@ -2147,7 +2139,10 @@ fn genDefers(
.defer_error => {
const defer_scope = scope.cast(Scope.Defer).?;
scope = defer_scope.parent;
- if (err_code == .none) continue;
+ // TODO add this back when we have more errdefer support
+ // right now it is making stuff not get evaluated which causes
+ // unused vars.
+ // if (err_code == .none) continue;
const expr_node = node_datas[defer_scope.defer_node].rhs;
const prev_in_defer = gz.in_defer;
gz.in_defer = true;
@@ -2166,8 +2161,6 @@ fn checkUsed(
inner_scope: *Scope,
) InnerError!void {
const astgen = gz.astgen;
- const tree = astgen.tree;
- const node_datas = tree.nodes.items(.data);
var scope = inner_scope;
while (scope != outer_scope) {
@@ -2450,7 +2443,7 @@ fn varDecl(
resolve_inferred_alloc = alloc;
break :a .{ .alloc = alloc, .result_loc = .{ .inferred_ptr = alloc } };
};
- const init_inst = try expr(gz, scope, var_data.result_loc, var_decl.ast.init_node);
+ _ = try expr(gz, scope, var_data.result_loc, var_decl.ast.init_node);
if (resolve_inferred_alloc != .none) {
_ = try gz.addUnNode(.resolve_inferred_alloc, resolve_inferred_alloc, node);
}
@@ -2477,7 +2470,6 @@ fn emitDbgNode(gz: *GenZir, node: ast.Node.Index) !void {
const astgen = gz.astgen;
const tree = astgen.tree;
- const node_tags = tree.nodes.items(.tag);
const token_starts = tree.tokens.items(.start);
const decl_start = token_starts[tree.firstToken(gz.decl_node_index)];
const node_start = token_starts[tree.firstToken(node)];
@@ -2602,9 +2594,6 @@ fn ptrType(
node: ast.Node.Index,
ptr_info: ast.full.PtrType,
) InnerError!Zir.Inst.Ref {
- const astgen = gz.astgen;
- const tree = astgen.tree;
-
const elem_type = try typeExpr(gz, scope, ptr_info.ast.child_type);
const simple = ptr_info.ast.align_node == 0 and
@@ -4305,10 +4294,8 @@ fn containerDecl(
defer wip_decls.deinit(gpa);
for (container_decl.ast.members) |member_node| {
- const member = switch (node_tags[member_node]) {
- .container_field_init => tree.containerFieldInit(member_node),
- .container_field_align => tree.containerFieldAlign(member_node),
- .container_field => tree.containerField(member_node),
+ switch (node_tags[member_node]) {
+ .container_field_init, .container_field_align, .container_field => {},
.fn_decl => {
const fn_proto = node_datas[member_node].lhs;
@@ -4429,7 +4416,7 @@ fn containerDecl(
continue;
},
else => unreachable,
- };
+ }
}
{
const empty_slot_count = WipDecls.fields_per_u32 - (wip_decls.decl_index % WipDecls.fields_per_u32);
@@ -4497,11 +4484,6 @@ fn errorSetDecl(
}
}
- const tag: Zir.Inst.Tag = switch (gz.anon_name_strategy) {
- .parent => .error_set_decl,
- .anon => .error_set_decl_anon,
- .func => .error_set_decl_func,
- };
const result = try gz.addPlNode(.error_set_decl, node, Zir.Inst.ErrorSetDecl{
.fields_len = @intCast(u32, field_names.items.len),
});
@@ -4517,7 +4499,6 @@ fn tryExpr(
operand_node: ast.Node.Index,
) InnerError!Zir.Inst.Ref {
const astgen = parent_gz.astgen;
- const tree = astgen.tree;
const fn_block = astgen.fn_block orelse {
return astgen.failNode(node, "invalid 'try' outside function scope", .{});
@@ -4702,7 +4683,6 @@ fn finishThenElseBlock(
// We now have enough information to decide whether the result instruction should
// be communicated via result location pointer or break instructions.
const strat = rl.strategy(block_scope);
- const astgen = block_scope.astgen;
switch (strat.tag) {
.break_void => {
if (!parent_gz.refIsNoReturn(then_result)) {
@@ -4786,7 +4766,6 @@ fn arrayAccess(
) InnerError!Zir.Inst.Ref {
const astgen = gz.astgen;
const tree = astgen.tree;
- const main_tokens = tree.nodes.items(.main_token);
const node_datas = tree.nodes.items(.data);
switch (rl) {
.ref => return gz.addBin(
@@ -6054,7 +6033,6 @@ fn ret(gz: *GenZir, scope: *Scope, node: ast.Node.Index) InnerError!Zir.Inst.Ref
const astgen = gz.astgen;
const tree = astgen.tree;
const node_datas = tree.nodes.items(.data);
- const main_tokens = tree.nodes.items(.main_token);
if (gz.in_defer) return astgen.failNode(node, "cannot return from defer expression", .{});
@@ -6271,7 +6249,6 @@ fn multilineStringLiteral(
const astgen = gz.astgen;
const tree = astgen.tree;
const node_datas = tree.nodes.items(.data);
- const main_tokens = tree.nodes.items(.main_token);
const start = node_datas[node].lhs;
const end = node_datas[node].rhs;
@@ -6387,7 +6364,6 @@ fn floatLiteral(
node: ast.Node.Index,
) InnerError!Zir.Inst.Ref {
const astgen = gz.astgen;
- const arena = astgen.arena;
const tree = astgen.tree;
const main_tokens = tree.nodes.items(.main_token);
@@ -6430,7 +6406,6 @@ fn asmExpr(
full: ast.full.Asm,
) InnerError!Zir.Inst.Ref {
const astgen = gz.astgen;
- const arena = astgen.arena;
const tree = astgen.tree;
const main_tokens = tree.nodes.items(.main_token);
const node_datas = tree.nodes.items(.data);
@@ -6519,7 +6494,6 @@ fn asmExpr(
const name = try astgen.identAsString(symbolic_name);
const constraint_token = symbolic_name + 2;
const constraint = (try astgen.strLitAsString(constraint_token)).index;
- const has_arrow = token_tags[symbolic_name + 4] == .arrow;
const operand = try expr(gz, scope, .{ .ty = .usize_type }, node_datas[input_node].lhs);
inputs[i] = .{
.name = name,
@@ -6601,7 +6575,7 @@ fn unionInit(
const field_name = try comptimeExpr(gz, scope, .{ .ty = .const_slice_u8_type }, params[1]);
switch (rl) {
.none, .none_or_ref, .discard, .ref, .ty, .inferred_ptr => {
- const field_type = try gz.addPlNode(.field_type_ref, params[1], Zir.Inst.FieldTypeRef{
+ _ = try gz.addPlNode(.field_type_ref, params[1], Zir.Inst.FieldTypeRef{
.container_type = union_type,
.field_name = field_name,
});
@@ -6783,7 +6757,6 @@ fn builtinCall(
switch (info.tag) {
.import => {
const node_tags = tree.nodes.items(.tag);
- const node_datas = tree.nodes.items(.data);
const operand_node = params[0];
if (node_tags[operand_node] != .string_literal) {
@@ -8119,7 +8092,6 @@ fn parseStrLit(
bytes: []const u8,
offset: u32,
) InnerError!void {
- const tree = astgen.tree;
const raw_string = bytes[offset..];
var buf_managed = buf.toManaged(astgen.gpa);
const result = std.zig.string_literal.parseAppend(&buf_managed, raw_string);
@@ -8567,7 +8539,6 @@ const GenZir = struct {
fn calcLine(gz: GenZir, node: ast.Node.Index) u32 {
const astgen = gz.astgen;
const tree = astgen.tree;
- const node_tags = tree.nodes.items(.tag);
const token_starts = tree.tokens.items(.start);
const decl_start = token_starts[tree.firstToken(gz.decl_node_index)];
const node_start = token_starts[tree.firstToken(node)];
src/codegen.zig
@@ -118,7 +118,6 @@ pub fn generateSymbol(
if (typed_value.ty.sentinel()) |sentinel| {
try code.ensureCapacity(code.items.len + payload.data.len + 1);
code.appendSliceAssumeCapacity(payload.data);
- const prev_len = code.items.len;
switch (try generateSymbol(bin_file, src_loc, .{
.ty = typed_value.ty.elemType(),
.val = sentinel,
src/Compilation.zig
@@ -325,7 +325,6 @@ pub const AllErrors = struct {
},
pub fn renderToStdErr(msg: Message, ttyconf: std.debug.TTY.Config) void {
- const stderr_mutex = std.debug.getStderrMutex();
const held = std.debug.getStderrMutex().acquire();
defer held.release();
const stderr = std.io.getStdErr();
@@ -2373,7 +2372,7 @@ pub fn cImport(comp: *Compilation, c_src: []const u8) !CImportResult {
// We need to "unhit" in this case, to keep the digests matching.
const prev_hash_state = man.hash.peekBin();
const actual_hit = hit: {
- const is_hit = try man.hit();
+ _ = try man.hit();
if (man.files.items.len == 0) {
man.unhit(prev_hash_state, 0);
break :hit false;
src/DepTokenizer.zig
@@ -944,7 +944,7 @@ fn printLabel(out: anytype, label: []const u8, bytes: []const u8) !void {
try out.writeAll(text);
var i: usize = text.len;
const end = 79;
- while (i < 79) : (i += 1) {
+ while (i < end) : (i += 1) {
try out.writeAll(&[_]u8{label[0]});
}
try out.writeAll("\n");
@@ -953,7 +953,7 @@ fn printLabel(out: anytype, label: []const u8, bytes: []const u8) !void {
fn printRuler(out: anytype) !void {
var i: usize = 0;
const end = 79;
- while (i < 79) : (i += 1) {
+ while (i < end) : (i += 1) {
try out.writeAll("-");
}
try out.writeAll("\n");
@@ -1057,4 +1057,3 @@ const printable_char_tab: [256]u8 = (
"................................................................" ++
"................................................................"
).*;
-
src/glibc.zig
@@ -497,7 +497,6 @@ fn add_include_dirs(comp: *Compilation, arena: *Allocator, args: *std.ArrayList(
const target = comp.getTarget();
const arch = target.cpu.arch;
const opt_nptl: ?[]const u8 = if (target.os.tag == .linux) "nptl" else "htl";
- const glibc = try lib_path(comp, arena, lib_libc ++ "glibc");
const s = path.sep_str;
src/main.zig
@@ -3749,7 +3749,6 @@ pub fn cmdAstCheck(
var color: Color = .auto;
var want_output_text = false;
- var have_zig_source_file = false;
var zig_source_file: ?[]const u8 = null;
var i: usize = 0;
src/mingw.zig
@@ -372,11 +372,9 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void {
try child.spawn();
- const stdout_reader = child.stdout.?.reader();
const stderr_reader = child.stderr.?.reader();
// TODO https://github.com/ziglang/zig/issues/6343
- const stdout = try stdout_reader.readAllAlloc(arena, std.math.maxInt(u32));
const stderr = try stderr_reader.readAllAlloc(arena, 10 * 1024 * 1024);
const term = child.wait() catch |err| {
src/Module.zig
@@ -1561,7 +1561,6 @@ pub const SrcLoc = struct {
.node_offset_array_access_index => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
const node_datas = tree.nodes.items(.data);
- const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
const main_tokens = tree.nodes.items(.main_token);
const tok_index = main_tokens[node_datas[node].rhs];
@@ -1570,7 +1569,6 @@ pub const SrcLoc = struct {
},
.node_offset_slice_sentinel => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
- const node_datas = tree.nodes.items(.data);
const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
const full = switch (node_tags[node]) {
@@ -1586,7 +1584,6 @@ pub const SrcLoc = struct {
},
.node_offset_call_func => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
- const node_datas = tree.nodes.items(.data);
const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
var params: [1]ast.Node.Index = undefined;
@@ -1625,7 +1622,6 @@ pub const SrcLoc = struct {
.node_offset_deref_ptr => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
const node_datas = tree.nodes.items(.data);
- const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
const tok_index = node_datas[node].lhs;
const token_starts = tree.tokens.items(.start);
@@ -1633,7 +1629,6 @@ pub const SrcLoc = struct {
},
.node_offset_asm_source => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
- const node_datas = tree.nodes.items(.data);
const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
const full = switch (node_tags[node]) {
@@ -1648,7 +1643,6 @@ pub const SrcLoc = struct {
},
.node_offset_asm_ret_ty => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
- const node_datas = tree.nodes.items(.data);
const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
const full = switch (node_tags[node]) {
@@ -1771,7 +1765,6 @@ pub const SrcLoc = struct {
.node_offset_fn_type_cc => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
- const node_datas = tree.nodes.items(.data);
const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
var params: [1]ast.Node.Index = undefined;
@@ -1790,7 +1783,6 @@ pub const SrcLoc = struct {
.node_offset_fn_type_ret_ty => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
- const node_datas = tree.nodes.items(.data);
const node_tags = tree.nodes.items(.tag);
const node = src_loc.declRelativeToNodeIndex(node_off);
var params: [1]ast.Node.Index = undefined;
@@ -1810,7 +1802,6 @@ pub const SrcLoc = struct {
.node_offset_anyframe_type => |node_off| {
const tree = try src_loc.file_scope.getTree(gpa);
const node_datas = tree.nodes.items(.data);
- const node_tags = tree.nodes.items(.tag);
const parent_node = src_loc.declRelativeToNodeIndex(node_off);
const node = node_datas[parent_node].rhs;
const main_tokens = tree.nodes.items(.main_token);
@@ -2502,7 +2493,6 @@ pub fn astGenFile(mod: *Module, file: *Scope.File, prog_node: *std.Progress.Node
@ptrCast([*]const u8, file.zir.instructions.items(.data).ptr);
if (data_has_safety_tag) {
// The `Data` union has a safety tag but in the file format we store it without.
- const tags = file.zir.instructions.items(.tag);
for (file.zir.instructions.items(.data)) |*data, i| {
const as_struct = @ptrCast(*const Stage1DataLayout, data);
safety_buffer[i] = as_struct.data;
@@ -3386,7 +3376,6 @@ fn scanDecl(iter: *ScanDeclIter, decl_sub_index: usize, flags: u4) InnerError!vo
log.debug("scan existing {*} ({s}) of {*}", .{ decl, decl.name, namespace });
// Update the AST node of the decl; even if its contents are unchanged, it may
// have been re-ordered.
- const prev_src_node = decl.src_node;
decl.src_node = decl_node;
decl.src_line = line;
@@ -4692,11 +4681,9 @@ pub fn analyzeUnionFields(mod: *Module, union_obj: *Union) InnerError!void {
const src: LazySrcLoc = .{ .node_offset = union_obj.node_offset };
extra_index += @boolToInt(small.has_src_node);
- const tag_type_ref = if (small.has_tag_type) blk: {
- const tag_type_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+ if (small.has_tag_type) {
extra_index += 1;
- break :blk tag_type_ref;
- } else .none;
+ }
const body_len = if (small.has_body_len) blk: {
const body_len = zir.extra[extra_index];
@@ -4784,6 +4771,7 @@ pub fn analyzeUnionFields(mod: *Module, union_obj: *Union) InnerError!void {
cur_bit_bag >>= 1;
const unused = @truncate(u1, cur_bit_bag) != 0;
cur_bit_bag >>= 1;
+ _ = unused;
const field_name_zir = zir.nullTerminatedString(zir.extra[extra_index]);
extra_index += 1;
@@ -4800,11 +4788,9 @@ pub fn analyzeUnionFields(mod: *Module, union_obj: *Union) InnerError!void {
break :blk align_ref;
} else .none;
- const tag_ref: Zir.Inst.Ref = if (has_tag) blk: {
- const tag_ref = @intToEnum(Zir.Inst.Ref, zir.extra[extra_index]);
+ if (has_tag) {
extra_index += 1;
- break :blk tag_ref;
- } else .none;
+ }
// This string needs to outlive the ZIR code.
const field_name = try decl_arena.allocator.dupe(u8, field_name_zir);
src/musl.zig
@@ -143,7 +143,6 @@ pub fn buildCRTFile(comp: *Compilation, crt_file: CRTFile) !void {
const dirname = path.dirname(src_file).?;
const basename = path.basename(src_file);
const noextbasename = basename[0 .. basename.len - std.fs.path.extension(basename).len];
- const before_arch_dir = path.dirname(dirname).?;
const dirbasename = path.basename(dirname);
var is_arch_specific = false;
src/register_manager.zig
@@ -281,12 +281,6 @@ test "default state" {
};
defer function.deinit();
- var mock_instruction = ir.Inst{
- .tag = .breakpoint,
- .ty = Type.initTag(.void),
- .src = .unneeded,
- };
-
try expect(!function.register_manager.isRegAllocated(.r2));
try expect(!function.register_manager.isRegAllocated(.r3));
try expect(function.register_manager.isRegFree(.r2));
@@ -365,12 +359,6 @@ test "tryAllocRegs" {
};
defer function.deinit();
- var mock_instruction = ir.Inst{
- .tag = .breakpoint,
- .ty = Type.initTag(.void),
- .src = .unneeded,
- };
-
try expectEqual([_]MockRegister2{ .r0, .r1, .r2 }, function.register_manager.tryAllocRegs(3, .{ null, null, null }, &.{}).?);
// Exceptions
src/Sema.zig
@@ -1073,6 +1073,11 @@ fn zirOpaqueDecl(
const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
const src = inst_data.src();
const extra = sema.code.extraData(Zir.Inst.Block, inst_data.payload_index);
+ if (false) {
+ inst_data;
+ src;
+ extra;
+ }
return sema.mod.fail(&block.base, sema.src, "TODO implement zirOpaqueDecl", .{});
}
@@ -1230,7 +1235,6 @@ fn zirIndexablePtrLen(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) In
fn zirArg(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst {
const inst_data = sema.code.instructions.items(.data)[inst].str_tok;
- const src = inst_data.src();
const arg_name = inst_data.get(sema.code);
const arg_index = sema.next_arg_index;
sema.next_arg_index += 1;
@@ -3005,7 +3009,6 @@ fn zirFunc(
defer tracy.end();
const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
- const src = inst_data.src();
const extra = sema.code.extraData(Zir.Inst.Func, inst_data.payload_index);
const param_types = sema.code.refSlice(extra.end, extra.data.param_types_len);
@@ -3332,9 +3335,7 @@ fn zirBitcast(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError
defer tracy.end();
const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
- const src = inst_data.src();
const dest_ty_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
- const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node };
const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
const dest_type = try sema.resolveType(block, dest_ty_src, extra.lhs);
@@ -3653,7 +3654,6 @@ fn analyzeSwitch(
extra_index += 1;
const body_len = sema.code.extra[extra_index];
extra_index += 1;
- const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body_len;
try sema.validateSwitchItemEnum(
@@ -3763,7 +3763,6 @@ fn analyzeSwitch(
extra_index += 1;
const body_len = sema.code.extra[extra_index];
extra_index += 1;
- const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body_len;
try sema.validateSwitchItem(
@@ -3859,7 +3858,6 @@ fn analyzeSwitch(
extra_index += 1;
const body_len = sema.code.extra[extra_index];
extra_index += 1;
- const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body_len;
try sema.validateSwitchItemBool(
@@ -3942,7 +3940,6 @@ fn analyzeSwitch(
extra_index += 1;
const body_len = sema.code.extra[extra_index];
extra_index += 1;
- const body = sema.code.extra[extra_index..][0..body_len];
extra_index += body_len;
try sema.validateSwitchItemSparse(
@@ -4457,6 +4454,7 @@ fn validateSwitchNoRange(
fn zirHasField(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst {
const inst_data = sema.code.instructions.items(.data)[inst].pl_node;
const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data;
+ _ = extra;
const src = inst_data.src();
return sema.mod.fail(&block.base, src, "TODO implement zirHasField", .{});
@@ -6035,7 +6033,6 @@ fn zirVarExtended(
) InnerError!*Inst {
const extra = sema.code.extraData(Zir.Inst.ExtendedVar, extended.operand);
const src = sema.src;
- const align_src: LazySrcLoc = src; // TODO add a LazySrcLoc that points at align
const ty_src: LazySrcLoc = src; // TODO add a LazySrcLoc that points at type
const mut_src: LazySrcLoc = src; // TODO add a LazySrcLoc that points at mut token
const init_src: LazySrcLoc = src; // TODO add a LazySrcLoc that points at init expr
@@ -7131,6 +7128,7 @@ fn analyzeSlice(
ptr_child.isVolatilePtr(),
return_ptr_size,
);
+ _ = return_type;
return sema.mod.fail(&block.base, src, "TODO implement analysis of slice", .{});
}
src/ThreadPool.zig
@@ -101,7 +101,7 @@ pub fn deinit(self: *ThreadPool) void {
pub fn spawn(self: *ThreadPool, comptime func: anytype, args: anytype) !void {
if (std.builtin.single_threaded) {
- const result = @call(.{}, func, args);
+ @call(.{}, func, args);
return;
}
@@ -114,7 +114,7 @@ pub fn spawn(self: *ThreadPool, comptime func: anytype, args: anytype) !void {
fn runFn(runnable: *Runnable) void {
const run_node = @fieldParentPtr(RunQueue.Node, "data", runnable);
const closure = @fieldParentPtr(@This(), "run_node", run_node);
- const result = @call(.{}, func, closure.arguments);
+ @call(.{}, func, closure.arguments);
const held = closure.pool.lock.acquire();
defer held.release();
src/translate_c.zig
@@ -1321,7 +1321,6 @@ fn transConvertVectorExpr(
const src_type = qualTypeCanon(src_expr.getType());
const src_vector_ty = @ptrCast(*const clang.VectorType, src_type);
const src_element_qt = src_vector_ty.getElementType();
- const src_element_type_node = try transQualType(c, &block_scope.base, src_element_qt, base_stmt.getBeginLoc());
const src_expr_node = try transExpr(c, &block_scope.base, src_expr, .used);
@@ -3802,7 +3801,6 @@ fn transBinaryConditionalOperator(c: *Context, scope: *Scope, stmt: *const clang
const res_is_bool = qualTypeIsBoolean(qt);
const casted_stmt = @ptrCast(*const clang.AbstractConditionalOperator, stmt);
const cond_expr = casted_stmt.getCond();
- const true_expr = casted_stmt.getTrueExpr();
const false_expr = casted_stmt.getFalseExpr();
// c: (cond_expr)?:(false_expr)
@@ -4336,8 +4334,6 @@ fn transCreateNodeNumber(c: *Context, num: anytype, num_kind: enum { int, float
}
fn transCreateNodeMacroFn(c: *Context, name: []const u8, ref: Node, proto_alias: *ast.Payload.Func) !Node {
- const scope = &c.global_scope.base;
-
var fn_params = std.ArrayList(ast.Payload.Param).init(c.gpa);
defer fn_params.deinit();
src/type.zig
@@ -3013,7 +3013,7 @@ pub const Type = extern union {
.base = .{ .tag = t },
.data = data,
};
- return Type{ .ptr_otherwise = &ptr.base };
+ return file_struct.Type{ .ptr_otherwise = &ptr.base };
}
pub fn Data(comptime t: Tag) type {
@@ -3163,7 +3163,6 @@ pub const CType = enum {
longdouble,
pub fn sizeInBits(self: CType, target: Target) u16 {
- const arch = target.cpu.arch;
switch (target.os.tag) {
.freestanding, .other => switch (target.cpu.arch) {
.msp430 => switch (self) {
src/Zir.zig
@@ -3176,6 +3176,7 @@ const Writer = struct {
inst: Inst.Index,
) (@TypeOf(stream).Error || error{OutOfMemory})!void {
const inst_data = self.code.instructions.items(.data)[inst].array_type_sentinel;
+ _ = inst_data;
try stream.writeAll("TODO)");
}
@@ -3213,6 +3214,7 @@ const Writer = struct {
inst: Inst.Index,
) (@TypeOf(stream).Error || error{OutOfMemory})!void {
const inst_data = self.code.instructions.items(.data)[inst].ptr_type;
+ _ = inst_data;
try stream.writeAll("TODO)");
}
@@ -4739,7 +4741,6 @@ fn findDeclsSwitch(
var extra_index: usize = special.end;
var scalar_i: usize = 0;
while (scalar_i < extra.data.cases_len) : (scalar_i += 1) {
- const item_ref = @intToEnum(Inst.Ref, zir.extra[extra_index]);
extra_index += 1;
const body_len = zir.extra[extra_index];
extra_index += 1;
@@ -4779,7 +4780,6 @@ fn findDeclsSwitchMulti(
{
var scalar_i: usize = 0;
while (scalar_i < extra.data.scalar_cases_len) : (scalar_i += 1) {
- const item_ref = @intToEnum(Inst.Ref, zir.extra[extra_index]);
extra_index += 1;
const body_len = zir.extra[extra_index];
extra_index += 1;
@@ -4800,12 +4800,11 @@ fn findDeclsSwitchMulti(
extra_index += 1;
const items = zir.refSlice(extra_index, items_len);
extra_index += items_len;
+ _ = items;
var range_i: usize = 0;
while (range_i < ranges_len) : (range_i += 1) {
- const item_first = @intToEnum(Inst.Ref, zir.extra[extra_index]);
extra_index += 1;
- const item_last = @intToEnum(Inst.Ref, zir.extra[extra_index]);
extra_index += 1;
}
test/behavior/bugs/1467.zig
@@ -4,4 +4,5 @@ pub const S = extern struct {
};
test "bug 1467" {
const s: S = undefined;
+ _ = s;
}
test/behavior/bugs/1500.zig
@@ -7,4 +7,8 @@ const B = fn (A) void;
test "allow these dependencies" {
var a: A = undefined;
var b: B = undefined;
+ if (false) {
+ a;
+ b;
+ }
}
test/behavior/bugs/2346.zig
@@ -1,6 +1,8 @@
test "fixed" {
const a: *void = undefined;
const b: *[1]void = a;
+ _ = b;
const c: *[0]u8 = undefined;
const d: []u8 = c;
+ _ = d;
}
test/behavior/bugs/3586.zig
@@ -8,4 +8,5 @@ test "fixed" {
var ctr = Container{
.params = NoteParams{},
};
+ _ = ctr;
}
test/behavior/bugs/4954.zig
@@ -1,5 +1,5 @@
fn f(buf: []u8) void {
- var ptr = &buf[@sizeOf(u32)];
+ _ = &buf[@sizeOf(u32)];
}
test "crash" {
test/behavior/bugs/7003.zig
@@ -5,4 +5,5 @@ test "@Type should resolve its children types" {
comptime var sparse_info = @typeInfo(anyerror!sparse);
sparse_info.ErrorUnion.payload = dense;
const B = @Type(sparse_info);
+ _ = B;
}
test/behavior/bugs/828.zig
@@ -30,4 +30,8 @@ test "comptime struct return should not return the same instance" {
//a second parameter is required to trigger the bug
const ValA = constCount(&CountBy.One, 12);
const ValB = constCount(&CountBy.One, 15);
+ if (false) {
+ ValA;
+ ValB;
+ }
}
test/behavior/async_fn.zig
@@ -13,6 +13,7 @@ test "simple coroutine suspend and resume" {
resume frame;
try expect(global_x == 3);
const af: anyframe->void = &frame;
+ _ = af;
resume frame;
try expect(global_x == 4);
}
@@ -45,6 +46,7 @@ test "suspend at end of function" {
fn doTheTest() !void {
try expect(x == 1);
const p = async suspendAtEnd();
+ _ = p;
try expect(x == 2);
}
@@ -132,6 +134,7 @@ test "@frameSize" {
}
fn other(param: i32) void {
var local: i32 = undefined;
+ _ = local;
suspend {}
}
};
@@ -181,6 +184,7 @@ test "coroutine suspend, resume" {
test "coroutine suspend with block" {
const p = async testSuspendBlock();
+ _ = p;
try expect(!global_result);
resume a_promise;
try expect(global_result);
@@ -207,6 +211,7 @@ var await_final_result: i32 = 0;
test "coroutine await" {
await_seq('a');
var p = async await_amain();
+ _ = p;
await_seq('f');
resume await_a_promise;
await_seq('i');
@@ -243,6 +248,7 @@ var early_final_result: i32 = 0;
test "coroutine await early return" {
early_seq('a');
var p = async early_amain();
+ _ = p;
early_seq('f');
try expect(early_final_result == 1234);
try expect(std.mem.eql(u8, &early_points, "abcdef"));
@@ -276,6 +282,7 @@ test "async function with dot syntax" {
}
};
const p = async S.foo();
+ _ = p;
try expect(S.y == 2);
}
@@ -362,11 +369,13 @@ test "error return trace across suspend points - early return" {
const p = nonFailing();
resume p;
const p2 = async printTrace(p);
+ _ = p2;
}
test "error return trace across suspend points - async return" {
const p = nonFailing();
const p2 = async printTrace(p);
+ _ = p2;
resume p;
}
@@ -396,6 +405,7 @@ fn printTrace(p: anyframe->(anyerror!void)) callconv(.Async) void {
test "break from suspend" {
var my_result: i32 = 1;
const p = async testBreakFromSuspend(&my_result);
+ _ = p;
try std.testing.expect(my_result == 2);
}
fn testBreakFromSuspend(my_result: *i32) callconv(.Async) void {
@@ -619,6 +629,7 @@ test "returning a const error from async function" {
fn amain() !void {
var download_frame = async fetchUrl(10, "a string");
const download_text = try await download_frame;
+ _ = download_text;
@panic("should not get here");
}
@@ -730,6 +741,7 @@ test "alignment of local variables in async functions" {
const S = struct {
fn doTheTest() !void {
var y: u8 = 123;
+ _ = y;
var x: u8 align(128) = 1;
try expect(@ptrToInt(&x) % 128 == 0);
}
@@ -742,6 +754,7 @@ test "no reason to resolve frame still works" {
}
fn simpleNothing() void {
var x: i32 = 1234;
+ _ = x;
}
test "async call a generic function" {
@@ -802,6 +815,7 @@ test "struct parameter to async function is copied to the frame" {
if (x == 0) return;
clobberStack(x - 1);
var y: i32 = x;
+ _ = y;
}
fn bar(f: *@Frame(foo)) void {
@@ -1654,6 +1668,7 @@ test "@asyncCall with pass-by-value arguments" {
[_]u8{ 1, 2, 3, 4, 5 },
F2,
});
+ _ = frame_ptr;
}
test "@asyncCall with arguments having non-standard alignment" {
@@ -1673,4 +1688,5 @@ test "@asyncCall with arguments having non-standard alignment" {
// The function pointer must not be comptime-known.
var t = S.f;
var frame_ptr = @asyncCall(&buffer, {}, t, .{ F0, undefined, F1 });
+ _ = frame_ptr;
}
test/behavior/atomics.zig
@@ -97,7 +97,6 @@ test "cmpxchg with ptr" {
test "cmpxchg with ignored result" {
var x: i32 = 1234;
- var ptr = &x;
_ = @cmpxchgStrong(i32, &x, 1234, 5678, .Monotonic, .Monotonic);
@@ -195,7 +194,6 @@ fn testAtomicRmwInt() !void {
test "atomics with different types" {
try testAtomicsWithType(bool, true, false);
inline for (.{ u1, i4, u5, i15, u24 }) |T| {
- var x: T = 0;
try testAtomicsWithType(T, 0, 1);
}
try testAtomicsWithType(u0, 0, 0);
test/behavior/await_struct.zig
@@ -12,6 +12,7 @@ var await_final_result = Foo{ .x = 0 };
test "coroutine await struct" {
await_seq('a');
var p = async await_amain();
+ _ = p;
await_seq('f');
resume await_a_promise;
await_seq('i');
test/behavior/bit_shifting.zig
@@ -100,5 +100,5 @@ test "comptime shr of BigInt" {
}
test "comptime shift safety check" {
- const x = @as(usize, 42) << @sizeOf(usize);
+ _ = @as(usize, 42) << @sizeOf(usize);
}
test/behavior/cast.zig
@@ -102,6 +102,7 @@ fn castToOptionalTypeError(z: i32) !void {
const f = z;
const g: anyerror!?i32 = f;
+ _ = g catch {};
const a = A{ .a = z };
const b: anyerror!?A = a;
@@ -114,7 +115,9 @@ test "implicitly cast from int to anyerror!?T" {
}
fn implicitIntLitToOptional() void {
const f: ?i32 = 1;
+ _ = f;
const g: anyerror!?i32 = 1;
+ _ = g catch {};
}
test "return null from fn() anyerror!?&T" {
test/behavior/enum.zig
@@ -111,6 +111,8 @@ test "enum type" {
.y = 5678,
},
};
+ try expect(foo1.One == 13);
+ try expect(foo2.Two.x == 1234 and foo2.Two.y == 5678);
const bar = Bar.B;
try expect(bar == Bar.B);
test/behavior/error.zig
@@ -103,6 +103,7 @@ fn testErrorSetType() !void {
const a: MyErrSet!i32 = 5678;
const b: MyErrSet!i32 = MyErrSet.OutOfMemory;
+ try expect(b catch error.OutOfMemory == error.OutOfMemory);
if (a) |value| try expect(value == 5678) else |err| switch (err) {
error.OutOfMemory => unreachable,
@@ -162,6 +163,7 @@ fn testErrToIntWithOnePossibleValue(
test "empty error union" {
const x = error{} || error{};
+ _ = x;
}
test "error union peer type resolution" {
@@ -204,6 +206,7 @@ fn entry() void {
fn foo2(f: fn () anyerror!void) void {
const x = f();
+ x catch {};
}
fn bar2() (error{}!void) {}
@@ -338,6 +341,7 @@ test "optional error set is the same size as error set" {
test "debug info for optional error set" {
const SomeError = error{Hello};
var a_local_variable: ?SomeError = null;
+ _ = a_local_variable;
}
test "nested catch" {
@@ -349,7 +353,7 @@ test "nested catch" {
return error.Wrong;
}
fn func() anyerror!Foo {
- const x = fail() catch
+ _ = fail() catch
fail() catch
return error.Bad;
unreachable;
test/behavior/eval.zig
@@ -184,6 +184,7 @@ fn testTryToTrickEvalWithRuntimeIf(b: bool) usize {
comptime var i: usize = 0;
inline while (i < 10) : (i += 1) {
const result = if (b) false else true;
+ _ = result;
}
comptime {
return i;
@@ -195,6 +196,7 @@ test "inlined loop has array literal with elided runtime scope on first iteratio
comptime var i: usize = 0;
inline while (i < 2) : (i += 1) {
const result = if (i == 0) [1]i32{2} else runtime;
+ _ = result;
}
comptime {
try expect(i == 2);
test/behavior/import.zig
@@ -18,5 +18,5 @@ test "import in non-toplevel scope" {
}
test "import empty file" {
- const empty = @import("import/empty.zig");
+ _ = @import("import/empty.zig");
}
test/behavior/inttoptr.zig
@@ -5,7 +5,7 @@ test "casting random address to function pointer" {
fn randomAddressToFunction() void {
var addr: usize = 0xdeadbeef;
- var ptr = @intToPtr(fn () void, addr);
+ _ = @intToPtr(fn () void, addr);
}
test "mutate through ptr initialized with constant intToPtr value" {
test/behavior/ir_block_deps.zig
@@ -5,6 +5,7 @@ fn foo(id: u64) !i32 {
1 => getErrInt(),
2 => {
const size = try getErrInt();
+ _ = size;
return try getErrInt();
},
else => error.ItBroke,
test/behavior/math.zig
@@ -333,6 +333,12 @@ test "quad hex float literal parsing in range" {
const b = 0x1.dedafcff354b6ae9758763545432p-9;
const c = 0x1.2f34dd5f437e849b4baab754cdefp+4534;
const d = 0x1.edcbff8ad76ab5bf46463233214fp-435;
+ if (false) {
+ a;
+ b;
+ c;
+ d;
+ }
}
test "quad hex float literal parsing accurate" {
@@ -457,6 +463,11 @@ test "hex float literal within range" {
const a = 0x1.0p16383;
const b = 0x0.1p16387;
const c = 0x1.0p-16382;
+ if (false) {
+ a;
+ b;
+ c;
+ }
}
test "truncating shift left" {
test/behavior/misc.zig
@@ -234,6 +234,7 @@ test "compile time global reinterpret" {
test "explicit cast maybe pointers" {
const a: ?*i32 = undefined;
const b: ?*f32 = @ptrCast(?*f32, a);
+ _ = b;
}
test "generic malloc free" {
test/behavior/null.zig
@@ -39,6 +39,7 @@ test "test maybe object and get a pointer to the inner value" {
test "rhs maybe unwrap return" {
const x: ?bool = true;
const y = x orelse return;
+ _ = y;
}
test "maybe return" {
test/behavior/optional.zig
@@ -128,6 +128,7 @@ test "nested orelse" {
const x = maybe() orelse
maybe() orelse
return null;
+ _ = x;
unreachable;
}
const Foo = struct {
test/behavior/pointers.zig
@@ -65,6 +65,10 @@ test "assigning integer to C pointer" {
var x: i32 = 0;
var ptr: [*c]u8 = 0;
var ptr2: [*c]u8 = x;
+ if (false) {
+ ptr;
+ ptr2;
+ }
}
test "implicit cast single item pointer to C pointer and back" {
@@ -78,7 +82,6 @@ test "implicit cast single item pointer to C pointer and back" {
test "C pointer comparison and arithmetic" {
const S = struct {
fn doTheTest() !void {
- var one: usize = 1;
var ptr1: [*c]u32 = 0;
var ptr2 = ptr1 + 10;
try expect(ptr1 == 0);
@@ -325,6 +328,7 @@ test "@ptrToInt on null optional at comptime" {
{
const pointer = @intToPtr(?*u8, 0x000);
const x = @ptrToInt(pointer);
+ _ = x;
comptime try expect(0 == @ptrToInt(pointer));
}
{
test/behavior/sizeof_and_typeof.zig
@@ -195,11 +195,11 @@ test "branching logic inside @TypeOf" {
fn fn1(alpha: bool) void {
const n: usize = 7;
- const v = if (alpha) n else @sizeOf(usize);
+ _ = if (alpha) n else @sizeOf(usize);
}
test "lazy @sizeOf result is checked for definedness" {
- const f = fn1;
+ _ = fn1;
}
test "@bitSizeOf" {
test/behavior/slice.zig
@@ -104,6 +104,7 @@ test "obtaining a null terminated slice" {
// now we obtain a null terminated slice:
const ptr = buf[0..3 :0];
+ _ = ptr;
var runtime_len: usize = 3;
const ptr2 = buf[0..runtime_len :0];
test/behavior/slice_sentinel_comptime.zig
@@ -3,6 +3,7 @@ test "comptime slice-sentinel in bounds (unterminated)" {
comptime {
var target = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// ptr_array
@@ -10,6 +11,7 @@ test "comptime slice-sentinel in bounds (unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// vector_ConstPtrSpecialBaseArray
@@ -17,6 +19,7 @@ test "comptime slice-sentinel in bounds (unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*]u8 = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// vector_ConstPtrSpecialRef
@@ -24,6 +27,7 @@ test "comptime slice-sentinel in bounds (unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*]u8 = @ptrCast([*]u8, &buf);
const slice = target[0..3 :'d'];
+ _ = slice;
}
// cvector_ConstPtrSpecialBaseArray
@@ -31,6 +35,7 @@ test "comptime slice-sentinel in bounds (unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*c]u8 = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// cvector_ConstPtrSpecialRef
@@ -38,6 +43,7 @@ test "comptime slice-sentinel in bounds (unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*c]u8 = @ptrCast([*c]u8, &buf);
const slice = target[0..3 :'d'];
+ _ = slice;
}
// slice
@@ -45,6 +51,7 @@ test "comptime slice-sentinel in bounds (unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: []u8 = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
}
@@ -53,6 +60,7 @@ test "comptime slice-sentinel in bounds (end,unterminated)" {
comptime {
var target = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10;
const slice = target[0..13 :0xff];
+ _ = slice;
}
// ptr_array
@@ -60,6 +68,7 @@ test "comptime slice-sentinel in bounds (end,unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10;
var target = &buf;
const slice = target[0..13 :0xff];
+ _ = slice;
}
// vector_ConstPtrSpecialBaseArray
@@ -67,6 +76,7 @@ test "comptime slice-sentinel in bounds (end,unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10;
var target: [*]u8 = &buf;
const slice = target[0..13 :0xff];
+ _ = slice;
}
// vector_ConstPtrSpecialRef
@@ -74,6 +84,7 @@ test "comptime slice-sentinel in bounds (end,unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10;
var target: [*]u8 = @ptrCast([*]u8, &buf);
const slice = target[0..13 :0xff];
+ _ = slice;
}
// cvector_ConstPtrSpecialBaseArray
@@ -81,6 +92,7 @@ test "comptime slice-sentinel in bounds (end,unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10;
var target: [*c]u8 = &buf;
const slice = target[0..13 :0xff];
+ _ = slice;
}
// cvector_ConstPtrSpecialRef
@@ -88,6 +100,7 @@ test "comptime slice-sentinel in bounds (end,unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10;
var target: [*c]u8 = @ptrCast([*c]u8, &buf);
const slice = target[0..13 :0xff];
+ _ = slice;
}
// slice
@@ -95,6 +108,7 @@ test "comptime slice-sentinel in bounds (end,unterminated)" {
var buf = [_]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{0xff} ** 10;
var target: []u8 = &buf;
const slice = target[0..13 :0xff];
+ _ = slice;
}
}
@@ -103,6 +117,7 @@ test "comptime slice-sentinel in bounds (terminated)" {
comptime {
var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// ptr_array
@@ -110,6 +125,7 @@ test "comptime slice-sentinel in bounds (terminated)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// vector_ConstPtrSpecialBaseArray
@@ -117,6 +133,7 @@ test "comptime slice-sentinel in bounds (terminated)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*]u8 = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// vector_ConstPtrSpecialRef
@@ -124,6 +141,7 @@ test "comptime slice-sentinel in bounds (terminated)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*]u8 = @ptrCast([*]u8, &buf);
const slice = target[0..3 :'d'];
+ _ = slice;
}
// cvector_ConstPtrSpecialBaseArray
@@ -131,6 +149,7 @@ test "comptime slice-sentinel in bounds (terminated)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*c]u8 = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
// cvector_ConstPtrSpecialRef
@@ -138,6 +157,7 @@ test "comptime slice-sentinel in bounds (terminated)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*c]u8 = @ptrCast([*c]u8, &buf);
const slice = target[0..3 :'d'];
+ _ = slice;
}
// slice
@@ -145,6 +165,7 @@ test "comptime slice-sentinel in bounds (terminated)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: []u8 = &buf;
const slice = target[0..3 :'d'];
+ _ = slice;
}
}
@@ -153,6 +174,7 @@ test "comptime slice-sentinel in bounds (on target sentinel)" {
comptime {
var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
const slice = target[0..14 :0];
+ _ = slice;
}
// ptr_array
@@ -160,6 +182,7 @@ test "comptime slice-sentinel in bounds (on target sentinel)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target = &buf;
const slice = target[0..14 :0];
+ _ = slice;
}
// vector_ConstPtrSpecialBaseArray
@@ -167,6 +190,7 @@ test "comptime slice-sentinel in bounds (on target sentinel)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*]u8 = &buf;
const slice = target[0..14 :0];
+ _ = slice;
}
// vector_ConstPtrSpecialRef
@@ -174,6 +198,7 @@ test "comptime slice-sentinel in bounds (on target sentinel)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*]u8 = @ptrCast([*]u8, &buf);
const slice = target[0..14 :0];
+ _ = slice;
}
// cvector_ConstPtrSpecialBaseArray
@@ -181,6 +206,7 @@ test "comptime slice-sentinel in bounds (on target sentinel)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*c]u8 = &buf;
const slice = target[0..14 :0];
+ _ = slice;
}
// cvector_ConstPtrSpecialRef
@@ -188,6 +214,7 @@ test "comptime slice-sentinel in bounds (on target sentinel)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: [*c]u8 = @ptrCast([*c]u8, &buf);
const slice = target[0..14 :0];
+ _ = slice;
}
// slice
@@ -195,5 +222,6 @@ test "comptime slice-sentinel in bounds (on target sentinel)" {
var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
var target: []u8 = &buf;
const slice = target[0..14 :0];
+ _ = slice;
}
}
test/behavior/struct.zig
@@ -584,13 +584,14 @@ test "default struct initialization fields" {
const x = S{
.b = 5,
};
- if (x.a + x.b != 1239) {
- @compileError("it should be comptime known");
- }
var five: i32 = 5;
const y = S{
.b = five,
};
+ if (x.a + x.b != 1239) {
+ @compileError("it should be comptime known");
+ }
+ try expectEqual(y, x);
try expectEqual(1239, x.a + x.b);
}
@@ -654,6 +655,7 @@ test "zero-bit field in packed struct" {
y: void,
};
var x: S = undefined;
+ _ = x;
}
test "struct field init with catch" {
test/behavior/switch.zig
@@ -103,6 +103,7 @@ fn switchProngWithVarFn(a: SwitchProngWithVarEnum) !void {
},
SwitchProngWithVarEnum.Meh => |x| {
const v: void = x;
+ _ = v;
},
}
}
@@ -454,6 +455,7 @@ test "switch variable for range and multiple prongs" {
}
}
};
+ _ = S;
}
var state: u32 = 0;
test/behavior/tuple.zig
@@ -105,6 +105,7 @@ test "tuple initializer for var" {
.id = @as(usize, 2),
.name = Bytes{ .id = 20 },
};
+ _ = tmp;
}
};
test/behavior/type.zig
@@ -436,6 +436,7 @@ test "Type.Fn" {
}.func;
const Foo = @Type(@typeInfo(@TypeOf(foo)));
const foo_2: Foo = foo;
+ _ = foo_2;
}
test "Type.BoundFn" {
test/behavior/type_info.zig
@@ -329,6 +329,7 @@ test "typeInfo with comptime parameter in struct fn def" {
pub fn func(comptime x: f32) void {}
};
comptime var info = @typeInfo(S);
+ _ = info;
}
test "type info: vectors" {
test/behavior/union.zig
@@ -781,6 +781,7 @@ test "@unionInit on union w/ tag but no fields" {
fn doTheTest() !void {
var data: Data = .{ .no_op = .{} };
+ _ = data;
var o = Data.decode(&[_]u8{});
try expectEqual(Type.no_op, o);
}
test/behavior/var_args.zig
@@ -18,7 +18,7 @@ test "add arbitrary args" {
}
fn readFirstVarArg(args: anytype) void {
- const value = args[0];
+ _ = args[0];
}
test "send void arg to var args" {
@@ -79,5 +79,5 @@ test "pass zero length array to var args param" {
}
fn doNothingWithFirstArg(args: anytype) void {
- const a = args[0];
+ _ = args[0];
}
test/behavior/vector.zig
@@ -113,6 +113,7 @@ test "array to vector" {
var foo: f32 = 3.14;
var arr = [4]f32{ foo, 1.5, 0.0, 0.0 };
var vec: Vector(4, f32) = arr;
+ _ = vec;
}
test "vector casts of sizes not divisable by 8" {
@@ -264,6 +265,7 @@ test "initialize vector which is a struct field" {
var foo = Vec4Obj{
.data = [_]f32{ 1, 2, 3, 4 },
};
+ _ = foo;
}
};
try S.doTheTest();
test/behavior/void.zig
@@ -36,5 +36,5 @@ test "void optional" {
test "void array as a local variable initializer" {
var x = [_]void{{}} ** 1004;
- var y = x[0];
+ _ = x[0];
}
test/stage2/test.zig
@@ -899,6 +899,7 @@ pub fn addCases(ctx: *TestContext) !void {
\\ try expect(false);
\\ }
\\ };
+ \\ _ = S;
\\}
,
&.{":4:13: error: invalid 'try' outside function scope"},
test/tests.zig
@@ -525,7 +525,6 @@ pub fn addPkgTests(
if (skip_single_threaded and test_target.single_threaded)
continue;
- const ArchTag = std.meta.Tag(std.Target.Cpu.Arch);
if (test_target.disable_native and
test_target.target.getOsTag() == std.Target.current.os.tag and
test_target.target.getCpuArch() == std.Target.current.cpu.arch)