Skip to content

Commit d25df63

Browse files
committed
Zcu: allow node_offset_var_decl_* source location for function declarations
1 parent 0616f58 commit d25df63

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

src/Zcu.zig

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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);

0 commit comments

Comments
 (0)