summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-05-24 07:40:56 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-05-24 07:46:05 -0700
commit8f066b1f7975129d5560cd8ee68121bf824ea38e (patch)
tree5798afe24775ebea47ad690157909eda0ba5791b
parent0e8b426f52c6c684be38fc829e24f9380b906919 (diff)
downloadtxr-8f066b1f7975129d5560cd8ee68121bf824ea38e.tar.gz
txr-8f066b1f7975129d5560cd8ee68121bf824ea38e.tar.bz2
txr-8f066b1f7975129d5560cd8ee68121bf824ea38e.zip
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.
-rw-r--r--parser.y7
-rw-r--r--y.tab.c.shipped7
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;