Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH (revised) Re: Parameter error trapped too late
- X-seq: zsh-workers 17692
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx (Zsh hackers list)
- Subject: PATCH (revised) Re: Parameter error trapped too late
- Date: Wed, 18 Sep 2002 15:07:00 +0000
- In-reply-to: <11934.1032191960@xxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <11934.1032191960@xxxxxxx>
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