authorgravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2023-04-30 16:54:25+10:00
committergravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2023-05-07 15:55:20+10:00
log2c2a0402c65986674d427390292f2fe38474c90f
treee792219fc53493a119cdd04e211373143a848c06
parent8aa70cf6cd88b6103200d558c60295550c7b911d

autodoc: implement slice_length case in walkInstruction


1 files changed, 42 insertions(+), 1 deletions(-)

src/Autodoc.zig+42-1
......@@ -1287,7 +1287,48 @@ fn walkInstruction(
12871287 .expr = .{ .sliceIndex = slice_index },
12881288 };
12891289 },
1290 .slice_length => @panic("TODO: implement walkInstruction for .slice_length"),
1290 .slice_length => {
1291 const pl_node = data[inst_index].pl_node;
1292 const extra = file.zir.extraData(Zir.Inst.SliceLength, pl_node.payload_index);
1293
1294 const slice_index = self.exprs.items.len;
1295 try self.exprs.append(self.arena, .{ .slice = .{ .lhs = 0, .start = 0 } });
1296
1297 var lhs: DocData.WalkResult = try self.walkRef(
1298 file,
1299 parent_scope,
1300 parent_src,
1301 extra.data.lhs,
1302 false,
1303 );
1304 var start: DocData.WalkResult = try self.walkRef(
1305 file,
1306 parent_scope,
1307 parent_src,
1308 extra.data.start,
1309 false,
1310 );
1311 var len: DocData.WalkResult = try self.walkRef(
1312 file,
1313 parent_scope,
1314 parent_src,
1315 extra.data.len,
1316 false,
1317 );
1318
1319 const lhs_index = self.exprs.items.len;
1320 try self.exprs.append(self.arena, lhs.expr);
1321 const start_index = self.exprs.items.len;
1322 try self.exprs.append(self.arena, start.expr);
1323 const len_index = self.exprs.items.len;
1324 try self.exprs.append(self.arena, len.expr);
1325 self.exprs.items[slice_index] = .{ .slice = .{ .lhs = lhs_index, .start = start_index, .end = len_index } };
1326
1327 return DocData.WalkResult{
1328 .typeRef = self.decls.items[lhs.expr.declRef.Analyzed].value.typeRef,
1329 .expr = .{ .sliceIndex = slice_index },
1330 };
1331 },
12911332
12921333 // @check array_cat and array_mul
12931334 .add,