@@ -1287,7 +1287,48 @@ fn walkInstruction(
1287
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
1333
// @check array_cat and array_mul
1293
1334
.add ,
0 commit comments