| author | |
| committer | |
| log | 21fd4a7a8b100cfb35a67f66bd9887006978ed60 |
| tree | e86eb206dcb10220eb6529e6f25600259202b400 |
| parent | 019fd456175daf6111dcb6cb265dbb9dc50aebfc |
2 files changed, 18 insertions(+), 8 deletions(-)
lib/docs/main.js+7| ... | @@ -1134,6 +1134,7 @@ var zigAnalysis; | ... | @@ -1134,6 +1134,7 @@ var zigAnalysis; |
| 1134 | let name = "["; | 1134 | let name = "["; |
| 1135 | let lenName = exprName(arrayObj.len, opts); | 1135 | let lenName = exprName(arrayObj.len, opts); |
| 1136 | let sentinel = arrayObj.sentinel ? ":0" : ""; | 1136 | let sentinel = arrayObj.sentinel ? ":0" : ""; |
| 1137 | let is_mutable = arrayObj.is_multable ? "const " : ""; | ||
| 1137 | 1138 | ||
| 1138 | if (opts.wantHtml) { | 1139 | if (opts.wantHtml) { |
| 1139 | name += | 1140 | name += |
| ... | @@ -1142,6 +1143,7 @@ var zigAnalysis; | ... | @@ -1142,6 +1143,7 @@ var zigAnalysis; |
| 1142 | name += lenName + sentinel; | 1143 | name += lenName + sentinel; |
| 1143 | } | 1144 | } |
| 1144 | name += "]"; | 1145 | name += "]"; |
| 1146 | name += is_mutable; | ||
| 1145 | name += exprName(arrayObj.child, opts); | 1147 | name += exprName(arrayObj.child, opts); |
| 1146 | return name; | 1148 | return name; |
| 1147 | } | 1149 | } |
| ... | @@ -1151,27 +1153,32 @@ var zigAnalysis; | ... | @@ -1151,27 +1153,32 @@ var zigAnalysis; |
| 1151 | { | 1153 | { |
| 1152 | let ptrObj = /** @type {PointerType} */(typeObj); | 1154 | let ptrObj = /** @type {PointerType} */(typeObj); |
| 1153 | let sentinel = ptrObj.sentinel ? ":0" : ""; | 1155 | let sentinel = ptrObj.sentinel ? ":0" : ""; |
| 1156 | let is_mutable = !ptrObj.is_mutable ? "const " : ""; | ||
| 1154 | let name = ""; | 1157 | let name = ""; |
| 1155 | switch (ptrObj.size) { | 1158 | switch (ptrObj.size) { |
| 1156 | default: | 1159 | default: |
| 1157 | console.log("TODO: implement unhandled pointer size case"); | 1160 | console.log("TODO: implement unhandled pointer size case"); |
| 1158 | case pointerSizeEnum.One: | 1161 | case pointerSizeEnum.One: |
| 1159 | name += "*"; | 1162 | name += "*"; |
| 1163 | name += is_mutable; | ||
| 1160 | break; | 1164 | break; |
| 1161 | case pointerSizeEnum.Many: | 1165 | case pointerSizeEnum.Many: |
| 1162 | name += "[*"; | 1166 | name += "[*"; |
| 1163 | name += sentinel; | 1167 | name += sentinel; |
| 1164 | name += "]"; | 1168 | name += "]"; |
| 1169 | name += is_mutable; | ||
| 1165 | break; | 1170 | break; |
| 1166 | case pointerSizeEnum.Slice: | 1171 | case pointerSizeEnum.Slice: |
| 1167 | name += "["; | 1172 | name += "["; |
| 1168 | name += sentinel; | 1173 | name += sentinel; |
| 1169 | name += "]"; | 1174 | name += "]"; |
| 1175 | name += is_mutable; | ||
| 1170 | break; | 1176 | break; |
| 1171 | case pointerSizeEnum.C: | 1177 | case pointerSizeEnum.C: |
| 1172 | name += "[*c"; | 1178 | name += "[*c"; |
| 1173 | name += sentinel; | 1179 | name += sentinel; |
| 1174 | name += "]"; | 1180 | name += "]"; |
| 1181 | name += is_mutable; | ||
| 1175 | break; | 1182 | break; |
| 1176 | } | 1183 | } |
| 1177 | if (ptrObj['const']) { | 1184 | if (ptrObj['const']) { |
src/Autodoc.zig+11-8| ... | @@ -384,6 +384,7 @@ const DocData = struct { | ... | @@ -384,6 +384,7 @@ const DocData = struct { |
| 384 | size: std.builtin.TypeInfo.Pointer.Size, | 384 | size: std.builtin.TypeInfo.Pointer.Size, |
| 385 | child: Expr, | 385 | child: Expr, |
| 386 | sentinel: bool = false, | 386 | sentinel: bool = false, |
| 387 | is_mutable: bool = true, | ||
| 387 | }, | 388 | }, |
| 388 | Array: struct { | 389 | Array: struct { |
| 389 | len: Expr, | 390 | len: Expr, |
| ... | @@ -485,6 +486,11 @@ const DocData = struct { | ... | @@ -485,6 +486,11 @@ const DocData = struct { |
| 485 | \\ | 486 | \\ |
| 486 | , .{v.sentinel}); | 487 | , .{v.sentinel}); |
| 487 | if (options.whitespace) |ws| try ws.outputIndent(w); | 488 | if (options.whitespace) |ws| try ws.outputIndent(w); |
| 489 | try w.print( | ||
| 490 | \\"is_mutable": {}, | ||
| 491 | \\ | ||
| 492 | , .{v.is_mutable}); | ||
| 493 | if (options.whitespace) |ws| try ws.outputIndent(w); | ||
| 488 | try w.print( | 494 | try w.print( |
| 489 | \\"child": | 495 | \\"child": |
| 490 | , .{}); | 496 | , .{}); |
| ... | @@ -759,6 +765,7 @@ fn walkInstruction( | ... | @@ -759,6 +765,7 @@ fn walkInstruction( |
| 759 | .Array = .{ | 765 | .Array = .{ |
| 760 | .len = .{ .int = .{ .value = str.len } }, | 766 | .len = .{ .int = .{ .value = str.len } }, |
| 761 | .child = .{ .type = @enumToInt(Ref.u8_type) }, | 767 | .child = .{ .type = @enumToInt(Ref.u8_type) }, |
| 768 | .sentinel = true, | ||
| 762 | }, | 769 | }, |
| 763 | }); | 770 | }); |
| 764 | // const sentinel: ?usize = if (ptr.flags.has_sentinel) 0 else null; | 771 | // const sentinel: ?usize = if (ptr.flags.has_sentinel) 0 else null; |
| ... | @@ -768,7 +775,7 @@ fn walkInstruction( | ... | @@ -768,7 +775,7 @@ fn walkInstruction( |
| 768 | .size = .One, | 775 | .size = .One, |
| 769 | .child = .{ .type = arrTypeId }, | 776 | .child = .{ .type = arrTypeId }, |
| 770 | .sentinel = true, | 777 | .sentinel = true, |
| 771 | // TODO: add sentinel! | 778 | .is_mutable = false, |
| 772 | }, | 779 | }, |
| 773 | }); | 780 | }); |
| 774 | break :blk .{ .type = ptrTypeId }; | 781 | break :blk .{ .type = ptrTypeId }; |
| ... | @@ -839,11 +846,12 @@ fn walkInstruction( | ... | @@ -839,11 +846,12 @@ fn walkInstruction( |
| 839 | .Pointer = .{ | 846 | .Pointer = .{ |
| 840 | .size = ptr.size, | 847 | .size = ptr.size, |
| 841 | .child = elem_type_ref.expr, | 848 | .child = elem_type_ref.expr, |
| 849 | .is_mutable = ptr.is_mutable, | ||
| 842 | }, | 850 | }, |
| 843 | }); | 851 | }); |
| 844 | 852 | ||
| 845 | return DocData.WalkResult{ | 853 | return DocData.WalkResult{ |
| 846 | .typeRef = .{ .type = elem_type_ref.expr.type }, | 854 | .typeRef = .{ .type = @enumToInt(Ref.type_type) }, |
| 847 | .expr = .{ .type = type_slot_index }, | 855 | .expr = .{ .type = type_slot_index }, |
| 848 | }; | 856 | }; |
| 849 | }, | 857 | }, |
| ... | @@ -861,14 +869,9 @@ fn walkInstruction( | ... | @@ -861,14 +869,9 @@ fn walkInstruction( |
| 861 | false, | 869 | false, |
| 862 | ); | 870 | ); |
| 863 | try self.types.append(self.arena, .{ | 871 | try self.types.append(self.arena, .{ |
| 864 | .Pointer = .{ | 872 | .Pointer = .{ .size = ptr.size, .child = elem_type_ref.expr, .sentinel = sentinel, .is_mutable = ptr.flags.is_mutable }, |
| 865 | .size = ptr.size, | ||
| 866 | .child = elem_type_ref.expr, | ||
| 867 | .sentinel = sentinel, | ||
| 868 | }, | ||
| 869 | }); | 873 | }); |
| 870 | return DocData.WalkResult{ | 874 | return DocData.WalkResult{ |
| 871 | // .typeRef = .{ .type = type_slot_index }, | ||
| 872 | .typeRef = .{ .type = @enumToInt(Ref.type_type) }, | 875 | .typeRef = .{ .type = @enumToInt(Ref.type_type) }, |
| 873 | .expr = .{ .type = type_slot_index }, | 876 | .expr = .{ .type = type_slot_index }, |
| 874 | }; | 877 | }; |