From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9560 invoked from network); 7 Jul 1999 09:25:24 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 7 Jul 1999 09:25:24 -0000 Received: (qmail 5269 invoked by alias); 7 Jul 1999 09:25:14 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6999 Received: (qmail 5260 invoked from network); 7 Jul 1999 09:25:14 -0000 Message-Id: <9907070856.AA40613@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: PATCH: pws-25: another line number problem Date: Wed, 07 Jul 1999 10:56:23 +0200 From: Peter Stephenson 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 Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy