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

PATCH (revised) Re: Parameter error trapped too late



On Sep 16,  4:59pm, Peter Stephenson wrote:
} Subject: Re: PATCH Re: Parameter error trapped too late
}
} > schaefer<501> typeset 30=foo
} > zsh: not an identifier: 30
} > 
} > We could refine the error message if that's desirable, but bash2 gives a
} > similar "not a valid identifier" in that example.
} 
} Yes, but bash doesn't allow `30=foo' as a normal assignment whereas zsh
} does, so I think a different error message here might be better.
} Something like `identifier not allowed in this context'.

How about the following, then.  Is there any reason that zerrnam() was not
already being used for the "not an identifier" complaint?  To pretend that
the error came from the parser, perhaps?  Bash2's error in this same case
includes the name of the command.

Index: builtin.c
===================================================================
RCS file: /extra/cvsroot/zsh/zsh-4.0/Src/builtin.c,v
retrieving revision 1.17
diff -c -r1.17 builtin.c
--- builtin.c	12 Sep 2002 07:59:07 -0000	1.17
+++ builtin.c	18 Sep 2002 14:49:06 -0000
@@ -1909,7 +1909,7 @@
 		    "%s: array elements must be scalar", pname, 0);
 	    return NULL;
 	}
-    } else if (isident(pname)) {
+    } else if (isident(pname) && !idigit(*pname)) {
 	/*
 	 * Create a new node for a parameter with the flags in `on' minus the
 	 * readonly flag
@@ -1918,7 +1918,10 @@
 	DPUTS(!pm, "BUG: parameter not created");
 	pm->ct = auxlen;
     } else {
-	zerr("not an identifier: %s", pname, 0);
+	if (isident(pname))
+	    zerrnam(cname, "not valid in this context: %s", pname, 0);
+	else
+	    zerrnam(cname, "not an identifier: %s", pname, 0);
 	return NULL;
     }
 


-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   



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