[PATCH 6/7] bistromathic: don't display undefined locations

Akim Demaille <[email protected]>
Newsgroups gmane.comp.parsers.bison.patches
Message-ID <[email protected]>
Currently, completion when there is a syntax error shows broken
locations.

* examples/c/bistromathic/parse.y (expected_tokens): Initialize the
location.
* examples/c/bistromathic/bistromathic.test: Check that.
---
 examples/c/bistromathic/bistromathic.test | 14 ++++++++++++++
 examples/c/bistromathic/parse.y           |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/examples/c/bistromathic/bistromathic.test b/examples/c/bistromathic/bistromathic.test
index c2d3dc37..7301fb8b 100755
--- a/examples/c/bistromathic/bistromathic.test
+++ b/examples/c/bistromathic/bistromathic.test
@@ -306,3 +306,17 @@ end of file  exit         exp          ''
 0
 > ''
 err: '
+
+# Check that completion when there is an error prints valid locations.
+sed -e 's/\\t/	/g' >input <<EOF
+(1++2) + 3 +\t\t
+EOF
+run -n 0 '> (1++2) + 3 +
+(       -       atan    cos     exp     ln      number  sin     sqrt
+> (1++2) + 3 +
+> 
+err: 1.1: syntax error: expected - or ( or number or function or variable before +
+err: 1.1: syntax error: expected - or ( or number or function or variable before +
+err: 1.4: syntax error: expected - or ( or number or function or variable before +
+err: 1.13: syntax error: expected - or ( or number or function or variable before end of file
+'
diff --git a/examples/c/bistromathic/parse.y b/examples/c/bistromathic/parse.y
index 69c0dd12..97b60bc9 100644
--- a/examples/c/bistromathic/parse.y
+++ b/examples/c/bistromathic/parse.y
@@ -447,7 +447,7 @@ expected_tokens (const char *input,
   yypstate *ps = yypstate_new ();
   int status = 0;
   do {
-    YYLTYPE lloc;
+    YYLTYPE lloc = { 1, 1, 1, 1 };
     YYSTYPE lval;
     int token = yylex (&input, &lval, &lloc);
     // Don't let the parse know when we reach the end of input.
-- 
2.27.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.