[Cuis-dev] RenameTemporary of var with same name fix

Hernan Wilkinson hernan.wilkinson at 10pines.com
Wed Dec 18 05:29:16 PST 2019


On Wed, Dec 18, 2019 at 1:51 AM Eric Brandwein <brandweineric at gmail.com>
wrote:

> Great! I was actually working on that but your approach seems better than
> mine. I got a little bit stuck solving another issue with it, that happens
> when changing the name to one already used in another block.
>

hehe, yeap, I saw that problem too... we should work together man! :-) or
communicate more :-)


> For example, one should be able to rename the temp variable 'old' to 'new'
> in the method:
>
> method
>     [ | old | ^old ].
>     [ | new | ^new ].
>
> , but the current implementation doesn't support it. Attached is a
> ChangeSet with a test demonstrating this.
>
> I was stuck because it meant we should be able to determine if the block B
> declaring the new variable A neither has any inner blocks defining the same
> variable nor any block that contains B defines A. If both these things are
> true (and all the other checks pass), the variable can be renamed. This, in
> turn, meant we should go through all the parse tree looking for the branch
> that corresponds to B, and just check for A in the nodes on that branch. It
> can be done probably with a ParseNodeVisitor; it just was too late when I
> was programming this and it seemed that it was going to take me a longer
> while to implement it, so I just left it there to continue later. I'll
> probably do it tomorrow if I have some time.
>

Cool! Let me know if you can solve it.

The scopeTable is the problem, it does not support levels of
environments... that is the root of all the problems we are having with the
rename, shadowing, etc etc.
Changing how the scopeTable is right not is not easy, maybe some day I'll
have time to look at it.

Cheers!
Hernan.


> Cheers,
> Eric
>
> El mar., 17 dic. 2019 a las 19:30, Hernan Wilkinson via Cuis-dev (<
> cuis-dev at lists.cuis.st>) escribió:
>
>> Hi,
>>  I just uploaded to the repo a fix for that bug.
>>  Now if two different blocks define a var with the same name, the rename
>> works as expected.
>>
>> Cheers!
>> Hernan.
>>
>> --
>>
>> *Hernán WilkinsonAgile Software Development, Teaching & Coaching*
>> *Phone: +54-011*-4893-2057
>> *Twitter: @HernanWilkinson*
>> *site: http://www.10Pines.com <http://www.10pines.com/>*
>> Address: Alem 896, Floor 6, Buenos Aires, Argentina
>> --
>> Cuis-dev mailing list
>> Cuis-dev at lists.cuis.st
>> https://lists.cuis.st/mailman/listinfo/cuis-dev
>>
>

-- 

*Hernán WilkinsonAgile Software Development, Teaching & Coaching*
*Phone: +54-011*-4893-2057
*Twitter: @HernanWilkinson*
*site: http://www.10Pines.com <http://www.10pines.com/>*
Address: Alem 896, Floor 6, Buenos Aires, Argentina
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20191218/02bf9826/attachment.htm>


More information about the Cuis-dev mailing list