@@ -734,7 +734,7 @@ pub const Node = struct {
734
734
var i = index ;
735
735
736
736
if (self .doc_comments ) | comments | {
737
- if (i < 1 ) return * comments .base ;
737
+ if (i < 1 ) return & comments .base ;
738
738
i -= 1 ;
739
739
}
740
740
@@ -1243,7 +1243,7 @@ pub const Node = struct {
1243
1243
i -= 1 ;
1244
1244
1245
1245
if (self .@"else" ) | @"else" | {
1246
- if (i < 1 ) return * @"else" .base ;
1246
+ if (i < 1 ) return & @"else" .base ;
1247
1247
i -= 1 ;
1248
1248
}
1249
1249
@@ -1296,7 +1296,7 @@ pub const Node = struct {
1296
1296
i -= 1 ;
1297
1297
1298
1298
if (self .@"else" ) | @"else" | {
1299
- if (i < 1 ) return * @"else" .base ;
1299
+ if (i < 1 ) return & @"else" .base ;
1300
1300
i -= 1 ;
1301
1301
}
1302
1302
@@ -1347,7 +1347,7 @@ pub const Node = struct {
1347
1347
i -= 1 ;
1348
1348
1349
1349
if (self .@"else" ) | @"else" | {
1350
- if (i < 1 ) return * @"else" .base ;
1350
+ if (i < 1 ) return & @"else" .base ;
1351
1351
i -= 1 ;
1352
1352
}
1353
1353
@@ -1536,22 +1536,27 @@ pub const Node = struct {
1536
1536
var i = index ;
1537
1537
1538
1538
switch (self .op ) {
1539
+ // TODO https://github.com/ziglang/zig/issues/1107
1539
1540
Op .SliceType = > | addr_of_info | {
1540
1541
if (addr_of_info .align_info ) | align_info | {
1541
1542
if (i < 1 ) return align_info .node ;
1542
1543
i -= 1 ;
1543
1544
}
1544
1545
},
1545
- Op .AddrOf = > | addr_of_info | {
1546
+
1547
+ Op .PtrType = > | addr_of_info | {
1546
1548
if (addr_of_info .align_info ) | align_info | {
1547
1549
if (i < 1 ) return align_info .node ;
1548
1550
i -= 1 ;
1549
1551
}
1550
1552
},
1553
+
1551
1554
Op .ArrayType = > | size_expr | {
1552
1555
if (i < 1 ) return size_expr ;
1553
1556
i -= 1 ;
1554
1557
},
1558
+
1559
+ Op .AddressOf ,
1555
1560
Op .Await ,
1556
1561
Op .BitNot ,
1557
1562
Op .BoolNot ,
@@ -1561,8 +1566,6 @@ pub const Node = struct {
1561
1566
Op .NegationWrap ,
1562
1567
Op .Try ,
1563
1568
Op .Resume ,
1564
- Op .UnwrapOptional ,
1565
- Op .PointerType ,
1566
1569
= > {},
1567
1570
}
1568
1571
@@ -1667,7 +1670,9 @@ pub const Node = struct {
1667
1670
if (i < fields .len ) return fields .at (i ).* ;
1668
1671
i -= fields .len ;
1669
1672
},
1670
- Op .Deref = > {},
1673
+ Op .UnwrapOptional ,
1674
+ Op .Deref ,
1675
+ = > {},
1671
1676
}
1672
1677
1673
1678
return null ;
@@ -2022,7 +2027,7 @@ pub const Node = struct {
2022
2027
2023
2028
switch (self .kind ) {
2024
2029
Kind .Variable = > | variable_name | {
2025
- if (i < 1 ) return * variable_name .base ;
2030
+ if (i < 1 ) return & variable_name .base ;
2026
2031
i -= 1 ;
2027
2032
},
2028
2033
Kind .Return = > | return_type | {
@@ -2092,10 +2097,10 @@ pub const Node = struct {
2092
2097
pub fn iterate (self : * Asm , index : usize ) ? * Node {
2093
2098
var i = index ;
2094
2099
2095
- if (i < self .outputs .len ) return * ( self .outputs .at (index ).* ) .base ;
2100
+ if (i < self .outputs .len ) return & self .outputs .at (index ).* .base ;
2096
2101
i -= self .outputs .len ;
2097
2102
2098
- if (i < self .inputs .len ) return * ( self .inputs .at (index ).* ) .base ;
2103
+ if (i < self .inputs .len ) return & self .inputs .at (index ).* .base ;
2099
2104
i -= self .inputs .len ;
2100
2105
2101
2106
return null ;
@@ -2205,3 +2210,14 @@ pub const Node = struct {
2205
2210
}
2206
2211
};
2207
2212
};
2213
+
2214
+ test "iterate" {
2215
+ var root = Node.Root {
2216
+ .base = Node { .id = Node .Id .Root },
2217
+ .doc_comments = null ,
2218
+ .decls = Node .Root .DeclList .init (std .debug .global_allocator ),
2219
+ .eof_token = 0 ,
2220
+ };
2221
+ var base = & root .base ;
2222
+ assert (base .iterate (0 ) == null );
2223
+ }
0 commit comments