aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorJimmi Holst Christensen <jhc@liab.dk>2018-11-13 14:37:03 +0100
committerJimmi Holst Christensen <jhc@liab.dk>2018-11-13 14:43:08 +0100
commit5b3f7a8e1f5cc0448d4100dc98f947a7cd7c5723 (patch)
tree670e2f1fee29c0bbb7cf012d72ac2c8b9f5781ad /src/parser.cpp
parent8139c5a516eaa217ed76acdf09496895451c5c5c (diff)
downloadzig-5b3f7a8e1f5cc0448d4100dc98f947a7cd7c5723.tar.gz
zig-5b3f7a8e1f5cc0448d4100dc98f947a7cd7c5723.zip
Fixed error where we didn't expect the return type of a function
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 01c4f45e1b..0864e7ed1b 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -812,7 +812,7 @@ static AstNode *ast_parse_fn_proto(ParseContext *pc) {
AstNode *return_type = nullptr;
if (var == nullptr) {
exmark = eat_token_if(pc, TokenIdBang);
- return_type = ast_parse_type_expr(pc);
+ return_type = ast_expect(pc, ast_parse_type_expr);
}
AstNode *res = ast_create_node(pc, NodeTypeFnProto, first);
@@ -1606,6 +1606,7 @@ static AstNode *ast_parse_suffix_expr(ParseContext *pc) {
// / FLOAT
// / FnProto
// / GroupedExpr
+// / LabeledTypeExpr
// / IDENTIFIER
// / IfTypeExpr
// / INTEGER
@@ -1618,7 +1619,6 @@ static AstNode *ast_parse_suffix_expr(ParseContext *pc) {
// / KEYWORD_true
// / KEYWORD_undefined
// / KEYWORD_unreachable
-// / LabeledTypeExpr
// / STRINGLITERAL
// / SwitchExpr
static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {
@@ -1682,6 +1682,10 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {
if (grouped_expr != nullptr)
return grouped_expr;
+ AstNode *labeled_type_expr = ast_parse_labeled_type_expr(pc);
+ if (labeled_type_expr != nullptr)
+ return labeled_type_expr;
+
Token *identifier = eat_token_if(pc, TokenIdSymbol);
if (identifier != nullptr)
return token_symbol(pc, identifier);
@@ -1750,10 +1754,6 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {
if (unreachable != nullptr)
return ast_create_node(pc, NodeTypeUnreachable, unreachable);
- AstNode *labeled_type_expr = ast_parse_labeled_type_expr(pc);
- if (labeled_type_expr != nullptr)
- return labeled_type_expr;
-
Token *string_lit = eat_token_if(pc, TokenIdStringLiteral);
if (string_lit != nullptr) {
AstNode *res = ast_create_node(pc, NodeTypeStringLiteral, string_lit);