aboutsummaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/parser.c b/src/parser.c
index dc39a6a..be19a33 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -290,14 +290,9 @@ void parser_parse_var_type(Parser *self, VariableType *result) {
if(match)
result->variable_type_flags |= VARIABLE_TYPE_FLAG_OPTIONAL;
- throw_if_error(tokenizer_consume_if(&self->tokenizer, TOK_BINOP, &match));
- if(match) {
- if(self->tokenizer.value.binop_type != BINOP_MUL) {
- self->error = tokenizer_create_error(&self->tokenizer, tokenizer_get_error_index(&self->tokenizer), "Expected '*', type or closure signature");
- throw(PARSER_UNEXPECTED_TOKEN);
- }
+ throw_if_error(tokenizer_consume_if(&self->tokenizer, TOK_AMPERSAND, &match));
+ if(match)
result->variable_type_flags |= VARIABLE_TYPE_FLAG_BORROW;
- }
throw_if_error(tokenizer_consume_if(&self->tokenizer, TOK_IDENTIFIER, &match));
if(match) {
@@ -329,7 +324,7 @@ void parser_parse_var_type_def(Parser *self, VariableType *result) {
if(result->type == VARIABLE_TYPE_NONE) {
self->error = tokenizer_create_error(&self->tokenizer,
tokenizer_get_error_index(&self->tokenizer),
- "Expected type or closure signature");
+ "Expected '?', '&', type or closure signature");
throw(PARSER_UNEXPECTED_TOKEN);
}
}