Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH 2/2] clear the heredoc list in case par_event() fails



On Thu, 2018-11-29 at 17:24 +0100, Kamil Dudka wrote:
> Since the above patch was applied, zsh exits successfully (despite it reports 
> parse error) on the attached example:
> 
> % zsh parse-error.sh; echo $?
> parse-error.sh:4: parse error
> 0
>
>...
>
> cat <<EOF
> $(print <<XXX
> EOF

I don't think the problem is with the changed code, which is signalling the
error as it should.  I think it's up above.

There's some slightly icky linkage between lex errors and the top level
requiring tok to be LEXERR.  The simple fix using the existing
signalling looks like the following.  I definitely don't think the tok =
LEXERR has a moral right to percolate through in the way it must
previously have been doing to avoid this, and the lexer does certainly
have the right to update the token when signalling a parse error, so
(famous last words) it's hard to see what could be wrong with this...

pws

diff --git a/Src/lex.c b/Src/lex.c
index fa29da3..f43bcc7 100644
--- a/Src/lex.c
+++ b/Src/lex.c
@@ -1613,6 +1613,7 @@ parsestr(char **s)
 		zerr("parse error near `%c'", err);
 	    else
 		zerr("parse error");
+	    tok = LEXERR;
 	}
     }
     return err;




Messages sorted by: Reverse Date, Date, Thread, Author