diff --git a/platform/lang-api/src/com/intellij/codeInspection/ProblemsHolder.java b/platform/lang-api/src/com/intellij/codeInspection/ProblemsHolder.java index ba1705c8497e..c01d4dba74c8 100644 --- a/platform/lang-api/src/com/intellij/codeInspection/ProblemsHolder.java +++ b/platform/lang-api/src/com/intellij/codeInspection/ProblemsHolder.java @@ -179,6 +179,10 @@ public class ProblemsHolder { return myOnTheFly; } + public PsiFile getFile() { + return myFile; + } + public final Project getProject() { return myManager.getProject(); } diff --git a/platform/lang-api/src/com/intellij/psi/WalkingState.java b/platform/lang-api/src/com/intellij/psi/WalkingState.java index d6ac55d5daad..5270d355219c 100644 --- a/platform/lang-api/src/com/intellij/psi/WalkingState.java +++ b/platform/lang-api/src/com/intellij/psi/WalkingState.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; /** * @author cdr */ -public abstract class WalkingState { +public class WalkingState { public interface TreeGuide { T getNextSibling(@NotNull T element); T getPrevSibling(@NotNull T element); @@ -33,9 +33,9 @@ public abstract class WalkingState { private final TreeGuide myWalker; private boolean stopped; - public abstract void elementFinished(@NotNull T element); + public void elementFinished(@NotNull T element) {} - protected WalkingState(@NotNull TreeGuide delegate) { + public WalkingState(@NotNull TreeGuide delegate) { myWalker = delegate; } @@ -100,4 +100,4 @@ public abstract class WalkingState { public void stopWalking() { stopped = true; } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonTooltipUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonTooltipUtil.java index a5e5000b4e7c..3424b514a620 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonTooltipUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonTooltipUtil.java @@ -41,8 +41,8 @@ public class DaemonTooltipUtil { public static void showInfoTooltip(@NotNull final HighlightInfo info, final Editor editor, final int defaultOffset, final int currentWidth) { if (info.toolTip == null) return; Rectangle visibleArea = editor.getScrollingModel().getVisibleArea(); - int endOffset = info.highlighter.getEndOffset(); - int startOffset = info.highlighter.getStartOffset(); + int startOffset = info.getActualStartOffset(); + int endOffset = info.getActualEndOffset(); Point top = editor.logicalPositionToXY(editor.offsetToLogicalPosition(startOffset)); Point bottom = editor.logicalPositionToXY(editor.offsetToLogicalPosition(endOffset)); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ErrorStripeHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ErrorStripeHandler.java index 0618614e2273..a40325f6d283 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ErrorStripeHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/ErrorStripeHandler.java @@ -21,8 +21,6 @@ import com.intellij.openapi.editor.ex.ErrorStripeEvent; import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.project.Project; -import java.util.List; - public class ErrorStripeHandler extends ErrorStripeAdapter { private final Project myProject; @@ -39,14 +37,9 @@ public class ErrorStripeHandler extends ErrorStripeAdapter { } } - private HighlightInfo findInfo(RangeHighlighter highlighter) { - List highlights = DaemonCodeAnalyzerImpl.getHighlights(highlighter.getDocument(), myProject); - if (highlights == null) return null; - for (HighlightInfo info : highlights) { - if (info.highlighter == highlighter) { - return info; - } - } + private static HighlightInfo findInfo(final RangeHighlighter highlighter) { + Object o = highlighter.getErrorStripeTooltip(); + if (o instanceof HighlightInfo) return (HighlightInfo)o; return null; } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WholeFileLocalInspectionsPassFactory.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WholeFileLocalInspectionsPassFactory.java index 9541cf9a1c84..cbfdac182a4e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WholeFileLocalInspectionsPassFactory.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/WholeFileLocalInspectionsPassFactory.java @@ -22,12 +22,12 @@ import com.intellij.codeHighlighting.TextEditorHighlightingPassFactory; import com.intellij.codeHighlighting.TextEditorHighlightingPassRegistrar; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.ex.InspectionProfileWrapper; +import com.intellij.openapi.Disposable; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.TextRange; -import com.intellij.openapi.Disposable; import com.intellij.profile.Profile; import com.intellij.profile.ProfileChangeAdapter; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; @@ -106,4 +106,4 @@ public class WholeFileLocalInspectionsPassFactory extends AbstractProjectCompone }; } -} \ No newline at end of file +} diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java index 5c8b9c623c4b..30b3a1af1345 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java @@ -253,6 +253,11 @@ public class UndoManagerImpl extends UndoManager implements ProjectComponent, Ap clearUndoRedoQueue(DocumentReferenceManager.getInstance().create(file)); } + @TestOnly + public void clearUndoRedoQueueInTests(Document document) { + clearUndoRedoQueue(DocumentReferenceManager.getInstance().create(document)); + } + protected void compact() { if (myCurrentOperationState == NONE && myCommandTimestamp % COMMAND_TO_RUN_COMPACT == 0) { doCompact(); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionImpl.java index 4c57b9115f8f..1dbf86ed25cd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldRegionImpl.java @@ -70,7 +70,7 @@ public class FoldRegionImpl extends RangeMarkerImpl implements FoldRegion { } public boolean isValid() { - return super.isValid() && getStartOffset() + 1 < getEndOffset(); + return super.isValid() && myStart + 1 < myEnd; } public void setExpandedInternal(boolean toExpand) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java index 6b14a975f408..4b73e716dfe0 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java @@ -21,8 +21,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.RangeMarker; -import com.intellij.openapi.editor.ex.DocumentEx; -import com.intellij.openapi.editor.impl.PersistentRangeMarker; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; @@ -58,7 +56,10 @@ import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringBundle; import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil; import org.jetbrains.plugins.groovy.refactoring.NameValidator; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; /** * @author ilyas @@ -85,10 +86,10 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { Map conflicts = new HashMap(); for (GroovyInlineMethodUtil.ReferenceExpressionInfo info : infos) { - if (!(PsiUtil.isAccessible(call, info.declaration))) { + if (!PsiUtil.isAccessible(call, info.declaration)) { if (info.declaration instanceof PsiMethod) { String className = info.containingClass.getName(); - String signature = GroovyRefactoringUtil.getMethodSignature(((PsiMethod) info.declaration)); + String signature = GroovyRefactoringUtil.getMethodSignature((PsiMethod) info.declaration); String name = CommonRefactoringUtil.htmlEmphasize(className + "." + signature); conflicts.put(info.declaration, GroovyRefactoringBundle.message("method.is.not.accessible.form.context.0", name)); } else if (info.declaration instanceof PsiField) { @@ -147,9 +148,9 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { qualifier = ((GrParenthesizedExpression) qualifier).getOperand(); } qualifierDeclaration = factory.createVariableDeclaration(ArrayUtil.EMPTY_STRING_ARRAY, qualifier, null, qualName); - innerQualifier = ((GrReferenceExpression) factory.createExpressionFromText(qualName)); + innerQualifier = (GrReferenceExpression) factory.createExpressionFromText(qualName); } else { - innerQualifier = ((GrReferenceExpression) qualifier); + innerQualifier = (GrReferenceExpression) qualifier; } } } @@ -159,7 +160,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { if (result != null) { GrExpression expression = call.replaceWithExpression(result, false); TextRange range = expression.getTextRange(); - return editor != null ? new PersistentRangeMarker((DocumentEx)editor.getDocument(), range.getStartOffset(), range.getEndOffset()) : null; + return editor != null ? editor.getDocument().createRangeMarker(range.getStartOffset(), range.getEndOffset(), true) : null; } String resultName = InlineMethodConflictSolver.suggestNewName("result", newMethod, call); @@ -245,13 +246,13 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { assert replaced != null; TextRange range = replaced.getTextRange(); - RangeMarker marker = editor != null ? new PersistentRangeMarker((DocumentEx)editor.getDocument(), range.getStartOffset(), range.getEndOffset()) : null; + RangeMarker marker = editor != null ? editor.getDocument().createRangeMarker(range.getStartOffset(), range.getEndOffset(), true) : null; reformatOwner(owner); return marker; } else { GrStatement stmt; if (isTailMethodCall && enclosingExpr.getParent() instanceof GrReturnStatement) { - stmt = ((GrReturnStatement) enclosingExpr.getParent()); + stmt = (GrReturnStatement) enclosingExpr.getParent(); } else { stmt = enclosingExpr; } @@ -332,7 +333,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { if (statement instanceof GrReturnStatement) { expr = ((GrReturnStatement) statement).getReturnValue(); } else { - expr = ((GrExpression) statement); + expr = (GrExpression) statement; } return expr; } @@ -382,7 +383,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { if (element == null) return; for (PsiElement child : element.getChildren()) { if (child instanceof GrVariable && !(child instanceof GrParameter)) { - defintions.add(((GrVariable) child)); + defintions.add((GrVariable) child); } if (!(child instanceof GrClosableBlock)) { collectInnerDefinitions(child, defintions); @@ -401,10 +402,10 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { assert body != null; GrStatement[] statements = body.getStatements(); if (statements.length == 1) { - if (statements[0] instanceof GrExpression) return ((GrExpression) statements[0]); + if (statements[0] instanceof GrExpression) return (GrExpression) statements[0]; if (statements[0] instanceof GrReturnStatement) { GrExpression value = ((GrReturnStatement) statements[0]).getReturnValue(); - if (value == null && (PsiUtil.getSmartReturnType(method) != PsiType.VOID)) { + if (value == null && PsiUtil.getSmartReturnType(method) != PsiType.VOID) { return GroovyPsiElementFactory.getInstance(method.getProject()).createExpressionFromText("null"); } return value;