<div dir="ltr"><div>Hi all,</div><div><br></div><div>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.</div><div><br></div><div>For example, if we don't have the m2 method defined, and we try to save this method:</div><div><br></div><div>m1</div><div>    self m2.</div><div>    [</div><div><br></div><div>, 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:</div><div><br></div><div><div>m1</div><div>    self m1.</div><div>    [End of block expected -></div><div><br></div><div>After undoing the last command, because the selector replacement was merged with the syntax error replacement, the method will look something like this:</div><div><br></div><div><div><div>m1</div><div>    self m2ed -></div><div><br></div><div>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.</div><div><br></div><div>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?<br></div><div><br></div><div>Cheers,</div><div>Eric<br></div></div></div></div></div>