Ilya Zakharevich on Mon, 1 Jul 2002 09:36:08 -0400


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Bug in parsing of local()


On Mon, Jul 01, 2002 at 08:53:20AM -0400, Ilya Zakharevich wrote:
> ? f(x=11,y=x)=local(t=ff(),u=t);1
>   ***   unknown function or error in formal parameters: f(x=11,y=x)=local(t=
>   ***   ff(),u=t);1
>         ^-----------

Another problem:

? ff(x)=local(y=x);x=177;print(y)
? ff(12)
12
? gg(x)=local(y=x);x='x;x=177;print(y)
? gg(12)
177

I think the answers should be the same...  The problem may be due to
the following difference in the assignment of variables and
parameters:

  for (i=0; i<narg; i++) copyvalue(*p++, *arg++);
  for (i=0; i<nloc; i++) pushvalue(*p++, make_arg(*loc++));

(the difference between copy and push).  And what make_arg() magic is doing
there?

Puzzled,
Ilya