[Cuis-dev] Syntax Error notification undo bug

Hernan Wilkinson hernan.wilkinson at 10pines.com
Sat Jun 8 14:48:43 PDT 2019


Thank you! great work!
On github now.

Hernan.

On Fri, Jun 7, 2019 at 5:17 PM Eric Brandwein <brandweineric at gmail.com>
wrote:

> In the end I didn't need to change the Parser, just the TextEditor. I'm
> not sure if it's the prettiest way of going about it, but it seems to work
> fine. To test it, try writing a method with a syntax error and quickly
> saving it, and try to undo it afterwards. Without this ChangeSet, it should
> erase not only the syntax error notification, but also some of the text
> written before. With the ChangeSet applied, it should just erase the
> notification.
>
> El jue., 6 jun. 2019 a las 16:56, Hernan Wilkinson (<
> hernan.wilkinson at 10pines.com>) escribió:
>
>> If you do that, you will have to tell the class you are using to test
>> your changes to use a different compiler (a subclass de compiler) with the
>> message #compilerClass and to that compiler subclass witch parser to use
>> with the message #parserClass
>>
>> Good luck!
>> Hernan.
>>
>> On Thu, Jun 6, 2019 at 4:31 PM Eric Brandwein <brandweineric at gmail.com>
>> wrote:
>>
>>> I didn't think about doing a subclass of the Parser, that's a good idea!
>>> I'll try it and ask you if I have any issues. Thanks!
>>>
>>> El jue., 6 jun. 2019 16:09, Hernan Wilkinson <
>>> hernan.wilkinson at 10pines.com> escribió:
>>>
>>>> Thank you Eric!
>>>> You change is on github now.
>>>>
>>>> About making the "good" fix, sadly there are no tests for the parser,
>>>> scanner or compiler... (at least that I'm aware of)
>>>> The refactoring tests use the parser and compiler a lot but they do not
>>>> cover all the paths.
>>>> Making a change in the parser is difficult but not impossible, but be
>>>> aware that you should do it using a subclass of the parser because if you
>>>> make a mistake you wont be able to fix it because the parser does not work
>>>> anymore :-)
>>>> If you want to give it a try let me know and I'll show you how to do it.
>>>>
>>>> Cheers!
>>>> Hernan.
>>>>
>>>> On Wed, Jun 5, 2019 at 3:22 PM Eric Brandwein via Cuis-dev <
>>>> cuis-dev at lists.cuis.st> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> There's currently a bug when having an unrecognized selector in a
>>>>> method and a syntax error at the same time. When the method is saved, and
>>>>> the undo command is generated, the selector replacement and the syntax
>>>>> error notification insertion of text are merged into one command, which in
>>>>> turn makes the command not represent the actual user input.
>>>>>
>>>>> For example, if we don't have the m2 method defined, and we try to
>>>>> save this method:
>>>>>
>>>>> m1
>>>>>     self m2.
>>>>>     [
>>>>>
>>>>> , an 'Unrecognized selector' popup will appear, prompting you to
>>>>> select the correct selector. After selecting it, a syntax error text will
>>>>> appear after the '[', and the source text will end up looking something
>>>>> like this:
>>>>>
>>>>> m1
>>>>>     self m1.
>>>>>     [End of block expected ->
>>>>>
>>>>> After undoing the last command, because the selector replacement was
>>>>> merged with the syntax error replacement, the method will look something
>>>>> like this:
>>>>>
>>>>> m1
>>>>>     self m2ed ->
>>>>>
>>>>> I made a ChangeSet that fixes it by checking that the stop position of
>>>>> the last replacement corresponds with the start position of the new
>>>>> replacement before merging the two. But I believe the problem comes from
>>>>> the fact that syntax error replacements should not be merged at all with
>>>>> previous replacement commands; after all, user text replacements and syntax
>>>>> error text replacements seem to me pretty separate undoable commands.
>>>>>
>>>>> Changing this without having tests for the TextEditor seemed like a
>>>>> pretty dangerous task, so I didn't. Plus, the way I thought about changing
>>>>> it involved changing the Parser, which seemed even more dangerous. There
>>>>> probably are tests for the Parser, but I couldn't find them in the
>>>>> BaseSystemTests. Where are they?
>>>>>
>>>>> Cheers,
>>>>> Eric
>>>>> --
>>>>> 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
>>>>
>>>
>>
>> --
>>
>> *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
>>
>

-- 

*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/20190608/2003bad8/attachment-0001.html>


More information about the Cuis-dev mailing list