From 1f5617ac078041532dd5933ae1cf0ccb13c3cd8a Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 26 Mar 2021 23:46:37 -0700 Subject: stage2: implement bitwise expr and error literals --- src/Module.zig | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src/Module.zig') diff --git a/src/Module.zig b/src/Module.zig index cb23cf3c8c..c8c1f06538 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -1599,7 +1599,7 @@ pub const SrcLoc = struct { const token_starts = tree.tokens.items(.start); return token_starts[tok_index]; }, - .node_offset => |node_off| { + .node_offset, .node_offset_bin_op => |node_off| { const decl = src_loc.container.decl; const node = decl.relativeToNodeIndex(node_off); const tree = decl.container.file_scope.base.tree(); @@ -1660,9 +1660,28 @@ pub const SrcLoc = struct { const token_starts = tree.tokens.items(.start); return token_starts[tok_index]; }, - .node_offset_bin_op => @panic("TODO"), - .node_offset_bin_lhs => @panic("TODO"), - .node_offset_bin_rhs => @panic("TODO"), + .node_offset_bin_lhs => |node_off| { + const decl = src_loc.container.decl; + const node = decl.relativeToNodeIndex(node_off); + const tree = decl.container.file_scope.base.tree(); + const node_datas = tree.nodes.items(.data); + const src_node = node_datas[node].lhs; + const main_tokens = tree.nodes.items(.main_token); + const tok_index = main_tokens[src_node]; + const token_starts = tree.tokens.items(.start); + return token_starts[tok_index]; + }, + .node_offset_bin_rhs => |node_off| { + const decl = src_loc.container.decl; + const node = decl.relativeToNodeIndex(node_off); + const tree = decl.container.file_scope.base.tree(); + const node_datas = tree.nodes.items(.data); + const src_node = node_datas[node].rhs; + const main_tokens = tree.nodes.items(.main_token); + const tok_index = main_tokens[src_node]; + const token_starts = tree.tokens.items(.start); + return token_starts[tok_index]; + }, } } }; -- cgit v1.2.3