mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
parse: implement error for invalid bit range and alignment
This commit is contained in:
parent
4074e79748
commit
88d0e77b97
@ -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,
|
||||
|
||||
@ -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(.{
|
||||
|
||||
@ -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}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user