authorgravatar for vallahor91@gmail.comVallahor <vallahor91@gmail.com> 2022-05-27 03:39:12-03:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-19 19:10:11-07:00
log76e934dba802fb7f0fdc7ed9f3d8d1561078132a
tree2866337ab3301388dc8934d036fe6245ea6df073
parentc449788b11d0184b356c6258fad33cc20813fd7d

fix: comptime not showing in all anytype params anymore. add: pointer flags


2 files changed, 67 insertions(+), 17 deletions(-)

lib/docs/main.js+12-7
......@@ -1210,6 +1210,7 @@ var zigAnalysis;
12101210 let sentinel = ptrObj.sentinel ? ":"+exprName(ptrObj.sentinel, opts) : "";
12111211 let is_mutable = !ptrObj.is_mutable ? "const " : "";
12121212 let name = "";
1213 console.log(ptrObj);
12131214 switch (ptrObj.size) {
12141215 default:
12151216 console.log("TODO: implement unhandled pointer size case");
......@@ -1236,21 +1237,25 @@ var zigAnalysis;
12361237 name += is_mutable;
12371238 break;
12381239 }
1239 if (ptrObj['const']) {
1240 if (!ptrObj.is_mutable) {
12401241 if (opts.wantHtml) {
12411242 name += '<span class="tok-kw">const</span> ';
12421243 } else {
12431244 name += "const ";
12441245 }
12451246 }
1246 if (ptrObj['volatile']) {
1247 if (opts.wantHtml) {
1248 name += '<span class="tok-kw">volatile</span> ';
1249 } else {
1247 if (ptrObj.is_allowzero) {
1248 name += "allowzero ";
1249 }
1250 if (ptrObj.is_volatile) {
12501251 name += "volatile ";
1251 }
12521252 }
1253 if (ptrObj.align != null) {
1253 if (ptrObj.has_addrspace) {
1254 name += "addrspace(";
1255 name += "." + "";
1256 name += ") ";
1257 }
1258 if (ptrObj.has_align) {
12541259 if (opts.wantHtml) {
12551260 name += '<span class="tok-kw">align</span>(';
12561261 } else {
src/Autodoc.zig+55-10
......@@ -400,7 +400,13 @@ const DocData = struct {
400400 size: std.builtin.TypeInfo.Pointer.Size,
401401 child: Expr,
402402 sentinel: ?Expr = null,
403 is_mutable: bool = true,
403 is_allowzero: bool = false,
404 is_mutable: bool = false,
405 is_volatile: bool = false,
406 has_sentinel: bool = false,
407 has_align: bool = false,
408 has_addrspace: bool = false,
409 has_bit_range: bool = false,
404410 },
405411 Array: struct {
406412 len: Expr,
......@@ -507,9 +513,15 @@ const DocData = struct {
507513 try w.print(",", .{});
508514 }
509515 try w.print(
516 \\"is_allowzero": {},
510517 \\"is_mutable": {},
518 \\"is_volatile": {},
519 \\"has_sentinel": {},
520 \\"has_align": {},
521 \\"has_addrspace": {},
522 \\"has_bit_range": {},
511523 \\
512 , .{v.is_mutable});
524 , .{ v.is_allowzero, v.is_mutable, v.is_volatile, v.has_sentinel, v.has_align, v.has_addrspace, v.has_bit_range });
513525 if (options.whitespace) |ws| try ws.outputIndent(w);
514526 try w.print(
515527 \\"child":
......@@ -880,11 +892,7 @@ fn walkInstruction(
880892 const type_slot_index = self.types.items.len;
881893 const elem_type_ref = try self.walkRef(file, parent_scope, ptr.elem_type, false);
882894 try self.types.append(self.arena, .{
883 .Pointer = .{
884 .size = ptr.size,
885 .child = elem_type_ref.expr,
886 .is_mutable = ptr.is_mutable,
887 },
895 .Pointer = .{ .size = ptr.size, .child = elem_type_ref.expr, .is_mutable = ptr.is_mutable, .is_volatile = ptr.is_volatile, .is_allowzero = ptr.is_allowzero },
888896 });
889897
890898 return DocData.WalkResult{
......@@ -904,8 +912,10 @@ fn walkInstruction(
904912 false,
905913 );
906914
915 const sentinel: ?DocData.Expr = if (ptr.flags.has_sentinel) DocData.Expr{ .int = .{ .value = 0, .negated = false } } else null;
916
907917 try self.types.append(self.arena, .{
908 .Pointer = .{ .size = ptr.size, .child = elem_type_ref.expr, .sentinel = .{ .int = .{ .value = 0, .negated = false } }, .is_mutable = ptr.flags.is_mutable },
918 .Pointer = .{ .size = ptr.size, .child = elem_type_ref.expr, .sentinel = sentinel, .is_mutable = ptr.flags.is_mutable, .has_align = ptr.flags.has_align, .has_sentinel = ptr.flags.has_sentinel, .is_volatile = ptr.flags.is_volatile, .has_addrspace = ptr.flags.has_addrspace, .has_bit_range = ptr.flags.has_bit_range },
909919 });
910920 return DocData.WalkResult{
911921 .typeRef = .{ .type = @enumToInt(Ref.type_type) },
......@@ -1194,6 +1204,20 @@ fn walkInstruction(
11941204 .expr = .{ .float = float },
11951205 };
11961206 },
1207 .float128 => {
1208 const pl_node = data[inst_index].pl_node;
1209 const extra = file.zir.extraData(Zir.Inst.Float128, pl_node.payload_index);
1210 _ = pl_node;
1211 _ = extra;
1212
1213 // printWithContext(
1214 // file,
1215 // inst_index,
1216 // "TODO: implement `{s}` for walkInstruction\n\n",
1217 // .{@tagName(tags[inst_index])},
1218 // );
1219 return self.cteTodo(@tagName(tags[inst_index]));
1220 },
11971221 .negate => {
11981222 const un_node = data[inst_index].un_node;
11991223 var operand: DocData.WalkResult = try self.walkRef(
......@@ -1481,6 +1505,27 @@ fn walkInstruction(
14811505 .expr = .{ .@"struct" = field_vals },
14821506 };
14831507 },
1508 .struct_init_empty => {
1509 const un_node = data[inst_index].un_node;
1510 var operand: DocData.WalkResult = try self.walkRef(
1511 file,
1512 parent_scope,
1513 un_node.operand,
1514 false,
1515 );
1516
1517 _ = operand;
1518
1519 // WIP
1520
1521 printWithContext(
1522 file,
1523 inst_index,
1524 "TODO: implement `{s}` for walkInstruction\n\n",
1525 .{@tagName(tags[inst_index])},
1526 );
1527 return self.cteTodo(@tagName(tags[inst_index]));
1528 },
14841529 .error_set_decl => {
14851530 const pl_node = data[inst_index].pl_node;
14861531 const extra = file.zir.extraData(Zir.Inst.ErrorSetDecl, pl_node.payload_index);
......@@ -1630,7 +1675,7 @@ fn walkInstruction(
16301675 .negated = false,
16311676 },
16321677 },
1633 .child = array_type.?,
1678 .child = .{ .type = 0 },
16341679 },
16351680 });
16361681 const result = DocData.WalkResult{
......@@ -2657,7 +2702,7 @@ fn analyzeFunction(
26572702 self.ast_nodes.appendAssumeCapacity(.{
26582703 .name = name,
26592704 .docs = "",
2660 .@"comptime" = true,
2705 .@"comptime" = tags[param_index] == .param_anytype_comptime,
26612706 });
26622707
26632708 param_type_refs.appendAssumeCapacity(