| ... | @@ -1287,7 +1287,48 @@ fn walkInstruction( | ... | @@ -1287,7 +1287,48 @@ fn walkInstruction( |
| 1287 | .expr = .{ .sliceIndex = slice_index }, | 1287 | .expr = .{ .sliceIndex = slice_index }, |
| 1288 | }; | 1288 | }; |
| 1289 | }, | 1289 | }, |
| 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 | }, |
| 1291 | | 1332 | |
| 1292 | // @check array_cat and array_mul | 1333 | // @check array_cat and array_mul |
| 1293 | .add, | 1334 | .add, |