Commit 11eb11d7d6

Vallahor <vallahor91@gmail.com>
2022-05-28 11:37:25
fix: slices
1 parent f04f23a
Changed files (2)
lib
docs
src
lib/docs/main.js
@@ -1193,7 +1193,7 @@ var zigAnalysis;
                     let name = "[";
                     let lenName = exprName(arrayObj.len, opts);
                     let sentinel = arrayObj.sentinel ? ":"+exprName(arrayObj.sentinel, opts) : "";
-                    let is_mutable = arrayObj.is_multable ? "const " : "";
+                    // let is_mutable = arrayObj.is_multable ? "const " : "";
 
                     if (opts.wantHtml) {
                       name +=
@@ -1202,7 +1202,7 @@ var zigAnalysis;
                       name += lenName + sentinel;
                     }
                     name += "]";
-                    name += is_mutable;
+                    // name += is_mutable;
                     name += exprName(arrayObj.child, opts);
                     return name;
                   }
@@ -1240,13 +1240,14 @@ var zigAnalysis;
                               name += is_mutable;
                               break;
                       }
-                      if (!ptrObj.is_mutable) {
-                          if (opts.wantHtml) {
-                              name += '<span class="tok-kw">const</span> ';
-                          } else {
-                              name += "const ";
-                          }
-                      }
+                      // @check: after the major changes in arrays the consts are came from switch above
+                      // if (!ptrObj.is_mutable) {
+                      //     if (opts.wantHtml) {
+                      //         name += '<span class="tok-kw">const</span> ';
+                      //     } else {
+                      //         name += "const ";
+                      //     }
+                      // }
                       if (ptrObj.is_allowzero) {
                               name += "allowzero ";
                       }
src/Autodoc.zig
@@ -536,9 +536,9 @@ const DocData = struct {
                         \\
                     , .{ v.is_allowzero, v.is_mutable, v.is_volatile, v.has_sentinel, v.has_align, v.has_addrspace, v.has_bit_range });
                     if (options.whitespace) |ws| try ws.outputIndent(w);
-                    try w.print(
-                        \\"child":
-                    , .{});
+                    // try w.print(
+                    //     \\"child":
+                    // , .{});
 
                     if (options.whitespace) |*ws| ws.indent_level += 1;
                     try v.child.jsonStringify(options, w);
@@ -924,8 +924,8 @@ fn walkInstruction(
         },
         .ptr_type_simple => {
             const ptr = data[inst_index].ptr_type_simple;
-            const type_slot_index = self.types.items.len;
             const elem_type_ref = try self.walkRef(file, parent_scope, ptr.elem_type, false);
+            const type_slot_index = self.types.items.len;
             try self.types.append(self.arena, .{
                 .Pointer = .{ .size = ptr.size, .child = elem_type_ref.expr, .is_mutable = ptr.is_mutable, .is_volatile = ptr.is_volatile, .is_allowzero = ptr.is_allowzero },
             });
@@ -948,7 +948,6 @@ fn walkInstruction(
             );
 
             const sentinel: ?DocData.Expr = if (ptr.flags.has_sentinel) DocData.Expr{ .int = .{ .value = 0, .negated = false } } else null;
-
             try self.types.append(self.arena, .{
                 .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 },
             });
@@ -1021,14 +1020,11 @@ fn walkInstruction(
             }
 
             const type_slot_index = self.types.items.len;
