aboutsummaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/parser.c b/src/parser.c
index b075f79e6..b12da1feb 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -2070,7 +2070,7 @@ AstNode *parse_proc_type(AstFile *f) {
}
-AstNodeArray parse_parameter_list(AstFile *f) {
+AstNodeArray parse_parameter_list(AstFile *f, bool allow_using) {
AstNodeArray params = make_ast_node_array(f);
while (f->curr_token.kind == Token_Ident ||
@@ -2090,6 +2090,11 @@ AstNodeArray parse_parameter_list(AstFile *f) {
is_using = false;
}
+ if (!allow_using && is_using) {
+ syntax_error(f->curr_token, "`using` is not allowed within this parameter list");
+ is_using = false;
+ }
+
expect_token_after(f, Token_Colon, "parameter list");
AstNode *type = NULL;
@@ -2405,7 +2410,7 @@ Token parse_proc_signature(AstFile *f,
AstNodeArray *results) {
Token proc_token = expect_token(f, Token_proc);
expect_token(f, Token_OpenParen);
- *params = parse_parameter_list(f);
+ *params = parse_parameter_list(f, true);
expect_token_after(f, Token_CloseParen, "parameter list");
*results = parse_results(f);
return proc_token;