authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-09-10 08:26:59-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-09-10 13:06:08-04:00
logd5a7fcfc13b8aa65a56cfa12c235b207ab6ae949
treec335a069eb7ad5c0e10691d8f1902af9382c2406
parentfaafc4132731e854a471ad4c4bb231efb525ea9a

Dwarf: implement and test multi array list slices


1 files changed, 131 insertions(+), 20 deletions(-)

test/src/Debugger.zig+131-20
...@@ -538,7 +538,7 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {...@@ -538,7 +538,7 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
538 \\frame variable null_u32 maybe_u32 nonnull_u32538 \\frame variable null_u32 maybe_u32 nonnull_u32
539 \\breakpoint delete --force 1539 \\breakpoint delete --force 1
540 \\540 \\
541 \\breakpoint set --file optionals.zig --source-pattern-regexp '_ = .{ &null_u32, &nonnull_u32 };'541 \\breakpoint set --file optionals.zig --source-pattern-regexp '_ = \.{ &null_u32, &nonnull_u32 };'
542 \\process continue542 \\process continue
543 \\frame variable --show-types null_u32 maybe_u32 nonnull_u32543 \\frame variable --show-types null_u32 maybe_u32 nonnull_u32
544 \\breakpoint delete --force 2544 \\breakpoint delete --force 2
...@@ -1333,50 +1333,61 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {...@@ -1333,50 +1333,61 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
1333 .path = "main.zig",1333 .path = "main.zig",
1334 .source =1334 .source =
1335 \\const std = @import("std");1335 \\const std = @import("std");
1336 \\fn testMultiArrayList() void {}1336 \\const Elem0 = struct { u32, u8, u16 };
1337 \\const Elem1 = struct { a: u32, b: u8, c: u16 };
1338 \\fn testMultiArrayList(
1339 \\ list0: std.MultiArrayList(Elem0),
1340 \\ slice0: std.MultiArrayList(Elem0).Slice,
1341 \\ list1: std.MultiArrayList(Elem1),
1342 \\ slice1: std.MultiArrayList(Elem1).Slice,
1343 \\) void {
1344 \\ _ = .{ list0, slice0, list1, slice1 };
1345 \\}
1337 \\pub fn main() !void {1346 \\pub fn main() !void {
1338 \\ const Elem0 = struct { u32, u8, u16 };
1339 \\ var list0: std.MultiArrayList(Elem0) = .{};1347 \\ var list0: std.MultiArrayList(Elem0) = .{};
1340 \\ defer list0.deinit(std.heap.page_allocator);1348 \\ defer list0.deinit(std.heap.page_allocator);
1341 \\ try list0.setCapacity(std.heap.page_allocator, 8);1349 \\ try list0.setCapacity(std.heap.page_allocator, 8);
1342 \\ list0.appendAssumeCapacity(.{ 1, 2, 3 });1350 \\ list0.appendAssumeCapacity(.{ 1, 2, 3 });
1343 \\ list0.appendAssumeCapacity(.{ 4, 5, 6 });1351 \\ list0.appendAssumeCapacity(.{ 4, 5, 6 });
1344 \\ list0.appendAssumeCapacity(.{ 7, 8, 9 });1352 \\ list0.appendAssumeCapacity(.{ 7, 8, 9 });
1353 \\ const slice0 = list0.slice();
1345 \\1354 \\
1346 \\ const Elem1 = struct { a: u32, b: u8, c: u16 };
1347 \\ var list1: std.MultiArrayList(Elem1) = .{};1355 \\ var list1: std.MultiArrayList(Elem1) = .{};
1348 \\ defer list1.deinit(std.heap.page_allocator);1356 \\ defer list1.deinit(std.heap.page_allocator);
1349 \\ try list1.setCapacity(std.heap.page_allocator, 12);1357 \\ try list1.setCapacity(std.heap.page_allocator, 12);
1350 \\ list1.appendAssumeCapacity(.{ .a = 1, .b = 2, .c = 3 });1358 \\ list1.appendAssumeCapacity(.{ .a = 1, .b = 2, .c = 3 });
1351 \\ list1.appendAssumeCapacity(.{ .a = 4, .b = 5, .c = 6 });1359 \\ list1.appendAssumeCapacity(.{ .a = 4, .b = 5, .c = 6 });
1352 \\ list1.appendAssumeCapacity(.{ .a = 7, .b = 8, .c = 9 });1360 \\ list1.appendAssumeCapacity(.{ .a = 7, .b = 8, .c = 9 });
1361 \\ const slice1 = list1.slice();
1353 \\1362 \\
1354 \\ testMultiArrayList();1363 \\ testMultiArrayList(list0, slice0, list1, slice1);
1355 \\}1364 \\}
1356 \\1365 \\
1357 ,1366 ,
1358 },1367 },
1359 },1368 },
1360 \\breakpoint set --file main.zig --source-pattern-regexp 'testMultiArrayList\(\);'1369 \\breakpoint set --file main.zig --source-pattern-regexp '_ = \.{ list0, slice0, list1, slice1 };'
1361 \\process launch1370 \\process launch
1362 \\frame variable --show-types -- list0 list0.len list0.capacity list0[0] list0[1] list0[2] list0.0 list0.1 list0.21371 \\frame variable --show-types -- list0 list0.len list0.capacity list0[0] list0[1] list0[2] list0.0 list0.1 list0.2
1372 \\frame variable --show-types -- slice0 slice0.len slice0.capacity slice0[0] slice0[1] slice0[2] slice0.0 slice0.1 slice0.2
1363 \\frame variable --show-types -- list1 list1.len list1.capacity list1[0] list1[1] list1[2] list1.a list1.b list1.c1373 \\frame variable --show-types -- list1 list1.len list1.capacity list1[0] list1[1] list1[2] list1.a list1.b list1.c
1374 \\frame variable --show-types -- slice1 slice1.len slice1.capacity slice1[0] slice1[1] slice1[2] slice1.a slice1.b slice1.c
1364 \\breakpoint delete --force 11375 \\breakpoint delete --force 1
1365 ,1376 ,
1366 &.{1377 &.{
1367 \\(lldb) frame variable --show-types -- list0 list0.len list0.capacity list0[0] list0[1] list0[2] list0.0 list0.1 list0.21378 \\(lldb) frame variable --show-types -- list0 list0.len list0.capacity list0[0] list0[1] list0[2] list0.0 list0.1 list0.2
1368 \\(std.multi_array_list.MultiArrayList(main.main.Elem0)) list0 = len=3 capacity=8 {1379 \\(std.multi_array_list.MultiArrayList(main.Elem0)) list0 = len=3 capacity=8 {
1369 \\ (root.main.main.Elem0) [0] = {1380 \\ (root.main.Elem0) [0] = {
1370 \\ (u32) 0 = 11381 \\ (u32) 0 = 1
1371 \\ (u8) 1 = 21382 \\ (u8) 1 = 2
1372 \\ (u16) 2 = 31383 \\ (u16) 2 = 3
1373 \\ }1384 \\ }
1374 \\ (root.main.main.Elem0) [1] = {1385 \\ (root.main.Elem0) [1] = {
1375 \\ (u32) 0 = 41386 \\ (u32) 0 = 4
1376 \\ (u8) 1 = 51387 \\ (u8) 1 = 5
1377 \\ (u16) 2 = 61388 \\ (u16) 2 = 6
1378 \\ }1389 \\ }
1379 \\ (root.main.main.Elem0) [2] = {1390 \\ (root.main.Elem0) [2] = {
1380 \\ (u32) 0 = 71391 \\ (u32) 0 = 7
1381 \\ (u8) 1 = 81392 \\ (u8) 1 = 8
1382 \\ (u16) 2 = 91393 \\ (u16) 2 = 9
...@@ -1384,17 +1395,17 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {...@@ -1384,17 +1395,17 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
1384 \\}1395 \\}
1385 \\(usize) list0.len = 31396 \\(usize) list0.len = 3
1386 \\(usize) list0.capacity = 81397 \\(usize) list0.capacity = 8
1387 \\(root.main.main.Elem0) list0[0] = {1398 \\(root.main.Elem0) list0[0] = {
1388 \\ (u32) 0 = 11399 \\ (u32) 0 = 1
1389 \\ (u8) 1 = 21400 \\ (u8) 1 = 2
1390 \\ (u16) 2 = 31401 \\ (u16) 2 = 3
1391 \\}1402 \\}
1392 \\(root.main.main.Elem0) list0[1] = {1403 \\(root.main.Elem0) list0[1] = {
1393 \\ (u32) 0 = 41404 \\ (u32) 0 = 4
1394 \\ (u8) 1 = 51405 \\ (u8) 1 = 5
1395 \\ (u16) 2 = 61406 \\ (u16) 2 = 6
1396 \\}1407 \\}
1397 \\(root.main.main.Elem0) list0[2] = {1408 \\(root.main.Elem0) list0[2] = {
1398 \\ (u32) 0 = 71409 \\ (u32) 0 = 7
1399 \\ (u8) 1 = 81410 \\ (u8) 1 = 8
1400 \\ (u16) 2 = 91411 \\ (u16) 2 = 9
...@@ -1414,19 +1425,69 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {...@@ -1414,19 +1425,69 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
1414 \\ (u16) [1] = 61425 \\ (u16) [1] = 6
1415 \\ (u16) [2] = 91426 \\ (u16) [2] = 9
1416 \\}1427 \\}
1428 \\(lldb) frame variable --show-types -- slice0 slice0.len slice0.capacity slice0[0] slice0[1] slice0[2] slice0.0 slice0.1 slice0.2
1429 \\(std.multi_array_list.MultiArrayList(main.Elem0).Slice) slice0 = len=3 capacity=8 {
1430 \\ (root.main.Elem0) [0] = {
1431 \\ (u32) 0 = 1
1432 \\ (u8) 1 = 2
1433 \\ (u16) 2 = 3
1434 \\ }
1435 \\ (root.main.Elem0) [1] = {
1436 \\ (u32) 0 = 4
1437 \\ (u8) 1 = 5
1438 \\ (u16) 2 = 6
1439 \\ }
1440 \\ (root.main.Elem0) [2] = {
1441 \\ (u32) 0 = 7
1442 \\ (u8) 1 = 8
1443 \\ (u16) 2 = 9
1444 \\ }
1445 \\}
1446 \\(usize) slice0.len = 3
1447 \\(usize) slice0.capacity = 8
1448 \\(root.main.Elem0) slice0[0] = {
1449 \\ (u32) 0 = 1
1450 \\ (u8) 1 = 2
1451 \\ (u16) 2 = 3
1452 \\}
1453 \\(root.main.Elem0) slice0[1] = {
1454 \\ (u32) 0 = 4
1455 \\ (u8) 1 = 5
1456 \\ (u16) 2 = 6
1457 \\}
1458 \\(root.main.Elem0) slice0[2] = {
1459 \\ (u32) 0 = 7
1460 \\ (u8) 1 = 8
1461 \\ (u16) 2 = 9
1462 \\}
1463 \\([3]u32) slice0.0 = {
1464 \\ (u32) [0] = 1
1465 \\ (u32) [1] = 4
1466 \\ (u32) [2] = 7
1467 \\}
1468 \\([3]u8) slice0.1 = {
1469 \\ (u8) [0] = 2
1470 \\ (u8) [1] = 5
1471 \\ (u8) [2] = 8
1472 \\}
1473 \\([3]u16) slice0.2 = {
1474 \\ (u16) [0] = 3
1475 \\ (u16) [1] = 6
1476 \\ (u16) [2] = 9
1477 \\}
1417 \\(lldb) frame variable --show-types -- list1 list1.len list1.capacity list1[0] list1[1] list1[2] list1.a list1.b list1.c1478 \\(lldb) frame variable --show-types -- list1 list1.len list1.capacity list1[0] list1[1] list1[2] list1.a list1.b list1.c
1418 \\(std.multi_array_list.MultiArrayList(main.main.Elem1)) list1 = len=3 capacity=12 {1479 \\(std.multi_array_list.MultiArrayList(main.Elem1)) list1 = len=3 capacity=12 {
1419 \\ (root.main.main.Elem1) [0] = {1480 \\ (root.main.Elem1) [0] = {
1420 \\ (u32) a = 11481 \\ (u32) a = 1
1421 \\ (u8) b = 21482 \\ (u8) b = 2
1422 \\ (u16) c = 31483 \\ (u16) c = 3
1423 \\ }1484 \\ }
1424 \\ (root.main.main.Elem1) [1] = {1485 \\ (root.main.Elem1) [1] = {
1425 \\ (u32) a = 41486 \\ (u32) a = 4
1426 \\ (u8) b = 51487 \\ (u8) b = 5
1427 \\ (u16) c = 61488 \\ (u16) c = 6
1428 \\ }1489 \\ }
1429 \\ (root.main.main.Elem1) [2] = {1490 \\ (root.main.Elem1) [2] = {
1430 \\ (u32) a = 71491 \\ (u32) a = 7
1431 \\ (u8) b = 81492 \\ (u8) b = 8
1432 \\ (u16) c = 91493 \\ (u16) c = 9
...@@ -1434,17 +1495,17 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {...@@ -1434,17 +1495,17 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
1434 \\}1495 \\}
1435 \\(usize) list1.len = 31496 \\(usize) list1.len = 3
1436 \\(usize) list1.capacity = 121497 \\(usize) list1.capacity = 12
1437 \\(root.main.main.Elem1) list1[0] = {1498 \\(root.main.Elem1) list1[0] = {
1438 \\ (u32) a = 11499 \\ (u32) a = 1
1439 \\ (u8) b = 21500 \\ (u8) b = 2
1440 \\ (u16) c = 31501 \\ (u16) c = 3
1441 \\}1502 \\}
1442 \\(root.main.main.Elem1) list1[1] = {1503 \\(root.main.Elem1) list1[1] = {
1443 \\ (u32) a = 41504 \\ (u32) a = 4
1444 \\ (u8) b = 51505 \\ (u8) b = 5
1445 \\ (u16) c = 61506 \\ (u16) c = 6
1446 \\}1507 \\}
1447 \\(root.main.main.Elem1) list1[2] = {1508 \\(root.main.Elem1) list1[2] = {
1448 \\ (u32) a = 71509 \\ (u32) a = 7
1449 \\ (u8) b = 81510 \\ (u8) b = 8
1450 \\ (u16) c = 91511 \\ (u16) c = 9
...@@ -1464,6 +1525,56 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {...@@ -1464,6 +1525,56 @@ pub fn addTestsForTarget(db: *Debugger, target: Target) void {
1464 \\ (u16) [1] = 61525 \\ (u16) [1] = 6
1465 \\ (u16) [2] = 91526 \\ (u16) [2] = 9
1466 \\}1527 \\}
1528 \\(lldb) frame variable --show-types -- slice1 slice1.len slice1.capacity slice1[0] slice1[1] slice1[2] slice1.a slice1.b slice1.c
1529 \\(std.multi_array_list.MultiArrayList(main.Elem1).Slice) slice1 = len=3 capacity=12 {
1530 \\ (root.main.Elem1) [0] = {
1531 \\ (u32) a = 1
1532 \\ (u8) b = 2
1533 \\ (u16) c = 3
1534 \\ }
1535 \\ (root.main.Elem1) [1] = {
1536 \\ (u32) a = 4
1537 \\ (u8) b = 5
1538 \\ (u16) c = 6
1539 \\ }
1540 \\ (root.main.Elem1) [2] = {
1541 \\ (u32) a = 7
1542 \\ (u8) b = 8
1543 \\ (u16) c = 9
1544 \\ }
1545 \\}
1546 \\(usize) slice1.len = 3
1547 \\(usize) slice1.capacity = 12
1548 \\(root.main.Elem1) slice1[0] = {
1549 \\ (u32) a = 1
1550 \\ (u8) b = 2
1551 \\ (u16) c = 3
1552 \\}
1553 \\(root.main.Elem1) slice1[1] = {
1554 \\ (u32) a = 4
1555 \\ (u8) b = 5
1556 \\ (u16) c = 6
1557 \\}
1558 \\(root.main.Elem1) slice1[2] = {
1559 \\ (u32) a = 7
1560 \\ (u8) b = 8
1561 \\ (u16) c = 9
1562 \\}
1563 \\([3]u32) slice1.a = {
1564 \\ (u32) [0] = 1
1565 \\ (u32) [1] = 4
1566 \\ (u32) [2] = 7
1567 \\}
1568 \\([3]u8) slice1.b = {
1569 \\ (u8) [0] = 2
1570 \\ (u8) [1] = 5
1571 \\ (u8) [2] = 8
1572 \\}
1573 \\([3]u16) slice1.c = {
1574 \\ (u16) [0] = 3
1575 \\ (u16) [1] = 6
1576 \\ (u16) [2] = 9
1577 \\}
1467 \\(lldb) breakpoint delete --force 11578 \\(lldb) breakpoint delete --force 1
1468 \\1 breakpoints deleted; 0 breakpoint locations disabled.1579 \\1 breakpoints deleted; 0 breakpoint locations disabled.
1469 },1580 },