| author | |
| committer | |
| log | 2c5924c59a148335e5025b72a5ba98d765ed771d |
| tree | 8745623c6c43902fd2be5344126862b69fc6334b |
| parent | 5bb8e9cd975ea68c924d04be6608f96b41204b7f |
2 files changed, 31 insertions(+), 2 deletions(-)
lib/docs/main.js+18-1| ... | ... | @@ -1093,6 +1093,23 @@ const NAV_MODES = { |
| 1093 | 1093 | payloadHtml += decl + "[" + start + ".." + end + sentinel + "]"; |
| 1094 | 1094 | return payloadHtml; |
| 1095 | 1095 | } |
| 1096 | case "sliceLength": { | |
| 1097 | let payloadHtml = ""; | |
| 1098 | const lhsExpr = zigAnalysis.exprs[expr.sliceLength.lhs]; | |
| 1099 | const startExpr = zigAnalysis.exprs[expr.sliceLength.start]; | |
| 1100 | const lenExpr = zigAnalysis.exprs[expr.sliceLength.len]; | |
| 1101 | let decl = exprName(lhsExpr, opts); | |
| 1102 | let start = exprName(startExpr, opts); | |
| 1103 | let len = exprName(lenExpr, opts); | |
| 1104 | let sentinel = ""; | |
| 1105 | if (expr.sliceLength["sentinel"]) { | |
| 1106 | const sentinelExpr = zigAnalysis.exprs[expr.sliceLength.sentinel]; | |
| 1107 | let sentinel_ = exprName(sentinelExpr, options); | |
| 1108 | sentinel += " :" + sentinel_; | |
| 1109 | } | |
| 1110 | payloadHtml += decl + "[" + start + "..][0.." + len + sentinel + "]"; | |
| 1111 | return payloadHtml; | |
| 1112 | } | |
| 1096 | 1113 | case "sliceIndex": { |
| 1097 | 1114 | const sliceIndex = zigAnalysis.exprs[expr.sliceIndex]; |
| 1098 | 1115 | return exprName(sliceIndex, opts, opts); |
| ... | ... | @@ -4850,4 +4867,4 @@ function RadixTree() { |
| 4850 | 4867 | |
| 4851 | 4868 | // BUT! |
| 4852 | 4869 | |
| 4853 | // We want to be able to search "Hash", for example! | |
| \ No newline at end of file | ||
| 4870 | // We want to be able to search "Hash", for example! |
src/Autodoc.zig+13-1| ... | ... | @@ -755,6 +755,7 @@ const DocData = struct { |
| 755 | 755 | string: []const u8, // direct value |
| 756 | 756 | sliceIndex: usize, |
| 757 | 757 | slice: Slice, |
| 758 | sliceLength: SliceLength, | |
| 758 | 759 | cmpxchgIndex: usize, |
| 759 | 760 | cmpxchg: Cmpxchg, |
| 760 | 761 | builtin: Builtin, |
| ... | ... | @@ -791,6 +792,12 @@ const DocData = struct { |
| 791 | 792 | end: ?usize = null, |
| 792 | 793 | sentinel: ?usize = null, // index in `exprs` |
| 793 | 794 | }; |
| 795 | const SliceLength = struct { | |
| 796 | lhs: usize, | |
| 797 | start: usize, | |
| 798 | len: usize, | |
| 799 | sentinel: ?usize = null, | |
| 800 | }; | |
| 794 | 801 | const Cmpxchg = struct { |
| 795 | 802 | name: []const u8, |
| 796 | 803 | type: usize, |
| ... | ... | @@ -1337,7 +1344,12 @@ fn walkInstruction( |
| 1337 | 1344 | try self.exprs.append(self.arena, sentinel.expr); |
| 1338 | 1345 | break :sentinel_index index; |
| 1339 | 1346 | } else null; |
| 1340 | self.exprs.items[slice_index] = .{ .slice = .{ .lhs = lhs_index, .start = start_index, .end = len_index, .sentinel = sentinel_index } }; | |
| 1347 | self.exprs.items[slice_index] = .{ .sliceLength = .{ | |
| 1348 | .lhs = lhs_index, | |
| 1349 | .start = start_index, | |
| 1350 | .len = len_index, | |
| 1351 | .sentinel = sentinel_index, | |
| 1352 | } }; | |
| 1341 | 1353 | |
| 1342 | 1354 | return DocData.WalkResult{ |
| 1343 | 1355 | .typeRef = self.decls.items[lhs.expr.declRef.Analyzed].value.typeRef, |