From: "Kirill A. Shutemov" Date: 2007-09-18T18:08:44+09:00 Subject: Re: [PATCH] Strange ripper bug --J/dobhs11T7y2rNN Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On [Fri, 14.09.2007 00:55], Kirill A. Shutemov wrote: > On [Thu, 13.09.2007 23:58], Yukihiro Matsumoto wrote: > > Hi, > >=20 > > In message "Re: [PATCH] Strange ripper bug" > > on Thu, 13 Sep 2007 23:53:46 +0900, "Kirill A. Shutemov" writes: > >=20 > > |> Comma separation suggest splat in the hash expression, which does not > > |> support. Confusing. > > | > > |It break backward compatibility. Any ideas how to fix it? > >=20 > > We plan to create migration tool after we see 1.9 stable. Or if > > someone volunteers, we greatly appreciate.=20 >=20 > Please, comment patch in the attachment. Any comments? >=20 > --=20 > Regards, Kirill A. Shutemov > + Belarus, Minsk > + Velesys LLC, http://www.velesys.com/ > + ALT Linux Team, http://www.altlinux.com/ > Index: parse.y > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- parse.y (revision 13439) > +++ parse.y (working copy) > @@ -644,7 +644,7 @@ > %type bodystmt compstmt stmts stmt expr arg primary command comma= nd_call method_call > %type expr_value arg_value primary_value > %type if_tail opt_else case_body cases opt_rescue exc_list exc_va= r opt_ensure > -%type args call_args call_args2 opt_call_args > +%type args call_args call_args2 hash_args opt_call_args > %type open_args paren_args opt_paren_args > %type command_args aref_args opt_block_arg block_arg var_ref var_= lhs > %type mrhs superclass block_call block_command > @@ -4363,6 +4363,17 @@ > $$ =3D dispatch1(assoclist_from_args, $1); > %*/ > } > + | hash_args trailer > + { > + /*%%%*/ > + if (nd_type($1) =3D=3D NODE_ARRAY && $1->nd_alen%2 !=3D 0) { > + yyerror("odd number list for Hash"); > + } > + $$ =3D $1; > + /*% > + $$ =3D dispatch1(assoclist_from_args, $1); > + %*/ > + } > ; > =20 > assocs : assoc > @@ -4402,6 +4413,24 @@ > } > ; > =20 > +hash_args : arg_value > + { > + /*%%%*/ > + $$ =3D NEW_LIST($1); > + /*% > + $$ =3D arg_add(arg_new(), $1); > + %*/ > + } > + | hash_args ',' arg_value > + { > + /*%%%*/ > + $$ =3D arg_append($1, $3); > + /*% > + $$ =3D arg_add($1, $3); > + %*/ > + } > + ; > + > operation : tIDENTIFIER > | tCONSTANT > | tFID > Index: test/ruby/test_hash.rb > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- test/ruby/test_hash.rb (revision 13439) > +++ test/ruby/test_hash.rb (working copy) > @@ -4,7 +4,7 @@ > =20 > def test_hash > x =3D {1=3D>2, 2=3D>4, 3=3D>6} > - y =3D {1=3D>2, 2=3D>4, 3=3D>6} # y =3D {1, 2, 2, 4, 3, 6} # 1.9 does= n't support > + y =3D {1, 2, 2, 4, 3, 6} > =20 > assert_equal(2, x[1]) > =20 --=20 Regards, Kirill A. Shutemov + Belarus, Minsk + Velesys LLC, http://www.velesys.com/ + ALT Linux Team, http://www.altlinux.com/ --J/dobhs11T7y2rNN Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) iD8DBQFG75WqbWYnhzC5v6oRAkqmAJ9COh3rrvaHrYCcgnq+ntkaYG9UxACfXUPE /euqE+6hkG7e1o/e1igeWNE= =EMhy -----END PGP SIGNATURE----- --J/dobhs11T7y2rNN--