aboutsummaryrefslogtreecommitdiff
path: root/src/stage1/parser.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-05-08 10:53:22 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-05-08 10:53:22 -0700
commitb6bb0ee1acd6fb9e3360f35d7b63687f755785f6 (patch)
tree34f42b24cc683d13a9e78bd27f914dfee00c37b0 /src/stage1/parser.cpp
parent28353b315935e54b497f4abb875fac387e20f65f (diff)
parent84d5cc31c560749eda1e36b7bc9e6cf542eee550 (diff)
downloadzig-b6bb0ee1acd6fb9e3360f35d7b63687f755785f6.tar.gz
zig-b6bb0ee1acd6fb9e3360f35d7b63687f755785f6.zip
Merge remote-tracking branch 'origin/master' into stage2-whole-file-astgen
Conflicts: * lib/std/os/linux/tls.zig * test/behavior/align.zig * test/behavior/atomics.zig * test/behavior/vector.zig
Diffstat (limited to 'src/stage1/parser.cpp')
-rw-r--r--src/stage1/parser.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/stage1/parser.cpp b/src/stage1/parser.cpp
index d57277cd51..f152f245b7 100644
--- a/src/stage1/parser.cpp
+++ b/src/stage1/parser.cpp
@@ -825,7 +825,16 @@ static AstNode *ast_parse_fn_proto(ParseContext *pc) {
AstNode *return_type = nullptr;
if (anytype == nullptr) {
exmark = eat_token_if(pc, TokenIdBang);
- return_type = ast_expect(pc, ast_parse_type_expr);
+ return_type = ast_parse_type_expr(pc);
+ if (return_type == nullptr) {
+ Token *next = peek_token(pc);
+ ast_error(
+ pc,
+ next,
+ "expected return type (use 'void' to return nothing), found: '%s'",
+ token_name(next->id)
+ );
+ }
}
AstNode *res = ast_create_node(pc, NodeTypeFnProto, first);