Skip to content

Commit 4f38f5c

Browse files
authored
Remove some backwards compatibility code when targeting 0.16.x #137 (#139)
The plan is to stop supporting compatibility this way (at least while 0.x) as its adds complexity I want to avoid while maintaining support and zig isn't even 1.x yet. The downside is cherry picks between versions may be more work but unless its a bug fix I doubt there will be many.
1 parent e18642a commit 4f38f5c

21 files changed

+113
-394
lines changed

build.zig

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,6 @@ pub fn build(b: *std.Build) void {
207207
}).module("zls"),
208208
}},
209209
});
210-
if (version.zig == .@"0.15" and target.result.os.tag == .windows) {
211-
zlinter_lib_module.linkSystemLibrary("advapi32", .{});
212-
}
213210

214211
const zlinter_import = std.Build.Module.Import{
215212
.name = "zlinter",
@@ -538,9 +535,6 @@ fn buildStep(
538535
.optimize = options.optimize,
539536
.imports = &.{zlinter_import},
540537
});
541-
if (version.zig == .@"0.15" and options.target.result.os.tag == .windows) {
542-
exe_module.linkSystemLibrary("advapi32", .{});
543-
}
544538

545539
// --------------------------------------------------------------------
546540
// Generate dynamic rules and rules config
@@ -606,10 +600,7 @@ fn addWatchInput(
606600
try step.addWatchInput(file_or_dir);
607601
return;
608602
},
609-
else => switch (version.zig) {
610-
.@"0.14" => @panic(b.fmt("Unable to open directory '{}': {s}", .{ src_dir_path, @errorName(e) })),
611-
.@"0.15", .@"0.16" => @panic(b.fmt("Unable to open directory '{f}': {t}", .{ src_dir_path, e })),
612-
},
603+
else => @panic(b.fmt("Unable to open directory '{f}': {t}", .{ src_dir_path, e })),
613604
};
614605
defer src_dir.close(io);
615606

@@ -1039,20 +1030,12 @@ const ZlinterRun = struct {
10391030
std.debug.print("Writing stdin: '{s}'\n", .{build_info_zon_bytes});
10401031

10411032
var stdin_file = child.stdin.?;
1042-
switch (version.zig) {
1043-
.@"0.14" => {
1044-
var writer = stdin_file.writer();
1045-
writer.writeInt(usize, build_info_zon_bytes.len, .little) catch @panic("stdin write failed");
1046-
writer.writeAll(build_info_zon_bytes) catch @panic("stdin write failed");
1047-
},
1048-
.@"0.15", .@"0.16" => {
1049-
var buffer: [1024]u8 = undefined;
1050-
var writer = stdin_file.writer(io, &buffer);
1051-
writer.interface.writeInt(usize, build_info_zon_bytes.len, .little) catch @panic("stdin write failed");
1052-
writer.interface.writeAll(build_info_zon_bytes) catch @panic("stdin write failed");
1053-
writer.interface.flush() catch @panic("Flush failed");
1054-
},
1055-
}
1033+
1034+
var buffer: [1024]u8 = undefined;
1035+
var writer = stdin_file.writer(io, &buffer);
1036+
writer.interface.writeInt(usize, build_info_zon_bytes.len, .little) catch @panic("stdin write failed");
1037+
writer.interface.writeAll(build_info_zon_bytes) catch @panic("stdin write failed");
1038+
writer.interface.flush() catch @panic("Flush failed");
10561039
}
10571040

10581041
const term = try child.wait(io);

