1616import java .util .ArrayList ;
1717import java .util .Iterator ;
1818import java .util .List ;
19+ import java .util .ListIterator ;
1920import java .util .Map ;
2021
2122import org .eclipse .core .runtime .CoreException ;
@@ -95,8 +96,6 @@ private static final void addSnippetsIfApplicable(LinkedCorrectionProposalCore p
9596 ProposalCore [] proposalList = group .getProposals ();
9697 PositionInformation [] positionList = group .getPositions ();
9798 StringBuilder snippet = new StringBuilder ();
98- snippet .append (SNIPPET_PREFIX );
99- snippet .append (snippetNumber );
10099 snippet .append (SNIPPET_CHOICE_INDICATOR );
101100 if (proposalList .length > 1 ) {
102101 for (int i = 0 ; i < positionList .length ; i ++) {
@@ -115,11 +114,10 @@ private static final void addSnippetsIfApplicable(LinkedCorrectionProposalCore p
115114 }
116115 }
117116 // If snippet is empty or only has one choice, ignore this group
118- if (snippet .toString ().equals (SNIPPET_PREFIX ) || snippet .indexOf (SNIPPET_CHOICE_DELIMITER ) == -1 ) {
117+ if (snippet .toString ().equals (String . valueOf ( SNIPPET_CHOICE_INDICATOR ) ) || snippet .indexOf (SNIPPET_CHOICE_DELIMITER ) == -1 ) {
119118 break ;
120119 }
121120 snippet .append (SNIPPET_CHOICE_POSTFIX );
122- snippetNumber ++;
123121 }
124122 snippets .add (new Triple (snippet .toString (), offset , length ));
125123 }
@@ -128,6 +126,12 @@ private static final void addSnippetsIfApplicable(LinkedCorrectionProposalCore p
128126 if (!snippets .isEmpty ()) {
129127 // Sort snippets in descending order based on offset, so that the edits are applied in an order that does not alter the offset of later edits
130128 snippets .sort (null );
129+ ListIterator <Triple > li = snippets .listIterator (snippets .size ());
130+ while (li .hasPrevious ()) {
131+ Triple element = li .previous ();
132+ element .snippet = SNIPPET_PREFIX + snippetNumber + element .snippet ;
133+ snippetNumber ++;
134+ }
131135 for (int i = 0 ; i < edit .getDocumentChanges ().size (); i ++) {
132136 if (edit .getDocumentChanges ().get (i ).isLeft ()) {
133137 List <TextEdit > edits = edit .getDocumentChanges ().get (i ).getLeft ().getEdits ();
0 commit comments