From 2b0a8fda5f717e95852f29d0ac462f3d845e5d31 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 12 Oct 2021 17:41:48 +0200 Subject: Fix error column not matching for list parse error --- src/bootstrap/parser.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/bootstrap/parser.c b/src/bootstrap/parser.c index c84c6c6..c4fcbb8 100644 --- a/src/bootstrap/parser.c +++ b/src/bootstrap/parser.c @@ -39,12 +39,6 @@ Object * parse_list(Visitor *vs) { Token tok = peek_token(vs); if (tok.type == TOKEN_EOF) { - error_push((Error){ - .type = ERR_TYPE_PARSER, - .value = ERR_UNBALANCED_PAREN, - .line = tok.line, - .col = tok.column, - }); return obj_err; } Object *next_obj = parse_tree(vs); @@ -60,12 +54,6 @@ parse_list(Visitor *vs) { break; } if (tok.type == TOKEN_EOF) { - error_push((Error){ - .type = ERR_TYPE_PARSER, - .value = ERR_UNBALANCED_PAREN, - .line = tok.line, - .col = tok.column, - }); free_objects(root); return obj_err; } @@ -113,7 +101,16 @@ parse_tree(Visitor *vs) { return obj_err; } break; case TOKEN_LPAREN: { - return parse_list(vs); + Object *obj = parse_list(vs); + if (obj == obj_err) { + error_push((Error){ + .type = ERR_TYPE_PARSER, + .value = ERR_UNBALANCED_PAREN, + .line = tok.line, + .col = tok.column, + }); + } + return obj; } break; case TOKEN_STRING: { Object *obj = make_string(); -- cgit v1.2.1