aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2021-03-22 14:54:13 +0100
committerIsaac Freund <ifreund@ifreund.xyz>2021-03-22 14:54:13 +0100
commit8111453cc12f7908110850cf64efedb9c69ede98 (patch)
tree80c6774eda1c73f3b45e04989840f734756d7b19 /lib/std
parent4f3071a8172b1e5d0aa22c07471de2056df1608a (diff)
downloadzig-8111453cc12f7908110850cf64efedb9c69ede98.tar.gz
zig-8111453cc12f7908110850cf64efedb9c69ede98.zip
astgen: implement array types
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/zig/ast.zig9
-rw-r--r--lib/std/zig/render.zig6
2 files changed, 8 insertions, 7 deletions
diff --git a/lib/std/zig/ast.zig b/lib/std/zig/ast.zig
index 0b0459ec88..cb3ea3ecf3 100644
--- a/lib/std/zig/ast.zig
+++ b/lib/std/zig/ast.zig
@@ -1430,7 +1430,7 @@ pub const Tree = struct {
.ast = .{
.lbracket = tree.nodes.items(.main_token)[node],
.elem_count = data.lhs,
- .sentinel = null,
+ .sentinel = 0,
.elem_type = data.rhs,
},
};
@@ -1440,6 +1440,7 @@ pub const Tree = struct {
assert(tree.nodes.items(.tag)[node] == .array_type_sentinel);
const data = tree.nodes.items(.data)[node];
const extra = tree.extraData(data.rhs, Node.ArrayTypeSentinel);
+ assert(extra.sentinel != 0);
return .{
.ast = .{
.lbracket = tree.nodes.items(.main_token)[node],
@@ -2262,7 +2263,7 @@ pub const full = struct {
pub const Ast = struct {
lbracket: TokenIndex,
elem_count: Node.Index,
- sentinel: ?Node.Index,
+ sentinel: Node.Index,
elem_type: Node.Index,
};
};
@@ -2549,9 +2550,9 @@ pub const Node = struct {
@"await",
/// `?lhs`. rhs unused. main_token is the `?`.
optional_type,
- /// `[lhs]rhs`. lhs can be omitted to make it a slice.
+ /// `[lhs]rhs`.
array_type,
- /// `[lhs:a]b`. `array_type_sentinel[rhs]`.
+ /// `[lhs:a]b`. `ArrayTypeSentinel[rhs]`.
array_type_sentinel,
/// `[*]align(lhs) rhs`. lhs can be omitted.
/// `*align(lhs) rhs`. lhs can be omitted.
diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig
index 640f25829a..7add8383f3 100644
--- a/lib/std/zig/render.zig
+++ b/lib/std/zig/render.zig
@@ -717,9 +717,9 @@ fn renderArrayType(
ais.pushIndentNextLine();
try renderToken(ais, tree, array_type.ast.lbracket, inner_space); // lbracket
try renderExpression(gpa, ais, tree, array_type.ast.elem_count, inner_space);
- if (array_type.ast.sentinel) |sentinel| {
- try renderToken(ais, tree, tree.firstToken(sentinel) - 1, inner_space); // colon
- try renderExpression(gpa, ais, tree, sentinel, inner_space);
+ if (array_type.ast.sentinel != 0) {
+ try renderToken(ais, tree, tree.firstToken(array_type.ast.sentinel) - 1, inner_space); // colon
+ try renderExpression(gpa, ais, tree, array_type.ast.sentinel, inner_space);
}
ais.popIndent();
try renderToken(ais, tree, rbracket, .none); // rbracket