2 minor tidy-ups + fix for over-eager unused parameter error in function types

This commit is contained in:
InKryption 2022-08-19 00:31:41 +02:00
parent 41a467b0f3
commit 249685e4c5
No known key found for this signature in database
GPG Key ID: 99105582F7539E94
3 changed files with 16 additions and 9 deletions

View File

@ -239,11 +239,7 @@ fn publishDiagnostics(server: *Server, writer: anytype, handle: DocumentStore.Ha
scopes: for (handle.document_scope.scopes) |scope| { scopes: for (handle.document_scope.scopes) |scope| {
const scope_data = switch (scope.data) { const scope_data = switch (scope.data) {
.function => |f| b: { .function => |f| b: {
var buf: [1]std.zig.Ast.Node.Index = undefined; if (!ast.fnProtoHasBody(tree, f).?) continue :scopes;
var proto = ast.fnProto(tree, f, &buf) orelse break :b f;
if (proto.extern_export_inline_token) |tok| {
if (std.mem.eql(u8, tree.tokenSlice(tok), "extern")) continue :scopes;
}
break :b f; break :b f;
}, },
.block => |b| b, .block => |b| b,
@ -2450,7 +2446,6 @@ pub fn processJsonRpc(server: *Server, writer: anytype, json: []const u8) !void
return; return;
} }
std.debug.assert(tree.root.Object.get("method") != null);
const method = tree.root.Object.get("method").?.String; const method = tree.root.Object.get("method").?.String;
const start_time = std.time.milliTimestamp(); const start_time = std.time.milliTimestamp();
@ -2490,6 +2485,7 @@ pub fn processJsonRpc(server: *Server, writer: anytype, json: []const u8) !void
}; };
// Hack to avoid `return`ing in the inline for, which causes bugs. // Hack to avoid `return`ing in the inline for, which causes bugs.
// TODO: Change once stage2 is shipped and more stable?
var done: ?anyerror = null; var done: ?anyerror = null;
inline for (method_map) |method_info| { inline for (method_map) |method_info| {
if (done == null and std.mem.eql(u8, method, method_info[0])) { if (done == null and std.mem.eql(u8, method, method_info[0])) {

View File

@ -1037,6 +1037,18 @@ pub fn isBlock(tree: Ast, node: Ast.Node.Index) bool {
}; };
} }
pub fn fnProtoHasBody(tree: Ast, node: Ast.Node.Index) ?bool {
return switch (tree.nodes.items(.tag)[node]) {
.fn_proto,
.fn_proto_multi,
.fn_proto_one,
.fn_proto_simple,
=> false,
.fn_decl => true,
else => null,
};
}
pub fn fnProto(tree: Ast, node: Ast.Node.Index, buf: *[1]Ast.Node.Index) ?Ast.full.FnProto { pub fn fnProto(tree: Ast, node: Ast.Node.Index, buf: *[1]Ast.Node.Index) ?Ast.full.FnProto {
return switch (tree.nodes.items(.tag)[node]) { return switch (tree.nodes.items(.tag)[node]) {
.fn_proto => tree.fnProto(node), .fn_proto => tree.fnProto(node),

View File

@ -32,8 +32,7 @@ fn loop(server: *Server) !void {
try reader.readNoEof(buffer); try reader.readNoEof(buffer);
var writer = std.io.getStdOut().writer(); const writer = std.io.getStdOut().writer();
try server.processJsonRpc(writer, buffer); try server.processJsonRpc(writer, buffer);
} }
} }
@ -212,7 +211,7 @@ const stack_frames = switch (zig_builtin.mode) {
else => 0, else => 0,
}; };
pub fn main() anyerror!void { pub fn main() !void {
var gpa_state = std.heap.GeneralPurposeAllocator(.{ .stack_trace_frames = stack_frames }){}; var gpa_state = std.heap.GeneralPurposeAllocator(.{ .stack_trace_frames = stack_frames }){};
defer _ = gpa_state.deinit(); defer _ = gpa_state.deinit();
var tracy_state = if (tracy.enable_allocation) tracy.tracyAllocator(gpa_state.allocator()) else void{}; var tracy_state = if (tracy.enable_allocation) tracy.tracyAllocator(gpa_state.allocator()) else void{};