From 8f066b1f7975129d5560cd8ee68121bf824ea38e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 24 May 2021 07:40:56 -0700 Subject: parser: improve diagnostic for unterminated exprs. * parser.y (parse): When issuing the diagostic indicating the likely starting line of the unterminated expression, instead of mentioning that line in the diagnostic text, let's just issue the diagnostic against that line. The programmer's text editor can then jump to that line. * y.tab.c.shipped: Updated. --- parser.y | 7 +++++-- y.tab.c.shipped | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/parser.y b/parser.y index d15aa225..18ae9ed5 100644 --- a/parser.y +++ b/parser.y @@ -2121,8 +2121,11 @@ int parse(parser_t *parser, val name, enum prime_parser prim) if (parser->errors && parser->syntax_tree == nil && parser->lineno != start_line) { - yyerrorf(parser->scanner, lit("while parsing form starting at line ~a"), - num(start_line), nao); + cnum curline = parser->lineno; + parser->lineno = start_line; + yyerrorf(parser->scanner, + lit("while parsing expression starting on this line"), nao); + parser->lineno = curline; } return res; diff --git a/y.tab.c.shipped b/y.tab.c.shipped index 7e5e647e..1b27eb7a 100644 --- a/y.tab.c.shipped +++ b/y.tab.c.shipped @@ -7498,8 +7498,11 @@ int parse(parser_t *parser, val name, enum prime_parser prim) if (parser->errors && parser->syntax_tree == nil && parser->lineno != start_line) { - yyerrorf(parser->scanner, lit("while parsing form starting at line ~a"), - num(start_line), nao); + cnum curline = parser->lineno; + parser->lineno = start_line; + yyerrorf(parser->scanner, + lit("while parsing expression starting on this line"), nao); + parser->lineno = curline; } return res; -- cgit v1.2.3