authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2024-12-18 20:33:38+00:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2024-12-19 03:21:56+00:00
log58b8b1ac2af642e886f3a561bf6dfd971bb80a96
treec71b592a592e21b108fccc0be3f99a45b6a13c6e
parenteac87ea8d646ccf07d25152649a9ff9ede23fc3d
signaturelock-open Commit is signed but in an unrecognized format.

Zcu: allow `node_offset_var_decl_*` source location for function declarations


1 files changed, 24 insertions(+), 6 deletions(-)

src/Zcu.zig+24-6
......@@ -836,20 +836,38 @@ pub const SrcLoc = struct {
836836 .node_offset_var_decl_align => |node_off| {
837837 const tree = try src_loc.file_scope.getTree(gpa);
838838 const node = src_loc.relativeToNodeIndex(node_off);
839 const full = tree.fullVarDecl(node).?;
840 return tree.nodeToSpan(full.ast.align_node);
839 var buf: [1]Ast.Node.Index = undefined;
840 const align_node = if (tree.fullVarDecl(node)) |v|
841 v.ast.align_node
842 else if (tree.fullFnProto(&buf, node)) |f|
843 f.ast.align_expr
844 else
845 unreachable;
846 return tree.nodeToSpan(align_node);
841847 },
842848 .node_offset_var_decl_section => |node_off| {
843849 const tree = try src_loc.file_scope.getTree(gpa);
844850 const node = src_loc.relativeToNodeIndex(node_off);
845 const full = tree.fullVarDecl(node).?;
846 return tree.nodeToSpan(full.ast.section_node);
851 var buf: [1]Ast.Node.Index = undefined;
852 const section_node = if (tree.fullVarDecl(node)) |v|
853 v.ast.section_node
854 else if (tree.fullFnProto(&buf, node)) |f|
855 f.ast.section_expr
856 else
857 unreachable;
858 return tree.nodeToSpan(section_node);
847859 },
848860 .node_offset_var_decl_addrspace => |node_off| {
849861 const tree = try src_loc.file_scope.getTree(gpa);
850862 const node = src_loc.relativeToNodeIndex(node_off);
851 const full = tree.fullVarDecl(node).?;
852 return tree.nodeToSpan(full.ast.addrspace_node);
863 var buf: [1]Ast.Node.Index = undefined;
864 const addrspace_node = if (tree.fullVarDecl(node)) |v|
865 v.ast.addrspace_node
866 else if (tree.fullFnProto(&buf, node)) |f|
867 f.ast.addrspace_expr
868 else
869 unreachable;
870 return tree.nodeToSpan(addrspace_node);
853871 },
854872 .node_offset_var_decl_init => |node_off| {
855873 const tree = try src_loc.file_scope.getTree(gpa);