Commit 88d0e77b97
Changed files (3)
lib
lib/std/zig/ast.zig
@@ -262,6 +262,12 @@ pub const Tree = struct {
.extra_volatile_qualifier => {
return stream.writeAll("extra volatile qualifier");
},
+ .invalid_align => {
+ return stream.writeAll("alignment not allowed on arrays");
+ },
+ .invalid_bit_range => {
+ return stream.writeAll("bit range not allowed on slices and arrays");
+ },
.invalid_token => {
return stream.print("invalid token '{s}'", .{
token_tags[parse_error.token].symbol(),
@@ -2323,6 +2329,8 @@ pub const Error = struct {
extra_allowzero_qualifier,
extra_const_qualifier,
extra_volatile_qualifier,
+ invalid_align,
+ invalid_bit_range,
invalid_token,
same_line_doc_comment,
unattached_doc_comment,
lib/std/zig/parse.zig
@@ -1777,10 +1777,10 @@ const Parser = struct {
const mods = try p.parsePtrModifiers();
const elem_type = try p.expectTypeExpr();
if (mods.bit_range_start != 0) {
- @panic("TODO implement this error");
- //try p.warn(.{
- // .BitRangeInvalid = .{ .node = mods.bit_range_start },
- //});
+ try p.warnMsg(.{
+ .tag = .invalid_bit_range,
+ .token = p.nodes.items(.main_token)[mods.bit_range_start],
+ });
}
if (len_expr == 0) {
if (sentinel == 0) {
@@ -1816,10 +1816,10 @@ const Parser = struct {
}
} else {
if (mods.align_node != 0) {
- @panic("TODO implement this error");
- //try p.warn(.{
- // .AlignInvalid = .{ .node = mods.align_node },
- //});
+ try p.warnMsg(.{
+ .tag = .invalid_align,
+ .token = p.nodes.items(.main_token)[mods.align_node],
+ });
}
if (sentinel == 0) {
return p.addNode(.{
lib/std/zig/parser_test.zig
@@ -4032,6 +4032,22 @@ test "zig fmt: trailing comma should force multiline 1 column" {
// );
//}
+test "zig fmt: error for invalid bit range" {
+ try testError(
+ \\var x: []align(0:0:0)u8 = bar;
+ , &[_]Error{
+ .invalid_bit_range,
+ });
+}
+
+test "zig fmt: error for invalid align" {
+ try testError(
+ \\var x: [10]align(10)u8 = bar;
+ , &[_]Error{
+ .invalid_align,
+ });
+}
+
test "recovery: top level" {
try testError(
\\test "" {inline}