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

PATCH Re: Parameter error trapped too late



On Sep 16,  3:03pm, Peter Stephenson wrote:
} Subject: Parameter error trapped too late
}
} % zsh -c 'fn() { local 30=foo; }; fn'
} BUG: parameter recreated with wrong flags
} fn:local: 30: can't assign initial value for array

The simplest fix appears to be the following patch, which has the effect
that instead of this error:

schaefer<501> typeset 30=foo
zsh: 30: can't assign initial value for array

One gets this error:

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.

Index: builtin.c
===================================================================
diff -c -r1.17 builtin.c
--- builtin.c	12 Sep 2002 07:59:07 -0000	1.17
+++ builtin.c	16 Sep 2002 14:49:34 -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
Index: B02typeset.ztst
===================================================================
diff -c -r1.2 B02typeset.ztst
--- B02typeset.ztst	1 Sep 2002 16:47:40 -0000	1.2
+++ B02typeset.ztst	16 Sep 2002 14:49:38 -0000
@@ -223,7 +223,7 @@
 >scalar a r y
 
  # The first declare works around the "not an identifier" bug with -h
- declare \! \# \$ * - ? @
+ declare \! \# \$ * - ? @ 0
  typeset -h +g -m *
  unset -m *
  integer i=9

-- 
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