-            try self.types.append(self.arena, .{
-                .Array = .{ .len = .{
-                    .int = .{
-                        .value = operands.len,
-                        .negated = false,
-                    },
-                }, .child = array_type.? },
-            });
+            try self.types.append(self.arena, .{ .Pointer = .{
+                .size = .Slice,
+                .child = array_type.?,
+                .is_mutable = true,
+            } });
 
             return DocData.WalkResult{
                 .typeRef = .{ .type = type_slot_index },
@@ -1061,14 +1057,7 @@ fn walkInstruction(
             }
 
             const type_slot_index = self.types.items.len;
-            try self.types.append(self.arena, .{
-                .Array = .{ .len = .{
-                    .int = .{
-                        .value = operands.len - 1,
-                        .negated = false,
-                    },
-                }, .child = array_type.?, .sentinel = sentinel },
-            });
+            try self.types.append(self.arena, .{ .Pointer = .{ .size = .Slice, .child = array_type.?, .is_mutable = true, .sentinel = sentinel } });
 
             return DocData.WalkResult{
                 .typeRef = .{ .type = type_slot_index },
@@ -1180,14 +1169,7 @@ fn walkInstruction(
             }
 
             const type_slot_index = self.types.items.len;
-            try self.types.append(self.arena, .{
-                .Array = .{ .len = .{
-                    .int = .{
-                        .value = operands.len - 1,
-                        .negated = false,
-                    },
-                }, .child = array_type.?, .sentinel = sentinel },
-            });
+            try self.types.append(self.arena, .{ .Pointer = .{ .size = .Slice, .child = array_type.?, .is_mutable = true, .sentinel = sentinel } });
 
             return DocData.WalkResult{
                 .typeRef = .{ .type = type_slot_index },
@@ -1198,9 +1180,7 @@ fn walkInstruction(
             const pl_node = data[inst_index].pl_node;
             const extra = file.zir.extraData(Zir.Inst.MultiOp, pl_node.payload_index);
             const operands = file.zir.refSlice(extra.end, extra.data.operands_len);
-            const array_data = try self.arena.alloc(usize, operands.len - 1);
-
-            var sentinel: ?DocData.Expr = null;
+            const array_data = try self.arena.alloc(usize, operands.len);
 
             var array_type: ?DocData.Expr = null;
             for (operands) |op, idx| {
@@ -1209,22 +1189,22 @@ fn walkInstruction(
                     array_type = wr.typeRef;
                 }
 
-                if (idx == extra.data.operands_len - 1) {
-                    sentinel = wr.expr;
-                    const expr_index = self.exprs.items.len;
-                    try self.exprs.append(self.arena, wr.expr);
-                    array_data[idx] = expr_index;
-                }
+                const expr_index = self.exprs.items.len;
+                try self.exprs.append(self.arena, wr.expr);
+                array_data[idx] = expr_index;
             }
 
             const type_slot_index = self.types.items.len;
             try self.types.append(self.arena, .{
-                .Array = .{ .len = .{
-                    .int = .{
-                        .value = operands.len - 1,
-                        .negated = false,
+                .Array = .{
+                    .len = .{
+                        .int = .{
+                            .value = operands.len - 1,
+                            .negated = false,
+                        },
                     },
-                }, .child = array_type.?, .sentinel = sentinel },
+                    .child = array_type.?,
+                },
             });
 
             return DocData.WalkResult{
@@ -1239,20 +1219,6 @@ fn walkInstruction(
                 .expr = .{ .float = float },
             };
         },
-        .float128 => {
-            const pl_node = data[inst_index].pl_node;
-            const extra = file.zir.extraData(Zir.Inst.Float128, pl_node.payload_index);
-            _ = pl_node;
-            _ = extra;
-
-            // printWithContext(
-            //     file,
-            //     inst_index,
-            //     "TODO: implement `{s}` for walkInstruction\n\n",
-            //     .{@tagName(tags[inst_index])},
-            // );
-            return self.cteTodo(@tagName(tags[inst_index]));
-        },
         .negate => {
             const un_node = data[inst_index].un_node;
             var operand: DocData.WalkResult = try self.walkRef(
@@ -2793,13 +2759,13 @@ fn analyzeFunction(
         .func_extended => blk: {
             const inst_data = data[inst_index].pl_node;
             const extra = file.zir.extraData(Zir.Inst.ExtendedFunc, inst_data.payload_index);
-
             var cc_index: ?usize = null;
             if (extra.data.bits.has_cc) {
                 const cc_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra.end]);
                 _ = try self.walkRef(file, scope, cc_ref, false);
                 cc_index = self.types.items.len - 1;
             }
+
             break :blk .{
                 .Fn = .{
                     .name = "todo_name func",
@@ -3043,25 +3009,21 @@ fn walkRef(
             // TODO: dunno what to do with those
             // .calling_convention_type => {
             //     return DocData.WalkResult{
-            //         .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+            //         .typeRef = .{ .type = @enumToInt(Ref.calling_convention_type) },
             //         .expr = .{ .int = .{ .value = 1 } },
             //     };
             // },
             // .calling_convention_c => {
             //     return DocData.WalkResult{
-            //         .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+            //         .typeRef = .{ .type = @enumToInt(Ref.calling_convention_c) },
             //         .expr = .{ .int = .{ .value = 1 } },
             //     };
             // },
             // .calling_convention_inline => {
             //     return DocData.WalkResult{
-            //         .typeRef = .{ .type = @enumToInt(Ref.comptime_int_type) },
+            //         .typeRef = .{ .type = @enumToInt(Ref.calling_convention_inline) },
             //         .expr = .{ .int = .{ .value = 1 } },
             //     };
-            //     // return DocData.WalkResult{ .int = .{
-            //     //     .type = @enumToInt(Ref.comptime_int_type),
-            //     //     .value = 1,
-            //     // } };
             // },
             // .generic_poison => {
             //     return DocData.WalkResult{ .int = .{