[Merge] hash assignment fixes and speedup
authorFather Chrysostomos <sprout@cpan.org>
Tue, 11 Dec 2012 16:59:56 +0000 (08:59 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Tue, 11 Dec 2012 17:00:02 +0000 (09:00 -0800)
commit23b7025ebc631174249ce95dd496a0f82b55701a
tree8cf9d4ac879d0f2a02f77a76b2abd24003b4f5e0
parent6d70c686156da1532212fbc817c63c0a02bf894a
parent1d2b3927543a3fa4089c1cee10f3a1a546a02cfe
[Merge] hash assignment fixes and speedup

In <CAMOxC8vCaYk3GD0NRH=jxGmNKu+bmKTrYKR2nsrgU6Wei+xmYQ@mail.gmail.com>
Ruslan Zakirov wrote:
> I've finished my work on pp_aassign. I find it ready for review.
> Each commit has plenty of details, but here is short description:
>
>     * scalar(%h = (1,1,1,1)) returns 4, not 2
>     * warn on ($s,%h) = (1,{}) as on (%h) = ({})
>     * (%h = (1)) in list context returns (1, $h{1})
>       instead of (1)
>     * return of (%h = (1,1,1)) in list context was incorrect
>     * in list context returned keys was aliased to RHS scalars
>       of aassign
>     * returned list from ((%h, @a) = ...), hash on LHS followed by
>       array or hash, was incorrect
>     * implemented right to left algorithm for not magic hash assignment
>       in scalar and void context
>     * use less mortals is list context
>     * in list context hash assignment return keys aliased to RHS
>       when it's ok (it's not LVALUE context)