aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-12 17:41:48 +0200
committerBad Diode <bd@badd10de.dev>2021-10-12 17:41:48 +0200
commit2b0a8fda5f717e95852f29d0ac462f3d845e5d31 (patch)
tree2f62af7b37e9f7c9b388d4e54da6d715a18dd18c
parentaf372e9cb20abdd4645a3b4987589e30cc44bcf3 (diff)
downloadbdl-2b0a8fda5f717e95852f29d0ac462f3d845e5d31.tar.gz
bdl-2b0a8fda5f717e95852f29d0ac462f3d845e5d31.zip
Fix error column not matching for list parse error
-rw-r--r--src/bootstrap/parser.c23
1 files 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 *
39parse_list(Visitor *vs) { 39parse_list(Visitor *vs) {
40 Token tok = peek_token(vs); 40 Token tok = peek_token(vs);
41 if (tok.type == TOKEN_EOF) { 41 if (tok.type == TOKEN_EOF) {
42 error_push((Error){
43 .type = ERR_TYPE_PARSER,
44 .value = ERR_UNBALANCED_PAREN,
45 .line = tok.line,
46 .col = tok.column,
47 });
48 return obj_err; 42 return obj_err;
49 } 43 }
50 Object *next_obj = parse_tree(vs); 44 Object *next_obj = parse_tree(vs);
@@ -60,12 +54,6 @@ parse_list(Visitor *vs) {
60 break; 54 break;
61 } 55 }
62 if (tok.type == TOKEN_EOF) { 56 if (tok.type == TOKEN_EOF) {
63 error_push((Error){
64 .type = ERR_TYPE_PARSER,
65 .value = ERR_UNBALANCED_PAREN,
66 .line = tok.line,
67 .col = tok.column,
68 });
69 free_objects(root); 57 free_objects(root);
70 return obj_err; 58 return obj_err;
71 } 59 }
@@ -113,7 +101,16 @@ parse_tree(Visitor *vs) {
113 return obj_err; 101 return obj_err;
114 } break; 102 } break;
115 case TOKEN_LPAREN: { 103 case TOKEN_LPAREN: {
116 return parse_list(vs); 104 Object *obj = parse_list(vs);
105 if (obj == obj_err) {
106 error_push((Error){
107 .type = ERR_TYPE_PARSER,
108 .value = ERR_UNBALANCED_PAREN,
109 .line = tok.line,
110 .col = tok.column,
111 });
112 }
113 return obj;
117 } break; 114 } break;
118 case TOKEN_STRING: { 115 case TOKEN_STRING: {
119 Object *obj = make_string(); 116 Object *obj = make_string();