mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-26379 debug info
java.lang.AssertionError at com.intellij.openapi.vcs.checkin.StepIntersection.dataStep(StepIntersection.java:126) at com.intellij.openapi.vcs.checkin.StepIntersection.process(StepIntersection.java:93) at com.intellij.openapi.vcs.checkin.TodoCheckinHandlerWorker$MyEditedFileProcessor.process(TodoCheckinHandlerWorker.java:202) at com.intellij.openapi.vcs.checkin.TodoCheckinHandlerWorker.execute(TodoCheckinHandlerWorker.java:131) at com.intellij.openapi.vcs.checkin.TodoCheckinHandler$2.run(TodoCheckinHandler.java:148)
This commit is contained in:
@@ -15,11 +15,15 @@
|
||||
*/
|
||||
package com.intellij.openapi.vcs.checkin;
|
||||
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.util.PairConsumer;
|
||||
import com.intellij.util.containers.Convertor;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author irengrig
|
||||
@@ -39,9 +43,15 @@ public class StepIntersection<Data, Area> {
|
||||
private Area myCurArea;
|
||||
private final List<Area> myAreas;
|
||||
private HackSearch<Data,Area,TextRange> myHackSearch;
|
||||
// EA-28497, EA-26379
|
||||
private Getter<String> myDebugDocumentTextGetter;
|
||||
|
||||
public StepIntersection(Convertor<Data, TextRange> dataConvertor, Convertor<Area, TextRange> areasConvertor, final List<Area> areas) {
|
||||
public StepIntersection(Convertor<Data, TextRange> dataConvertor,
|
||||
Convertor<Area, TextRange> areasConvertor,
|
||||
final List<Area> areas,
|
||||
Getter<String> debugDocumentTextGetter) {
|
||||
myAreas = areas;
|
||||
myDebugDocumentTextGetter = debugDocumentTextGetter;
|
||||
myAreaIndex = 0;
|
||||
myDataConvertor = dataConvertor;
|
||||
myAreasConvertor = areasConvertor;
|
||||
@@ -116,14 +126,18 @@ public class StepIntersection<Data, Area> {
|
||||
if (myAreaIndex >= myAreas.size()) {
|
||||
return;
|
||||
}
|
||||
assert myAreaRange == null || myAreaRange.getEndOffset() < myAreasConvertor.convert(myAreas.get(myAreaIndex)).getStartOffset();
|
||||
assert myAreaRange == null || myAreaRange.getEndOffset() < myAreasConvertor.convert(myAreas.get(myAreaIndex)).getStartOffset() :
|
||||
"Area ranges intersect: first: " + myAreaRange + ", second: " + myAreasConvertor.convert(myAreas.get(myAreaIndex)) + ", text: '" +
|
||||
myDebugDocumentTextGetter.get() + "'";
|
||||
myCurArea = myAreas.get(myAreaIndex);
|
||||
myAreaRange = myAreasConvertor.convert(myCurArea);
|
||||
}
|
||||
|
||||
private void dataStep() {
|
||||
myCurData = myDataIterator.next();
|
||||
assert myDataRange == null || myDataRange.getEndOffset() < myDataConvertor.convert(myCurData).getStartOffset();
|
||||
assert myDataRange == null || myDataRange.getEndOffset() < myDataConvertor.convert(myCurData).getStartOffset() :
|
||||
"Data ranges intersect: first: " + myDataRange + ", second: " + myDataConvertor.convert(myCurData) + ", text: '" +
|
||||
myDebugDocumentTextGetter.get() + "'";
|
||||
myDataRange = myDataConvertor.convert(myCurData);
|
||||
}
|
||||
}
|
||||
|
||||
+14
-2
@@ -28,6 +28,7 @@ import com.intellij.openapi.diff.impl.processing.DiffPolicy;
|
||||
import com.intellij.openapi.diff.impl.util.TextDiffTypeEnum;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -198,7 +199,13 @@ public class TodoCheckinHandlerWorker {
|
||||
}
|
||||
}
|
||||
final StepIntersection<TodoItem, LineFragment> intersection =
|
||||
new StepIntersection<TodoItem, LineFragment>(TodoItemConvertor.getInstance(), LineFragmentConvertor.getInstance(), lineFragments);
|
||||
new StepIntersection<TodoItem, LineFragment>(TodoItemConvertor.getInstance(), LineFragmentConvertor.getInstance(), lineFragments,
|
||||
new Getter<String>() {
|
||||
@Override
|
||||
public String get() {
|
||||
return myAfterContent;
|
||||
}
|
||||
});
|
||||
|
||||
intersection.process(newTodoItems, new PairConsumer<TodoItem, LineFragment>() {
|
||||
|
||||
@@ -247,7 +254,12 @@ public class TodoCheckinHandlerWorker {
|
||||
}
|
||||
if (myOldTodoTexts == null) {
|
||||
final StepIntersection<LineFragment, TodoItem> intersection = new StepIntersection<LineFragment, TodoItem>(
|
||||
LineFragmentConvertor.getInstance(), TodoItemConvertor.getInstance(), myOldItems);
|
||||
LineFragmentConvertor.getInstance(), TodoItemConvertor.getInstance(), myOldItems, new Getter<String>() {
|
||||
@Override
|
||||
public String get() {
|
||||
return myBeforeContent;
|
||||
}
|
||||
});
|
||||
myOldTodoTexts = new HashSet<String>();
|
||||
intersection.process(Collections.singletonList(myCurrentLineFragment), new PairConsumer<LineFragment, TodoItem>() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user