Commit 878e99d580
Changed files (2)
lib
std
lib/std/zig/parse.zig
@@ -985,7 +985,7 @@ const Parser = struct {
};
const else_token = p.eatToken(.keyword_else) orelse {
if (else_required) {
- return p.fail(.expected_semi_or_else);
+ try p.warn(.expected_semi_or_else);
}
return p.addNode(.{
.tag = .if_simple,
@@ -1079,7 +1079,7 @@ const Parser = struct {
};
const else_token = p.eatToken(.keyword_else) orelse {
if (else_required) {
- return p.fail(.expected_semi_or_else);
+ try p.warn(.expected_semi_or_else);
}
return p.addNode(.{
.tag = .for_simple,
@@ -1154,7 +1154,7 @@ const Parser = struct {
};
const else_token = p.eatToken(.keyword_else) orelse {
if (else_required) {
- return p.fail(.expected_semi_or_else);
+ try p.warn(.expected_semi_or_else);
}
if (cont_expr == 0) {
return p.addNode(.{
lib/std/zig/parser_test.zig
@@ -4222,39 +4222,39 @@ test "recovery: invalid global error set access" {
});
}
-//test "recovery: invalid asterisk after pointer dereference" {
-// try testError(
-// \\test "" {
-// \\ var sequence = "repeat".*** 10;
-// \\}
-// , &[_]Error{
-// .asterisk_after_ptr_deref,
-// });
-// try testError(
-// \\test "" {
-// \\ var sequence = "repeat".** 10&&a;
-// \\}
-// , &[_]Error{
-// .asterisk_after_ptr_deref,
-// .invalid_and,
-// });
-//}
+test "recovery: invalid asterisk after pointer dereference" {
+ try testError(
+ \\test "" {
+ \\ var sequence = "repeat".*** 10;
+ \\}
+ , &[_]Error{
+ .asterisk_after_ptr_deref,
+ });
+ try testError(
+ \\test "" {
+ \\ var sequence = "repeat".** 10&&a;
+ \\}
+ , &[_]Error{
+ .asterisk_after_ptr_deref,
+ .invalid_and,
+ });
+}
-//test "recovery: missing semicolon after if, for, while stmt" {
-// try testError(
-// \\test "" {
-// \\ if (foo) bar
-// \\ for (foo) |a| bar
-// \\ while (foo) bar
-// \\ a && b;
-// \\}
-// , &[_]Error{
-// .expected_semi_or_else,
-// .expected_semi_or_else,
-// .expected_semi_or_else,
-// .invalid_and,
-// });
-//}
+test "recovery: missing semicolon after if, for, while stmt" {
+ try testError(
+ \\test "" {
+ \\ if (foo) bar
+ \\ for (foo) |a| bar
+ \\ while (foo) bar
+ \\ a && b;
+ \\}
+ , &[_]Error{
+ .expected_semi_or_else,
+ .expected_semi_or_else,
+ .expected_semi_or_else,
+ .invalid_and,
+ });
+}
test "recovery: invalid comptime" {
try testError(