build.zig.zon

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
.zls = .{
88
// Update with `zig fetch --save git+https://github.com/zigtools/zls#master`
99
// IF changed THEN update .github/coverage.yml
10-
.url = "git+https://github.com/zigtools/zls?ref=master#246f9387629c82a2cfd51ee1f7895d7c9db39b47",
11-
.hash = "zls-0.16.0-dev-rmm5fmdBJQCoJBgNx4V7WbbtQsd33XHFSs2sqwX9IvCb",
10+
.url = "git+https://github.com/zigtools/zls?ref=master#d03b99209afcae2169912986b2f4c677fca279c9",
11+
.hash = "zls-0.16.0-dev-rmm5fu5GJQBnXt4idjOYx7p4104rd3Ji-daO8a-7Gx6e",
1212
},
1313
},
1414
.paths = .{

build_docs.zig

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ fn writeFileRuleConfig(content: []const u8, gpa: std.mem.Allocator, writer: anyt
103103
const name = tree.tokenSlice(var_decl.ast.mut_token + 1);
104104
if (!std.mem.eql(u8, name, "Config")) continue;
105105

106-
const struct_init = tree.fullContainerDecl(&struct_buffer, switch (zig_version) {
107-
.@"0.14" => var_decl.ast.init_node,
108-
.@"0.15", .@"0.16" => var_decl.ast.init_node.unwrap().?,
109-
}).?;
106+
const struct_init = tree.fullContainerDecl(
107+
&struct_buffer,
108+
var_decl.ast.init_node.unwrap().?,
109+
).?;
110110

111111
for (struct_init.ast.members) |field| {
112112
const container_field = tree.fullContainerField(field) orelse continue;
@@ -129,10 +129,10 @@ fn writeFileRuleConfig(content: []const u8, gpa: std.mem.Allocator, writer: anyt
129129
}
130130
}
131131

132-
const maybe_default: ?[]const u8 = switch (zig_version) {
133-
.@"0.14" => if (container_field.ast.value_expr != 0) tree.getNodeSource(container_field.ast.value_expr) else null,
134-
.@"0.15", .@"0.16" => if (container_field.ast.value_expr.unwrap()) |default_node| tree.getNodeSource(default_node) else null,
135-
};
132+
const maybe_default: ?[]const u8 = if (container_field.ast.value_expr.unwrap()) |default_node|
133+
tree.getNodeSource(default_node)
134+
else
135+
null;
136136

137137
if (maybe_default) |default| {
138138
try writer.writeAll("\n\n * **Default:** `");
@@ -165,5 +165,4 @@ fn writeWithoutDuplicateWhiteSpace(content: []const u8, writer: anytype) !void {
165165
}
166166

167167
const std = @import("std");
168-
const zig_version = @import("src/lib/version.zig").zig;
169168
const Ast = std.zig.Ast;

integration_tests/build.zig

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ pub fn build(b: *std.Build) !void {
2020
.target = target,
2121
.optimize = optimize,
2222
});
23-
if (zlinter.version.zig == .@"0.15" and target.result.os.tag == .windows) {
24-
test_runner_module.linkSystemLibrary("advapi32", .{});
25-
}
2623

2724
const test_runner_exe = b.addExecutable(.{
2825
.name = "integration_tests",

src/exe/run_linter.zig

Lines changed: 22 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,7 @@ fn runLinterRules(
311311
) catch |e| {
312312
switch (e) {
313313
error.ParseZon => {
314-
std.log.err("Failed to parse rule config: " ++ switch (zlinter.version.zig) {
315-
.@"0.14" => "{}",
316-
.@"0.15", .@"0.16" => "{f}",
317-
}, .{diagnostics});
314+
std.log.err("Failed to parse rule config: {f}", .{diagnostics});
318315
},
319316
else => {},
320317
}
@@ -541,25 +538,22 @@ fn runFixes(
541538
});
542539
defer file.close(io);
543540

544-
const file_content = switch (zlinter.version.zig) {
545-
.@"0.14" => try file.reader().readAllAlloc(gpa, zlinter.session.max_zig_file_size_bytes),
546-
.@"0.15", .@"0.16" => file_content: {
547-
var file_reader_buffer: [1024]u8 = undefined;
548-
var file_reader = file.readerStreaming(io, &file_reader_buffer);
541+
const file_content = file_content: {
542+
var file_reader_buffer: [1024]u8 = undefined;
543+
var file_reader = file.readerStreaming(io, &file_reader_buffer);
549544

550-
var buffer: std.Io.Writer.Allocating = .init(gpa);
551-
defer buffer.deinit();
545+
var buffer: std.Io.Writer.Allocating = .init(gpa);
546+
defer buffer.deinit();
552547

553-
if (file_reader.getSize()) |size| {
554-
const casted_size = std.math.cast(u32, size) orelse return error.StreamTooLong;
555-
try buffer.ensureTotalCapacity(casted_size);
556-
} else |_| {
557-
// Do nothing.
558-
}
548+
if (file_reader.getSize()) |size| {
549+
const casted_size = std.math.cast(u32, size) orelse return error.StreamTooLong;
550+
try buffer.ensureTotalCapacity(casted_size);
551+
} else |_| {
552+
// Do nothing.
553+
}
559554

560-
_ = try file_reader.interface.streamRemaining(&buffer.writer);
561-
break :file_content try buffer.toOwnedSlice();
562-
},
555+
_ = try file_reader.interface.streamRemaining(&buffer.writer);
556+
break :file_content try buffer.toOwnedSlice();
563557
};
564558
defer gpa.free(file_content);
565559

@@ -604,22 +598,12 @@ fn runFixes(
604598
});
605599
defer new_file.close(io);
606600

607-
switch (zlinter.version.zig) {
608-
.@"0.14" => {
609-
var writer = new_file.writer();
610-
for (output_slices.items) |output_slice| {
611-
try writer.writeAll(output_slice);
612-
}
613-
},
614-
.@"0.15", .@"0.16" => {
615-
var buffer: [1024]u8 = undefined;
616-
var writer = new_file.writer(io, &buffer);
617-
for (output_slices.items) |output_slice| {
618-
try writer.interface.writeAll(output_slice);
619-
}
620-
try writer.interface.flush();
621-
},
601+
var buffer: [1024]u8 = undefined;
602+
var writer = new_file.writer(io, &buffer);
603+
for (output_slices.items) |output_slice| {
604+
try writer.interface.writeAll(output_slice);
622605
}
606+
try writer.interface.flush();
623607
}
624608
}
625609

@@ -648,20 +632,9 @@ fn allocAstErrorMsg(
648632
err: Ast.Error,
649633
allocator: std.mem.Allocator,
650634
) ![]const u8 {
651-
switch (zlinter.version.zig) {
652-
.@"0.14" => {
653-
var error_message = std.ArrayList(u8).empty;
654-
defer error_message.deinit(allocator);
655-
656-
try tree.renderError(err, error_message.writer(allocator));
657-
return error_message.toOwnedSlice(allocator);
658-
},
659-
.@"0.15", .@"0.16" => {
660-
var aw = std.Io.Writer.Allocating.init(allocator);
661-
try tree.renderError(err, &aw.writer);
662-
return aw.toOwnedSlice();
663-
},
664-
}
635+
var aw = std.Io.Writer.Allocating.init(allocator);
636+
try tree.renderError(err, &aw.writer);
637+
return aw.toOwnedSlice();
665638
}
666639

667640
// TODO: Move buildExcludesIndex and buildFilterIndex to lib and write unit tests

src/lib/ast.zig

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,8 @@ pub fn deferBlock(doc: *const session.LintDocument, node: Ast.Node.Index, alloca
8989
const data = shims.nodeData(tree, node);
9090
const exp_node =
9191
switch (shims.nodeTag(tree, node)) {
92-
.@"errdefer" => switch (version.zig) {
93-
.@"0.14" => data.rhs,
94-
.@"0.15", .@"0.16" => data.opt_token_and_node[1],
95-
},
96-
.@"defer" => switch (version.zig) {
97-
.@"0.14" => data.rhs,
98-
.@"0.15", .@"0.16" => data.node,
99-
},
92+
.@"errdefer" => data.opt_token_and_node[1],
93+
.@"defer" => data.node,
10094
else => return null,
10195
};
10296

@@ -298,10 +292,7 @@ pub fn fnDecl(tree: Ast, node: Ast.Node.Index, fn_proto_buffer: *[1]Ast.Node.Ind
298292
switch (shims.nodeTag(tree, node)) {
299293
.fn_decl => {
300294
const data = shims.nodeData(tree, node);
301-
const lhs, const rhs = switch (version.zig) {
302-
.@"0.14" => .{ data.lhs, data.rhs },
303-
.@"0.15", .@"0.16" => .{ data.node_and_node[0], data.node_and_node[1] },
304-
};
295+
const lhs, const rhs = .{ data.node_and_node[0], data.node_and_node[1] };
305296
return .{ .proto = tree.fullFnProto(fn_proto_buffer, lhs).?, .block = rhs };
306297
},
307298
else => return null,
@@ -378,24 +369,9 @@ pub fn fullStatement(tree: Ast, node: Ast.Node.Index) ?Statement {
378369
else if (tree.fullSwitchCase(node)) |switchStatement|
379370
.{ .switch_case = switchStatement }
380371
else switch (shims.nodeTag(tree, node)) {
381-
.@"catch" => .{
382-
.@"catch" = switch (version.zig) {
383-
.@"0.14" => shims.nodeData(tree, node).rhs,
384-
.@"0.15", .@"0.16" => shims.nodeData(tree, node).node_and_node[1],
385-
},
386-
},
387-
.@"defer" => .{
388-
.@"defer" = switch (version.zig) {
389-
.@"0.14" => shims.nodeData(tree, node).rhs,
390-
.@"0.15", .@"0.16" => shims.nodeData(tree, node).node,
391-
},
392-
},
393-
.@"errdefer" => .{
394-
.@"errdefer" = switch (version.zig) {
395-
.@"0.14" => shims.nodeData(tree, node).rhs,
396-
.@"0.15", .@"0.16" => shims.nodeData(tree, node).opt_token_and_node[1],
397-
},
398-
},
372+
.@"catch" => .{ .@"catch" = shims.nodeData(tree, node).node_and_node[1] },
373+
.@"defer" => .{ .@"defer" = shims.nodeData(tree, node).node },
374+
.@"errdefer" => .{ .@"errdefer" = shims.nodeData(tree, node).opt_token_and_node[1] },
399375
else => null,
400376
};
401377
}
@@ -650,10 +626,7 @@ pub fn fnCall(
650626
switch (fn_expr_node_tag) {
651627
// e.g., `parent.*`
652628
.field_access => {
653-
const field_node, const fn_name = switch (version.zig) {
654-
.@"0.14" => .{ fn_expr_node_data.lhs, fn_expr_node_data.rhs },
655-
.@"0.15", .@"0.16" => .{ fn_expr_node_data.node_and_token[0], fn_expr_node_data.node_and_token[1] },
656-
};
629+
const field_node, const fn_name = .{ fn_expr_node_data.node_and_token[0], fn_expr_node_data.node_and_token[1] };
657630
std.debug.assert(shims.tokenTag(tree, fn_name) == .identifier);
658631

659632
const field_node_tag = shims.nodeTag(tree, field_node);
@@ -885,7 +858,6 @@ const session = @import("session.zig");
885858
const shims = @import("shims.zig");
886859
const std = @import("std");
887860
const testing = @import("testing.zig");
888-
const version = @import("version.zig");
889861
const zls = @import("zls");
890862
const NodeIndexShim = shims.NodeIndexShim;
891863
const Ast = std.zig.Ast;

src/lib/explorer.zig

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@ pub fn jsonTree(
2929
);
3030

3131
if (tree.errors.len == 0) {
32-
if (switch (version.zig) {
33-
.@"0.14" => tree.render(arena),
34-
.@"0.15", .@"0.16" => tree.renderAlloc(arena),
35-
}) |rendering| {
32+
if (tree.renderAlloc(arena)) |rendering| {
3633
try root_json_object.put(
3734
"render",
3835
.{ .string = rendering },
@@ -140,24 +137,9 @@ fn errorsToJson(tree: Ast, arena: std.mem.Allocator) !std.json.Array {
140137
try json_error.put("token_is_prev", .{ .bool = e.token_is_prev });
141138
try json_error.put("token", .{ .integer = e.token });
142139

143-
switch (version.zig) {
144-
.@"0.14" => {
145-
var render_backing = std.ArrayList(u8).empty;
146-
// zlinter-disable-next-line no_deprecated - Upgraded in 0.15
147-
try tree.renderError(e, render_backing.writer(arena));
148-
try json_error.put("message", .{ .string = try render_backing.toOwnedSlice(arena) });
149-
},
150-
.@"0.15" => {
151-
var aw = std.Io.Writer.Allocating.init(arena);
152-
try tree.renderError(e, &aw.writer);
153-
try json_error.put("message", .{ .string = try aw.toOwnedSlice() });
154-
},
155-
.@"0.16" => {
156-
var aw = std.Io.Writer.Allocating.init(arena);
157-
try tree.renderError(e, &aw.writer);
158-
try json_error.put("message", .{ .string = try aw.toOwnedSlice() });
159-
},
160-
}
140+
var aw = std.Io.Writer.Allocating.init(arena);
141+
try tree.renderError(e, &aw.writer);
142+
try json_error.put("message", .{ .string = try aw.toOwnedSlice() });
161143

162144
try json_errors.append(.{ .object = json_error });
163145
}
@@ -197,7 +179,6 @@ fn tokensToJson(tree: Ast, arena: std.mem.Allocator) !std.json.Array {
197179
const ast = @import("ast.zig");
198180
const shims = @import("shims.zig");
199181
const std = @import("std");
200-
const version = @import("version.zig");
201182
const NodeIndexShim = shims.NodeIndexShim;
202183
const Ast = std.zig.Ast;
203184
const zls = @import("zls");

0 commit comments

Comments
 (0)