On Tuesday 02 May 2006 00:10, Thomas E Enebo wrote:
>   If you could give me a patch for the .y file which would generate
> the equivalent of what you changed in the .java file (along with the
> tests I will add it).  A newer version of RDT will end up picking up
> these changes at some point.
>
>   I believe what you changed is ok for your purposes, but for JRuby
> we need them in the .y.

Ok, I've attached the patch.

>
>  I think this is a bug.  I also notice our evaluator seems to take into
> account multiple DStrNodes.  I think ParserSupport.literal_concat is
> adding this extra empty DStrNode when head is null.  I will need to
> consider this a bit more though.  It certainly seems wrong from a surface
> view of the code.

I would really appreciate if you could take a look at it. In the meantime, I'm 
going to work on Array-positions. Currently, this:
[5, 10, 15]
gives me:
ArrayNode[]: {FixnumNode[]FixnumNode[]FixnumNode[]}, position -> test.rb:
[0,0]:[1,3]
FixnumNode[], position -> test.rb:[0,0]:[1,1]
FixnumNode[], position -> test.rb:[0,0]:[4,5]
FixnumNode[], position -> test.rb:[0,0]:[8,9]

While the Fixnums are correct, the ArrayNode certainly isn't.

Mirko
Index: DefaultRubyParser.y
===================================================================
--- DefaultRubyParser.y	(revision 32)
+++ DefaultRubyParser.y	(working copy)
@@ -679,7 +679,7 @@
                 }
 
 lhs           : variable {
-                    $$ = support.assignable(getPosition($<ISourcePositionHolder>1), $1, null);
+                    $$ = support.assignable(getPosition($<ISourcePositionHolder>1, true), $1, null);
                 }
               | primary_value '[' aref_args ']' {
                     $$ = support.getElementAssignmentNode($1, $3);
@@ -792,6 +792,7 @@
 
 arg           : lhs '=' arg {
                     $$ = support.node_assign($1, $3);
+		    $<Node>$.setPosition(support.union($1, $3));
                 }
 	      | lhs '=' arg kRESCUE_MOD arg {
                     $$ = support.node_assign($1, new RescueNode(getPosition($<ISourcePositionHolder>1), $3, new RescueBodyNode(getPosition($<ISourcePositionHolder>1), null,$5, null), null));

Attachment: pgpsEF9ohNvhV.pgp
Description: PGP signature

Reply via email to