Steps to reproduce:
- In VisualEditor standalone, edit <p>abc<!--de--></p>
- Select from between b and c to the end of the paragraph (so range 3-6)
- Press Delete
Expected behaviour:
c<!--de--> is deleted
Actual behaviour:
An Error is thrown with the following stacktrace:
ve.dm.TreeModifier.js:534 Uncaught Error: Remover and inserter unexpectedly diverged at VeDmTreeModifier.ve.dm.TreeModifier.processRetain (ve.dm.TreeModifier.js:534) at VeDmTreeModifier.ve.dm.TreeModifier.processLinearOperation (ve.dm.TreeModifier.js:407) at VeDmTreeModifier.ve.dm.TreeModifier.calculateTreeOperations (ve.dm.TreeModifier.js:390) at VeDmTreeModifier.ve.dm.TreeModifier.process (ve.dm.TreeModifier.js:355) at VeDmTransactionProcessor.ve.dm.TransactionProcessor.process (ve.dm.TransactionProcessor.js:111) at VeDmDocument.ve.dm.Document.commit (ve.dm.Document.js:341) at VeDmSurface.ve.dm.Surface.changeInternal (ve.dm.Surface.js:950) at VeDmSurface.ve.dm.Surface.change (ve.dm.Surface.js:918) at VeDmSurfaceFragment.ve.dm.SurfaceFragment.change (ve.dm.SurfaceFragment.js:126) at VeDmSurfaceFragment.ve.dm.SurfaceFragment.delete (ve.dm.SurfaceFragment.js:965)
This is because if the ve.dm.TreeCursor is at the end of a text node and an ignored node follows, #crossIgnoredNodes should step out of the text node and cross the ignored node, but in fact it does not.