mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
fix: printing const in types and fn decl and sentinel in strings
This commit is contained in:
parent
019fd45617
commit
21fd4a7a8b
@ -1134,6 +1134,7 @@ var zigAnalysis;
|
||||
let name = "[";
|
||||
let lenName = exprName(arrayObj.len, opts);
|
||||
let sentinel = arrayObj.sentinel ? ":0" : "";
|
||||
let is_mutable = arrayObj.is_multable ? "const " : "";
|
||||
|
||||
if (opts.wantHtml) {
|
||||
name +=
|
||||
@ -1142,6 +1143,7 @@ var zigAnalysis;
|
||||
name += lenName + sentinel;
|
||||
}
|
||||
name += "]";
|
||||
name += is_mutable;
|
||||
name += exprName(arrayObj.child, opts);
|
||||
return name;
|
||||
}
|
||||
@ -1151,27 +1153,32 @@ var zigAnalysis;
|
||||
{
|
||||
let ptrObj = /** @type {PointerType} */(typeObj);
|
||||
let sentinel = ptrObj.sentinel ? ":0" : "";
|
||||
let is_mutable = !ptrObj.is_mutable ? "const " : "";
|
||||
let name = "";
|
||||
switch (ptrObj.size) {
|
||||
default:
|
||||
console.log("TODO: implement unhandled pointer size case");
|
||||
case pointerSizeEnum.One:
|
||||
name += "*";
|
||||
name += is_mutable;
|
||||
break;
|
||||
case pointerSizeEnum.Many:
|
||||
name += "[*";
|
||||
name += sentinel;
|
||||
name += "]";
|
||||
name += is_mutable;
|
||||
break;
|
||||
case pointerSizeEnum.Slice:
|
||||
name += "[";
|
||||
name += sentinel;
|
||||
name += "]";
|
||||
name += is_mutable;
|
||||
break;
|
||||
case pointerSizeEnum.C:
|
||||
name += "[*c";
|
||||
name += sentinel;
|
||||
name += "]";
|
||||
name += is_mutable;
|
||||
break;
|
||||
}
|
||||
if (ptrObj['const']) {
|
||||
|
||||
@ -384,6 +384,7 @@ const DocData = struct {
|
||||
size: std.builtin.TypeInfo.Pointer.Size,
|
||||
child: Expr,
|
||||
sentinel: bool = false,
|
||||
is_mutable: bool = true,
|
||||
},
|
||||
Array: struct {
|
||||
len: Expr,
|
||||
@ -485,6 +486,11 @@ const DocData = struct {
|
||||
\\
|
||||
, .{v.sentinel});
|
||||
if (options.whitespace) |ws| try ws.outputIndent(w);
|
||||
try w.print(
|
||||
\\"is_mutable": {},
|
||||
\\
|
||||
, .{v.is_mutable});
|
||||
if (options.whitespace) |ws| try ws.outputIndent(w);
|
||||
try w.print(
|
||||
\\"child":
|
||||
, .{});
|
||||
@ -759,6 +765,7 @@ fn walkInstruction(
|
||||
.Array = .{
|
||||
.len = .{ .int = .{ .value = str.len } },
|
||||
.child = .{ .type = @enumToInt(Ref.u8_type) },
|
||||
.sentinel = true,
|
||||
},
|
||||
});
|
||||
// const sentinel: ?usize = if (ptr.flags.has_sentinel) 0 else null;
|
||||
@ -768,7 +775,7 @@ fn walkInstruction(
|
||||
.size = .One,
|
||||
.child = .{ .type = arrTypeId },
|
||||
.sentinel = true,
|
||||
// TODO: add sentinel!
|
||||
.is_mutable = false,
|
||||
},
|
||||
});
|
||||
break :blk .{ .type = ptrTypeId };
|
||||
@ -839,11 +846,12 @@ fn walkInstruction(
|
||||
.Pointer = .{
|
||||
.size = ptr.size,
|
||||
.child = elem_type_ref.expr,
|
||||
.is_mutable = ptr.is_mutable,
|
||||
},
|
||||
});
|
||||
|
||||
return DocData.WalkResult{
|
||||
.typeRef = .{ .type = elem_type_ref.expr.type },
|
||||
.typeRef = .{ .type = @enumToInt(Ref.type_type) },
|
||||
.expr = .{ .type = type_slot_index },
|
||||
};
|
||||
},
|
||||
@ -861,14 +869,9 @@ fn walkInstruction(
|
||||
false,
|
||||
);
|
||||
try self.types.append(self.arena, .{
|
||||
.Pointer = .{
|
||||
.size = ptr.size,
|
||||
.child = elem_type_ref.expr,
|
||||
.sentinel = sentinel,
|
||||
},
|
||||
.Pointer = .{ .size = ptr.size, .child = elem_type_ref.expr, .sentinel = sentinel, .is_mutable = ptr.flags.is_mutable },
|
||||
});
|
||||
return DocData.WalkResult{
|
||||
// .typeRef = .{ .type = type_slot_index },
|
||||
.typeRef = .{ .type = @enumToInt(Ref.type_type) },
|
||||
.expr = .{ .type = type_slot_index },
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user