diff options
author | dec05eba <dec05eba@protonmail.com> | 2019-09-29 23:47:52 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-07-25 14:36:46 +0200 |
commit | f5dc9ad48db4d22e7d6f15e340063dc7cb14c1e1 (patch) | |
tree | 4465a81a77e936dc2ed6ecd90183ba6af9cc2dae /src/parser.c | |
parent | c811a743a1528db1d05970e1aa14162ef7c70b75 (diff) |
Implicit cast from str to ?&c_char, fix use of parameters (to use sys v registers)
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 11 |
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); } } |