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

PATCH: pws-25: another line number problem



Consider:

% fpath=(.)
% cat alf
[[ foo bar ]] && print That did\'t work

#
print foo
% autoload alf
% alf
alf: parse error: condition expected: foo [5]

The line number reported is the last line of the file.  The answer,
thankfully, is simple:  don't flush the input queue until the error message
has been printed.  In fact, we ought to be able to tell that the input
queue is a string and will be flushed automatically when it's popped off
the input stack.  Maybe I'll put this on my to-do list.  Maybe.

--- Src/parse.c.uln	Thu Jun 17 15:28:47 1999
+++ Src/parse.c	Wed Jul  7 10:49:02 1999
@@ -72,7 +72,7 @@
 
 #define YYERROR  { tok = LEXERR; return NULL; }
 #define YYERRORV { tok = LEXERR; return; }
-#define COND_ERROR(X,Y) do{herrflush();zerr(X,Y,0);YYERROR}while(0)
+#define COND_ERROR(X,Y) do{zerr(X,Y,0);herrflush();YYERROR}while(0)
 
 #define make_list()     allocnode(N_LIST)
 #define make_sublist()  allocnode(N_SUBLIST)
@@ -143,8 +143,8 @@
 	    yyerror();
 	    return NULL;
 	}
-	herrflush();
 	yyerror();
+	herrflush();
 	return NULL;
     } else {
 	l->right = par_event();


-- 
Peter Stephenson <pws@xxxxxxxxxxxxxxxxx>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy



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