Merge remote-tracking branch 'origin/master'

This commit is contained in:
Ekaterina Tuzova
2014-02-27 13:02:04 +04:00
32 changed files with 287 additions and 224 deletions
@@ -22,7 +22,20 @@ import com.intellij.openapi.editor.Document;
* Date: Oct 7, 2003
* Time: 3:12:54 PM
*/
interface PlaceInDocument {
public Document getDocument();
public int getOffset();
class PlaceInDocument {
private final Document myDocument;
private final int myOffset;
PlaceInDocument(Document document, int offset) {
myDocument = document;
myOffset = offset;
}
public Document getDocument() {
return myDocument;
}
public int getOffset() {
return myOffset;
}
}
@@ -26,13 +26,14 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.FoldRegion;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.xdebugger.impl.actions.DebuggerActionHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -71,10 +72,14 @@ public class ToggleLineBreakpointActionHandler extends DebuggerActionHandler {
return;
}
ExpandRegionAction.expandRegionAtCaret(project, event.getData(CommonDataKeys.EDITOR));
Editor editor = event.getData(CommonDataKeys.EDITOR);
ExpandRegionAction.expandRegionAtCaret(project, editor);
Document document = place.getDocument();
int line = document.getLineNumber(place.getOffset());
if (editor != null && editor.getCaretModel().getVisualPosition().line != line) {
editor.getCaretModel().moveToOffset(place.getOffset());
}
DebuggerManagerEx debugManager = DebuggerManagerEx.getInstanceEx(project);
if (debugManager == null) {
@@ -100,28 +105,59 @@ public class ToggleLineBreakpointActionHandler extends DebuggerActionHandler {
}
}
private static boolean containsOnlyDeclarations(int line, Document document, PsiFile file) {
int lineStart = document.getLineStartOffset(line);
int lineEnd = document.getLineEndOffset(line);
PsiElement start = file.findElementAt(lineStart);
PsiElement end = file.findElementAt(lineEnd - 1);
if (start == null || end == null) return false;
PsiElement commonParent = PsiTreeUtil.findCommonParent(start, end);
for (PsiElement element : PsiTreeUtil.findChildrenOfAnyType(commonParent, PsiStatement.class, PsiExpression.class)) {
if (new TextRange(lineStart, lineEnd).contains(element.getTextRange().getStartOffset())) {
return false;
}
}
return true;
}
@Nullable
private static PlaceInDocument getPlace(@NotNull final Project project, AnActionEvent event) {
Editor editor = event.getData(CommonDataKeys.EDITOR);
if(editor == null) {
editor = FileEditorManager.getInstance(project).getSelectedTextEditor();
}
if (editor != null) {
final Document document = editor.getDocument();
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(document);
if (file != null) {
final Editor editor1 = editor;
return new PlaceInDocument() {
public Document getDocument() {
return document;
}
public int getOffset() {
return editor1.getCaretModel().getOffset();
}
};
}
if (editor == null) {
return null;
}
return null;
final Document document = editor.getDocument();
PsiDocumentManager.getInstance(project).commitDocument(document);
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(document);
if (file == null) {
return null;
}
// if several lines are merged into one visual line (using folding), try to find the most appropriate of those lines
int visualLine = editor.getCaretModel().getVisualPosition().getLine();
int visibleOffset = editor.getCaretModel().getOffset();
while (editor.offsetToVisualPosition(visibleOffset).line == visualLine) {
int line = document.getLineNumber(visibleOffset);
if (!containsOnlyDeclarations(line, document, file)) {
return new PlaceInDocument(document, visibleOffset);
}
int lineEndOffset = document.getLineEndOffset(line);
FoldRegion region = editor.getFoldingModel().getCollapsedRegionAtOffset(lineEndOffset);
if (region != null) {
int foldEnd = region.getEndOffset();
if (foldEnd > lineEndOffset) {
visibleOffset = foldEnd;
continue;
}
}
visibleOffset = lineEndOffset + 1;
}
return new PlaceInDocument(document, editor.getCaretModel().getOffset());
}
}
@@ -122,21 +122,7 @@ public class ToggleMethodBreakpointAction extends AnAction {
}
}
if(method != null) {
final PsiElement method1 = method;
final Document document1 = document;
return new PlaceInDocument() {
public Document getDocument() {
return document1;
}
public int getOffset() {
return method1.getTextOffset();
}
};
}
return null;
return method != null ? new PlaceInDocument(document, method.getTextOffset()) : null;
}
@Nullable
@@ -196,7 +196,7 @@ public class BreakpointManager {
offset = editor.getDocument().getLineStartOffset(line);
}
ExpandRegionAction.expandRegionAtCaret(myProject, editor);
ExpandRegionAction.expandRegionAtOffset(myProject, editor, offset);
Breakpoint breakpoint = findBreakpoint(document, offset, null);
if (breakpoint == null) {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
*/
package com.intellij.codeInsight.daemon.impl.analysis;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.util.*;
import org.jetbrains.annotations.NonNls;
@@ -26,8 +27,8 @@ import java.util.List;
public class JavaHighlightUtil {
public static boolean isSerializable(@NotNull PsiClass aClass) {
PsiManager manager = aClass.getManager();
PsiClass serializableClass = JavaPsiFacade.getInstance(manager.getProject()).findClass("java.io.Serializable", aClass.getResolveScope());
Project project = aClass.getManager().getProject();
PsiClass serializableClass = JavaPsiFacade.getInstance(project).findClass("java.io.Serializable", aClass.getResolveScope());
return serializableClass != null && aClass.isInheritor(serializableClass, true);
}
@@ -70,18 +71,13 @@ public class JavaHighlightUtil {
@NotNull
public static String formatType(@Nullable PsiType type) {
if (type == null) return PsiKeyword.NULL;
String text = type.getInternalCanonicalText();
return text == null ? PsiKeyword.NULL : text;
return type == null ? PsiKeyword.NULL : type.getInternalCanonicalText();
}
@Nullable
private static PsiType getArrayInitializerType(@NotNull final PsiArrayInitializerExpression element) {
final PsiType typeCheckResult = sameType(element.getInitializers());
if (typeCheckResult != null) {
return typeCheckResult.createArrayType();
}
return null;
private static PsiType getArrayInitializerType(@NotNull PsiArrayInitializerExpression element) {
PsiType typeCheckResult = sameType(element.getInitializers());
return typeCheckResult != null ? typeCheckResult.createArrayType() : null;
}
@Nullable
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -185,7 +185,7 @@ public class LambdaUtil {
if (psiClass instanceof PsiAnonymousClass) {
psiClass = PsiUtil.resolveClassInType(((PsiAnonymousClass)psiClass).getBaseClassType());
}
if (psiClass != null && psiClass.isInterface()) {
if (psiClass != null && psiClass.isInterface() && !psiClass.isAnnotationType()) {
final List<MethodSignature> methods = new ArrayList<MethodSignature>();
final Collection<HierarchicalMethodSignature> visibleSignatures = psiClass.getVisibleSignatures();
for (HierarchicalMethodSignature signature : visibleSignatures) {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,18 +31,11 @@ import java.util.Map;
* Represents primitive types of Java language.
*/
public class PsiPrimitiveType extends PsiType {
private static final Map<String, PsiPrimitiveType> ourQNameToUnboxed = new THashMap<String, PsiPrimitiveType>();
private static final Map<PsiPrimitiveType, String> ourUnboxedToQName = new THashMap<PsiPrimitiveType, String>();
private final String myName;
public PsiPrimitiveType(@NonNls @NotNull String name, PsiAnnotation[] annotations) {
super(annotations);
myName = name;
}
@NonNls
private static final Map<String, PsiPrimitiveType> ourQNameToUnboxed = new THashMap<String, PsiPrimitiveType>();
@NonNls
private static final Map<PsiPrimitiveType, String> ourUnboxedToQName = new THashMap<PsiPrimitiveType, String>();
//registering ctor
PsiPrimitiveType(@NonNls @NotNull String name, @NonNls String boxedName) {
this(name, PsiAnnotation.EMPTY_ARRAY);
if (boxedName != null) {
@@ -51,6 +44,11 @@ public class PsiPrimitiveType extends PsiType {
}
}
public PsiPrimitiveType(@NonNls @NotNull String name, @NotNull PsiAnnotation[] annotations) {
super(annotations);
myName = name;
}
@NotNull
@Override
public String getPresentableText() {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -73,21 +73,22 @@ public abstract class PsiType implements PsiAnnotationOwner {
}
/**
* @return text of the type that can be presented to a user (non-qualified references, with annotations).
* Returns text of the type that can be presented to a user (references normally non-qualified).
*/
@NonNls
@NotNull
public abstract String getPresentableText();
/**
* @return text of the type (fully-qualified references, no annotations).
* Returns canonical representation of the type (all references fully-qualified).
*/
@NonNls
@NotNull
public abstract String getCanonicalText();
/**
* @return text of the type (fully-qualified references, with annotations).
* Return canonical text of the type with some internal details added for presentational purposes. Use with care.
* todo[r.sh] merge with getPresentableText()
*/
@NonNls
@NotNull
@@ -543,7 +543,7 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
@NotNull
@Override
public PsiKeyword createKeyword(@NotNull final String text) throws IncorrectOperationException {
if (!JavaPsiFacade.getInstance(myManager.getProject()).getNameHelper().isKeyword(text)) {
if (!PsiNameHelper.getInstance(myManager.getProject()).isKeyword(text)) {
throw new IncorrectOperationException("\"" + text + "\" is not a keyword.");
}
return new LightKeyword(myManager, text);
@@ -579,7 +579,7 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
if (packageName.isEmpty()) {
throw new IncorrectOperationException("Cannot create import statement for default package.");
}
if (!JavaPsiFacade.getInstance(myManager.getProject()).getNameHelper().isQualifiedName(packageName)) {
if (!PsiNameHelper.getInstance(myManager.getProject()).isQualifiedName(packageName)) {
throw new IncorrectOperationException("Incorrect package name: \"" + packageName + "\".");
}
@@ -590,30 +590,38 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
@NotNull
@Override
public PsiDeclarationStatement createVariableDeclarationStatement(@NotNull final String name,
@NotNull final PsiType type,
final PsiExpression initializer) throws IncorrectOperationException {
if (!JavaPsiFacade.getInstance(myManager.getProject()).getNameHelper().isIdentifier(name)) {
public PsiDeclarationStatement createVariableDeclarationStatement(@NotNull String name,
@NotNull PsiType type,
@Nullable PsiExpression initializer) throws IncorrectOperationException {
if (!isIdentifier(name)) {
throw new IncorrectOperationException("\"" + name + "\" is not an identifier.");
}
if (PsiType.NULL.equals(type)) {
throw new IncorrectOperationException("Cannot create variable with type \"null\".");
}
@NonNls final String text = "X " + name + (initializer != null ? " = x" : "") + ";";
String text = "X " + name + (initializer != null ? " = x" : "") + ";";
PsiDeclarationStatement statement = (PsiDeclarationStatement)createStatementFromText(text, null);
final PsiDeclarationStatement statement = (PsiDeclarationStatement)createStatementFromText(text, null);
final PsiVariable variable = (PsiVariable)statement.getDeclaredElements()[0];
PsiVariable variable = (PsiVariable)statement.getDeclaredElements()[0];
replace(variable.getTypeElement(), createTypeElement(type), text);
PsiUtil.setModifierProperty(variable, PsiModifier.FINAL,
JavaCodeStyleSettingsFacade.getInstance(myManager.getProject()).isGenerateFinalLocals());
boolean generateFinalLocals = JavaCodeStyleSettingsFacade.getInstance(myManager.getProject()).isGenerateFinalLocals();
PsiUtil.setModifierProperty(variable, PsiModifier.FINAL, generateFinalLocals);
if (initializer != null) {
replace(variable.getInitializer(), initializer, text);
}
GeneratedMarkerVisitor.markGenerated(statement);
return statement;
}
private static void replace(@Nullable PsiElement original, @NotNull PsiElement replacement, @NotNull String message) {
assert original != null : message;
original.replace(replacement);
}
@NotNull
@Override
public PsiDocTag createParamTag(@NotNull final String parameterName, @NonNls final String description) throws IncorrectOperationException {
@@ -718,11 +726,6 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
return statements[0];
}
private static void replace(final PsiElement original, final PsiElement replacement, final String message) {
assert original != null : message;
original.replace(replacement);
}
private static final JavaParserUtil.ParserWrapper CATCH_SECTION = new JavaParserUtil.ParserWrapper() {
@Override
public void parse(final PsiBuilder builder) {
@@ -782,6 +785,6 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
}
private boolean isIdentifier(@NotNull String name) {
return JavaPsiFacade.getInstance(myManager.getProject()).getNameHelper().isIdentifier(name);
return PsiNameHelper.getInstance(myManager.getProject()).isIdentifier(name);
}
}
@@ -0,0 +1,3 @@
<error descr="Test is not a functional interface">@FunctionalInterface</error>
@interface Test {
}
@@ -1,9 +1,7 @@
import java.lang.annotation.*;
@Target({ElementType.TYPE_USE/*, ElementType.TYPE*/})
@interface TA {
}
@Target({ElementType.TYPE_USE})
@interface TA { }
class C {
void foo () {
@@ -1,9 +1,7 @@
import java.lang.annotation.*;
@Target({ElementType.TYPE_USE/*, ElementType.TYPE*/})
@interface TA {
}
@Target({ElementType.TYPE_USE})
@interface TA { }
class C {
void foo () {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -77,6 +77,7 @@ public class LambdaHighlightingTest extends LightDaemonAnalyzerTestCase {
public void testIntersectionTypeInCast() { doTest(); }
public void testAmbiguitySpecificReturn() { doTest(true); }
public void testFunctionalInterfaceAnnotation() { doTest(); }
public void testFunctionalInterfaceAnnotation2() { doTest(); }
public void testAmbiguityReturnValueResolution() { doTest(); }
public void testAmbiguityReturnValueResolution1() { doTest(); }
public void testAmbiguityReturnValueResolution2() { doTest(true); }
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,7 +28,6 @@ import com.intellij.refactoring.introduceVariable.IntroduceVariableSettings;
import com.intellij.refactoring.ui.TypeSelectorManagerImpl;
import com.intellij.testFramework.LightCodeInsightTestCase;
import com.intellij.util.containers.MultiMap;
import junit.framework.Assert;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -302,6 +301,7 @@ public class IntroduceVariableTest extends LightCodeInsightTestCase {
public void testNonExpression() throws Exception {
doTest(new MockIntroduceVariableHandler("sum", true, true, false, "int"));
}
public void testTypeAnnotations() throws Exception {
doTest(new MockIntroduceVariableHandler("y1", true, false, false, "@TA C"));
}
@@ -362,8 +362,8 @@ public class IntroduceVariableTest extends LightCodeInsightTestCase {
InputValidator validator,
PsiElement anchor, final OccurrencesChooser.ReplaceChoice replaceChoice) {
final PsiType type = typeSelectorManager.getDefaultType();
Assert.assertTrue(type.getPresentableText(), type.getPresentableText().equals(expectedTypeName));
Assert.assertEquals("path", IntroduceVariableBase.getSuggestedName(type, expr).names[0]);
assertTrue(type.getPresentableText(), type.getPresentableText().equals(expectedTypeName));
assertEquals("path", IntroduceVariableBase.getSuggestedName(type, expr).names[0]);
return super.getSettings(project, editor, expr, occurrences, typeSelectorManager, declareFinalIfAll, anyAssignmentLHS,
validator, anchor, replaceChoice);
}
@@ -381,7 +381,7 @@ public class IntroduceVariableTest extends LightCodeInsightTestCase {
InputValidator validator,
PsiElement anchor, final OccurrencesChooser.ReplaceChoice replaceChoice) {
final PsiType type = typeSelectorManager.getDefaultType();
Assert.assertTrue(type.getPresentableText(), type.getPresentableText().equals("B"));
assertTrue(type.getPresentableText(), type.getPresentableText().equals("B"));
return super.getSettings(project, editor, expr, occurrences, typeSelectorManager, declareFinalIfAll, anyAssignmentLHS,
validator, anchor, replaceChoice);
}
@@ -428,7 +428,7 @@ public class IntroduceVariableTest extends LightCodeInsightTestCase {
}
public void testLambdaExpr() throws Exception {
doTest(new MockIntroduceVariableHandler("c", false, false, false, "SAM<java.lang.Integer>"));
}
@@ -1,17 +1,35 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.refactoring;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiType;
import com.intellij.refactoring.introduce.inplace.OccurrencesChooser;
import com.intellij.refactoring.introduceVariable.InputValidator;
import com.intellij.refactoring.introduceVariable.IntroduceVariableBase;
import com.intellij.refactoring.introduceVariable.IntroduceVariableSettings;
import com.intellij.refactoring.ui.TypeSelectorManagerImpl;
import com.intellij.util.containers.MultiMap;
import junit.framework.Assert;
import org.jetbrains.annotations.NonNls;
import static org.junit.Assert.assertTrue;
/**
* @author dsl
*/
@@ -26,7 +44,6 @@ class MockIntroduceVariableHandler extends IntroduceVariableBase {
public MockIntroduceVariableHandler(@NonNls final String name, final boolean replaceAll,
final boolean declareFinal, final boolean replaceLValues,
@NonNls final String expectedTypeCanonicalName) {
this(name, replaceAll, declareFinal, replaceLValues, expectedTypeCanonicalName, false);
}
@@ -52,7 +69,7 @@ class MockIntroduceVariableHandler extends IntroduceVariableBase {
PsiElement anchor, final OccurrencesChooser.ReplaceChoice replaceChoice) {
final PsiType type = myLookForType ? findType(typeSelectorManager.getTypesForAll(), typeSelectorManager.getDefaultType())
: typeSelectorManager.getDefaultType();
Assert.assertTrue(type.getInternalCanonicalText(), type.getInternalCanonicalText().equals(myExpectedTypeCanonicalName));
assertTrue(type.getInternalCanonicalText(), type.getInternalCanonicalText().equals(myExpectedTypeCanonicalName));
IntroduceVariableSettings introduceVariableSettings = new IntroduceVariableSettings() {
@Override
public String getEnteredName() {
@@ -90,7 +107,7 @@ class MockIntroduceVariableHandler extends IntroduceVariableBase {
}
protected void assertValidationResult(final boolean validationResult) {
Assert.assertTrue(validationResult);
assertTrue(validationResult);
}
@Override
@@ -54,6 +54,10 @@ public abstract class IndentationParser implements PsiParser {
final PsiBuilder.Marker fileMarker = builder.mark();
final PsiBuilder.Marker documentMarker = builder.mark();
while (builder.getTokenType() == myEolTokenType) {
advanceLexer(builder);
}
final Stack<BlockInfo> stack = new Stack<BlockInfo>();
stack.push(new BlockInfo(0, builder.mark(), builder.getTokenType()));
@@ -20,12 +20,12 @@ import com.intellij.codeInsight.folding.CodeFoldingManager;
import com.intellij.codeInsight.folding.impl.FoldingUtil;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.FoldRegion;
import com.intellij.openapi.editor.actionSystem.EditorAction;
import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class ExpandRegionAction extends EditorAction {
@@ -47,10 +47,14 @@ public class ExpandRegionAction extends EditorAction {
public static void expandRegionAtCaret(final Project project, @Nullable final Editor editor) {
if (editor == null) return;
expandRegionAtOffset(project, editor, editor.getCaretModel().getOffset());
}
public static void expandRegionAtOffset(@NotNull Project project, @NotNull final Editor editor, final int offset) {
CodeFoldingManager foldingManager = CodeFoldingManager.getInstance(project);
foldingManager.updateFoldRegions(editor);
final int line = editor.getCaretModel().getLogicalPosition().line;
final int line = editor.getDocument().getLineNumber(offset);
Runnable processor = new Runnable() {
@Override
public void run() {
@@ -59,7 +63,6 @@ public class ExpandRegionAction extends EditorAction {
region.setExpanded(true);
}
else{
int offset = editor.getCaretModel().getOffset();
FoldRegion[] regions = FoldingUtil.getFoldRegionsAtOffset(editor, offset);
for(int i = regions.length - 1; i >= 0; i--){
region = regions[i];
@@ -138,17 +138,20 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
BrowseMode browseMode = getBrowseMode(modifiers);
if (browseMode != BrowseMode.None) {
if (myTooltipProvider != null) {
if (browseMode != myTooltipProvider.getBrowseMode()) {
TooltipProvider tooltipProvider = myTooltipProvider;
if (tooltipProvider != null) {
if (browseMode != tooltipProvider.getBrowseMode()) {
disposeHighlighter();
}
myStoredModifiers = modifiers;
cancelPreviousTooltip();
myTooltipProvider = new TooltipProvider(tooltipProvider.myEditor, tooltipProvider.myPosition);
myTooltipProvider.execute(browseMode);
}
}
else {
disposeHighlighter();
myTooltipProvider = null;
cancelPreviousTooltip();
}
}
};
@@ -157,7 +160,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
@Override
public void selectionChanged(@NotNull FileEditorManagerEvent e) {
disposeHighlighter();
myTooltipProvider = null;
cancelPreviousTooltip();
}
};
@@ -165,7 +168,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
@Override
public void visibleAreaChanged(VisibleAreaEvent e) {
disposeHighlighter();
myTooltipProvider = null;
cancelPreviousTooltip();
}
};
@@ -173,7 +176,7 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
@Override
public void mouseReleased(EditorMouseEvent e) {
disposeHighlighter();
myTooltipProvider = null;
cancelPreviousTooltip();
}
};
@@ -211,13 +214,10 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
myStoredModifiers = mouseEvent.getModifiers();
BrowseMode browseMode = getBrowseMode(myStoredModifiers);
if (myTooltipProvider != null) {
myTooltipProvider.dispose();
}
cancelPreviousTooltip();
if (browseMode == BrowseMode.None || offset >= selStart && offset < selEnd) {
disposeHighlighter();
myTooltipProvider = null;
return;
}
@@ -226,6 +226,13 @@ public class CtrlMouseHandler extends AbstractProjectComponent {
}
};
private void cancelPreviousTooltip() {
if (myTooltipProvider != null) {
myTooltipProvider.dispose();
myTooltipProvider = null;
}
}
@NotNull private final Alarm myDocAlarm;
public CtrlMouseHandler(final Project project,
@@ -54,7 +54,7 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener {
@Override
public void mouseClicked(MouseEvent e) {
if (!e.isPopupTrigger()) {
gutterContentProvider.doAction(getLineAtPoint(e.getPoint()), editor);
gutterContentProvider.doAction(EditorUtil.yPositionToLogicalLine(editor, e.getPoint()), editor);
}
}
});
@@ -161,7 +161,7 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener {
@Override
public void mouseMoved(MouseEvent e) {
int line = getLineAtPoint(e.getPoint());
int line = EditorUtil.yPositionToLogicalLine(editor, e.getPoint());
if (line == lastGutterToolTipLine) {
return;
}
@@ -189,10 +189,6 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener {
}
}
private int getLineAtPoint(@NotNull Point clickPoint) {
return editor.yPositionToLogicalLine(clickPoint.y);
}
public void documentCleared() {
maxAnnotationWidth = 0;
}
@@ -282,40 +282,35 @@ public class InstalledPackagesPanel extends JPanel {
}
private void updateUninstallUpgrade() {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
final int[] selected = myPackagesTable.getSelectedRows();
boolean upgradeAvailable = false;
boolean canUninstall = selected.length != 0;
boolean canUpgrade = true;
if (myPackageManagementService != null && selected.length != 0) {
for (int i = 0; i != selected.length; ++i) {
final int index = selected[i];
if (index >= myPackagesTable.getRowCount()) continue;
final Object value = myPackagesTable.getValueAt(index, 0);
if (value instanceof InstalledPackage) {
final InstalledPackage pkg = (InstalledPackage)value;
if (!canUninstallPackage(pkg)) {
canUninstall = false;
}
if (!canUpgradePackage(pkg)) {
canUpgrade = false;
}
final String pyPackageName = pkg.getName();
final String availableVersion = (String)myPackagesTable.getValueAt(index, 2);
if (!upgradeAvailable) {
upgradeAvailable = PackageVersionComparator.VERSION_COMPARATOR.compare(pkg.getVersion(), availableVersion) < 0 &&
!myCurrentlyInstalling.contains(pyPackageName);
}
if (!canUninstall && !canUpgrade) break;
}
final int[] selected = myPackagesTable.getSelectedRows();
boolean upgradeAvailable = false;
boolean canUninstall = selected.length != 0;
boolean canUpgrade = true;
if (myPackageManagementService != null && selected.length != 0) {
for (int i = 0; i != selected.length; ++i) {
final int index = selected[i];
if (index >= myPackagesTable.getRowCount()) continue;
final Object value = myPackagesTable.getValueAt(index, 0);
if (value instanceof InstalledPackage) {
final InstalledPackage pkg = (InstalledPackage)value;
if (!canUninstallPackage(pkg)) {
canUninstall = false;
}
if (!canUpgradePackage(pkg)) {
canUpgrade = false;
}
final String pyPackageName = pkg.getName();
final String availableVersion = (String)myPackagesTable.getValueAt(index, 2);
if (!upgradeAvailable) {
upgradeAvailable = PackageVersionComparator.VERSION_COMPARATOR.compare(pkg.getVersion(), availableVersion) < 0 &&
!myCurrentlyInstalling.contains(pyPackageName);
}
if (!canUninstall && !canUpgrade) break;
}
myUninstallButton.setEnabled(canUninstall);
myUpgradeButton.setEnabled(upgradeAvailable && canUpgrade);
}
}, ModalityState.any());
}
myUninstallButton.setEnabled(canUninstall);
myUpgradeButton.setEnabled(upgradeAvailable && canUpgrade);
}
protected boolean canUninstallPackage(InstalledPackage pyPackage) {
@@ -401,6 +396,7 @@ public class InstalledPackagesPanel extends JPanel {
private void onUpdateFinished() {
myPackagesTable.setPaintBusy(false);
myPackagesTable.getEmptyText().setText(StatusText.DEFAULT_EMPTY_TEXT);
updateUninstallUpgrade();
}
public void doUpdatePackages(@NotNull final PackageManagementService packageManagementService) {
@@ -472,27 +468,23 @@ public class InstalledPackagesPanel extends JPanel {
private void decrement() {
if (inProgressPackageCount.decrementAndGet() == 0) {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
onUpdateFinished();
}
});
onUpdateFinished();
}
}
@Override
public void consume(Exception e) {
decrement();
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
decrement();
}
});
}
@Override
public void consume(@Nullable final String latestVersion) {
if (latestVersion == null) {
decrement();
return;
}
ApplicationManager.getApplication().invokeLater(new Runnable() {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
if (finalIndex < myPackagesTableModel.getRowCount()) {
@@ -503,7 +495,7 @@ public class InstalledPackagesPanel extends JPanel {
}
decrement();
}
}, ModalityState.any());
});
}
});
}
@@ -133,7 +133,7 @@ public class ConsoleViewUtil {
};
}
public static boolean isConsoleViewEditor(Editor editor) {
public static boolean isConsoleViewEditor(@NotNull Editor editor) {
return editor.getUserData(EDITOR_IS_CONSOLE_VIEW) == Boolean.TRUE;
}
@@ -691,7 +691,9 @@ public final class ActionManagerImpl extends ActionManagerEx implements Applicat
assertActionIsGroupOrStub(action);
}
String actionName = action instanceof ActionStub ? ((ActionStub)action).getClassName() : action.getClass().getName();
String actionName = String.format(
"%s (%s)", action instanceof ActionStub? ((ActionStub)action).getClassName() : action.getClass().getName(),
action instanceof ActionStub ? ((ActionStub)action).getId() : myAction2Id.get(action));
if (!ADD_TO_GROUP_ELEMENT_NAME.equals(element.getName())) {
reportActionError(pluginId, "unexpected name of element \"" + element.getName() + "\"");
@@ -36,15 +36,16 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.util.Arrays;
import java.util.List;
public class EditorUtil {
public final class EditorUtil {
private static final Logger LOG = Logger.getInstance(EditorUtil.class);
private static final Logger LOG = Logger.getInstance("#" + EditorUtil.class.getName());
private EditorUtil() { }
private EditorUtil() {
}
public static int getLastVisualLineColumnNumber(@NotNull Editor editor, final int line) {
Document document = editor.getDocument();
@@ -191,7 +192,7 @@ public class EditorUtil {
if (!filler.isEmpty()) {
new WriteAction(){
@Override
protected void run(final Result result) throws Throwable {
protected void run(@NotNull Result result) throws Throwable {
editor.getDocument().insertString(offset, filler);
editor.getCaretModel().moveToOffset(offset + filler.length());
}
@@ -792,6 +793,19 @@ public class EditorUtil {
int end = ends.length > 0 ? ends[ends.length - 1] : selection.getSelectionEnd();
return TextRange.create(start, end);
}
public static int yPositionToLogicalLine(@NotNull Editor editor, @NotNull MouseEvent event) {
return yPositionToLogicalLine(editor, event.getY());
}
public static int yPositionToLogicalLine(@NotNull Editor editor, @NotNull Point point) {
return yPositionToLogicalLine(editor, point.y);
}
public static int yPositionToLogicalLine(@NotNull Editor editor, int y) {
int line = y / editor.getLineHeight();
return line > 0 ? editor.visualToLogicalPosition(new VisualPosition(line, 0)).line : 0;
}
}
@@ -1118,7 +1118,7 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse
if (toolTip != null && !toolTip.isEmpty()) {
final Ref<Point> t = new Ref<Point>(e.getPoint());
int line = myEditor.yPositionToLogicalLine(e.getY());
int line = EditorUtil.yPositionToLogicalLine(myEditor, e);
ArrayList<GutterMark> row = myLineToGutterRenderers.get(line);
Balloon.Position ballPosition = Balloon.Position.atRight;
if (row != null) {
@@ -1182,7 +1182,7 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse
}
private int getLineNumAtPoint(final Point clickPoint) {
return myEditor.yPositionToLogicalLine(clickPoint.y);
return EditorUtil.yPositionToLogicalLine(myEditor, clickPoint);
}
@Nullable
@@ -1346,7 +1346,7 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse
actionGroup.add(new CloseAnnotationsAction());
final List<AnAction> addActions = new ArrayList<AnAction>();
final Point p = e.getPoint();
int line = myEditor.yPositionToLogicalLine((int)p.getY());
int line = EditorUtil.yPositionToLogicalLine(myEditor, p);
//if (line >= myEditor.getDocument().getLineCount()) return;
for (TextAnnotationGutterProvider gutterProvider : myTextAnnotationGutters) {
@@ -1405,7 +1405,7 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse
}
private int convertPointToLineNumber(final Point p) {
int line = myEditor.yPositionToLogicalLine((int)p.getY());
int line = EditorUtil.yPositionToLogicalLine(myEditor, p);
if (line >= myEditor.getDocument().getLineCount()) return -1;
int startOffset = myEditor.getDocument().getLineStartOffset(line);
@@ -1112,15 +1112,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
return y / getLineHeight();
}
public int yPositionToLogicalLine(int y) {
int line = yPositionToVisibleLine(y);
if (line <= 0) {
return 0;
}
LogicalPosition logicalPosition = visualToLogicalPosition(new VisualPosition(line, 0));
return logicalPosition.line;
}
@Override
@NotNull
public VisualPosition xyToVisualPosition(@NotNull Point p) {
@@ -1372,7 +1363,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
@NotNull
public LogicalPosition xyToLogicalPosition(@NotNull Point p) {
Point pp = p.x >= 0 && p.y >= 0 ? p : new Point(Math.max(p.x, 0), Math.max(p.y, 0));
return visualToLogicalPosition(xyToVisualPosition(pp));
}
@@ -2382,7 +2372,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
validateSize();
// Repaint editor to the bottom in order to ensure that its content is shown correctly after new soft wrap introduction.
repaintToScreenBottom(yPositionToLogicalLine(position.y));
repaintToScreenBottom(EditorUtil.yPositionToLogicalLine(this, position));
// Repaint gutter at all space that is located after active clip in order to ensure that line numbers are correctly redrawn
// in accordance with the newly introduced soft wrap(s).
@@ -5484,7 +5474,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
putUserData(EditorActionUtil.EXPECTED_CARET_OFFSET, null);
if (event.getArea() == EditorMouseEventArea.LINE_MARKERS_AREA) {
myDragOnGutterSelectionStartLine = yPositionToLogicalLine(e.getY());
myDragOnGutterSelectionStartLine = EditorUtil.yPositionToLogicalLine(EditorImpl.this, e);
}
// On some systems (for example on Linux) popup trigger is MOUSE_PRESSED event.
@@ -6554,8 +6544,8 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
int endToUse = Math.min(lineCount, myLineWidths.size());
if (endToUse > 0 && getSoftWrapModel().isSoftWrappingEnabled()) {
Rectangle visibleArea = getScrollingModel().getVisibleArea();
startToUse = yPositionToLogicalLine(visibleArea.getLocation().y);
endToUse = Math.min(endToUse, yPositionToLogicalLine(visibleArea.y + visibleArea.height));
startToUse = EditorUtil.yPositionToLogicalLine(EditorImpl.this, visibleArea.getLocation());
endToUse = Math.min(endToUse, EditorUtil.yPositionToLogicalLine(EditorImpl.this, visibleArea.y + visibleArea.height));
if (endToUse <= startToUse) {
// There is a possible case that there is the only soft-wrapped line, i.e. end == start. We still want to update the
// size container's width then.
@@ -1299,10 +1299,12 @@ public class PersistentFSImpl extends PersistentFS implements ApplicationCompone
private static class JarRoot extends AbstractRoot {
private final VirtualFile myParentLocalFile;
private final String myParentPath;
private JarRoot(@NotNull NewVirtualFileSystem fs, int rootId, @NotNull VirtualFile parentLocalFile) {
super(fs, rootId);
myParentLocalFile = parentLocalFile;
myParentPath = myParentLocalFile.getPath();
}
@NotNull
@@ -1313,9 +1315,8 @@ public class PersistentFSImpl extends PersistentFS implements ApplicationCompone
@Override
protected char[] appendPathOnFileSystem(int accumulatedPathLength, int[] positionRef) {
String parentPath = myParentLocalFile.getPath();
char[] chars = new char[parentPath.length() + JarFileSystem.JAR_SEPARATOR.length() + accumulatedPathLength];
positionRef[0] = copyString(chars, positionRef[0], myParentLocalFile.getPath());
char[] chars = new char[myParentPath.length() + JarFileSystem.JAR_SEPARATOR.length() + accumulatedPathLength];
positionRef[0] = copyString(chars, positionRef[0], myParentPath);
positionRef[0] = copyString(chars, positionRef[0], JarFileSystem.JAR_SEPARATOR);
return chars;
}
@@ -16,14 +16,12 @@
package com.intellij.openapi.wm.impl.status;
import com.intellij.concurrency.JobScheduler;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.wm.CustomStatusBarWidget;
import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.StatusBarWidget;
import com.intellij.ui.Gray;
import com.intellij.ui.JBColor;
import com.intellij.ui.UIBundle;
import com.intellij.util.SystemProperties;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -39,10 +37,6 @@ import java.util.concurrent.TimeUnit;
public class MemoryUsagePanel extends JButton implements CustomStatusBarWidget {
@NonNls public static final String WIDGET_ID = "Memory";
// todo: drop unless J. will insist to keep old style look
private static final boolean FRAMED_STYLE = SystemInfo.isMac || !SystemProperties.getBooleanProperty("idea.ui.old.mem.use", false);
private static final int MEGABYTE = 1024 * 1024;
@NonNls private static final String SAMPLE_STRING;
@@ -113,8 +107,7 @@ public class MemoryUsagePanel extends JButton implements CustomStatusBarWidget {
}
private static Font getWidgetFont() {
final Font font = UIUtil.getLabelFont();
return FRAMED_STYLE ? font.deriveFont(11.0f) : font;
return UIUtil.getLabelFont().deriveFont(11.0f);
}
@Override
@@ -130,7 +123,7 @@ public class MemoryUsagePanel extends JButton implements CustomStatusBarWidget {
if (myBufferedImage == null || stateChanged) {
final Dimension size = getSize();
final Insets insets = FRAMED_STYLE ? getInsets() : new Insets(0, 0, 0, 0);
final Insets insets = getInsets();
myBufferedImage = UIUtil.createImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB);
final Graphics2D g2 = (Graphics2D)myBufferedImage.getGraphics().create();
@@ -144,7 +137,7 @@ public class MemoryUsagePanel extends JButton implements CustomStatusBarWidget {
final int totalBarLength = size.width - insets.left - insets.right;
final int usedBarLength = (int)(totalBarLength * usedMem / maxMem);
final int unusedBarLength = (int)(totalBarLength * unusedMem / maxMem);
final int barHeight = FRAMED_STYLE ? HEIGHT : size.height;
final int barHeight = HEIGHT;
final int yOffset = (size.height - barHeight) / 2;
final int xOffset = insets.left;
@@ -170,7 +163,7 @@ public class MemoryUsagePanel extends JButton implements CustomStatusBarWidget {
}
// frame
if (FRAMED_STYLE && !UIUtil.isUnderDarcula()) {
if (!UIUtil.isUnderDarcula()) {
g2.setColor(USED_COLOR_2);
g2.drawRect(xOffset, yOffset, totalBarLength - 1, barHeight - 1);
}
@@ -2,14 +2,14 @@
// Each line contains plugin ID and list of versions that are broken.
// If plugin name or version contains a space you can quote it like in command line.
NodeJS 134.1163 134.1145 134.1081 134.1039 134.985 134.680 134.31 134.307 134.262 134.198 134.125
com.jetbrains.php 133.679 133.51 133.326 131.98 131.374 131.332 131.235 131.205 130.1639 130.1481 130.1176 129.91 129.814 129.672 129.362 127.67 127.100 126.334 123.66 122.875 121.62 121.390 121.215 121.12
NodeJS 134.1276 134.1163 134.1145 134.1081 134.1039 134.985 134.680 134.31 134.307 134.262 134.198 134.125
com.jetbrains.php 133.982 133.679 133.51 133.326 131.98 131.374 131.332 131.235 131.205 130.1639 130.1481 130.1176 129.91 129.814 129.672 129.362 127.67 127.100 126.334 123.66 122.875 121.62 121.390 121.215 121.12
com.jetbrains.lang.ejs 131.17 131.12
com.jetbrains.twig 133.51 130.1639
//org.jetbrains.plugins.ruby 6.0.0.20140207
org.jetbrains.plugins.ruby 6.0.0.20140207
Pythonid 3.1
Karma 134.686 134.31
Karma 134.1163 134.1039 134.686 134.31
org.intellij.scala 0.32.512
org.jetbrains.kannotator 0.2.420
SBT 1.0.0 1.1.0 1.2.0 1.3.0 1.3.1 1.4.0 1.5.0
"JSTestDriver Plugin" 134.686 134.31 134.307 134.1039
"JSTestDriver Plugin" 134.1163 134.686 134.31 134.307 134.1039
@@ -441,6 +441,10 @@ public class ArrayUtil extends ArrayUtilRt {
return indexOf(src, obj);
}
public static <T> int find(@NotNull final T[] src, final T obj) {
return ArrayUtilRt.find(src, obj);
}
public static boolean startsWith(@NotNull byte[] array, @NotNull byte[] prefix) {
if (array == prefix) {
return true;
@@ -15,6 +15,7 @@
*/
package com.intellij.xdebugger.impl.breakpoints;
import com.intellij.execution.impl.ConsoleViewUtil;
import com.intellij.ide.startup.StartupManagerEx;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
@@ -25,6 +26,7 @@ import com.intellij.openapi.editor.colors.EditorColorsAdapter;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.event.*;
import com.intellij.openapi.editor.ex.util.EditorUtil;
import com.intellij.openapi.editor.markup.MarkupEditorFilterFactory;
import com.intellij.openapi.editor.markup.RangeHighlighter;
import com.intellij.openapi.fileEditor.FileDocumentManager;
@@ -71,12 +73,9 @@ public class XLineBreakpointManager {
myStartupManager = (StartupManagerEx)startupManager;
if (!myProject.isDefault()) {
DocumentAdapter documentListener = new MyDocumentListener();
EditorMouseAdapter editorMouseListener = new MyEditorMouseListener();
EditorEventMulticaster editorEventMulticaster = EditorFactory.getInstance().getEventMulticaster();
editorEventMulticaster.addDocumentListener(documentListener,project);
editorEventMulticaster.addEditorMouseListener(editorMouseListener, project);
editorEventMulticaster.addDocumentListener(new MyDocumentListener(), project);
editorEventMulticaster.addEditorMouseListener(new MyEditorMouseListener(), project);
final MyDependentBreakpointListener myDependentBreakpointListener = new MyDependentBreakpointListener();
myDependentBreakpointManager.addListener(myDependentBreakpointListener);
@@ -248,7 +247,7 @@ public class XLineBreakpointManager {
private class MyEditorMouseListener extends EditorMouseAdapter {
@Override
public void mouseClicked(final EditorMouseEvent e) {
public void mouseClicked(EditorMouseEvent e) {
final Editor editor = e.getEditor();
final MouseEvent mouseEvent = e.getMouseEvent();
if (mouseEvent.isPopupTrigger()
@@ -256,6 +255,7 @@ public class XLineBreakpointManager {
|| mouseEvent.getButton() != MouseEvent.BUTTON1
|| MarkupEditorFilterFactory.createIsDiffFilter().avaliableIn(editor)
|| e.getArea() != EditorMouseEventArea.LINE_MARKERS_AREA
|| ConsoleViewUtil.isConsoleViewEditor(editor)
||!isFromMyProject(editor)) {
return;
}
@@ -263,7 +263,7 @@ public class XLineBreakpointManager {
PsiDocumentManager.getInstance(myProject).commitAndRunReadAction(new Runnable() {
@Override
public void run() {
final int line = editor.xyToLogicalPosition(mouseEvent.getPoint()).line;
final int line = EditorUtil.yPositionToLogicalLine(editor, mouseEvent);
final Document document = editor.getDocument();
final VirtualFile file = FileDocumentManager.getInstance().getFile(document);
if (line >= 0 && line < document.getLineCount() && file != null) {
@@ -281,7 +281,11 @@ public class XLineBreakpointManager {
}
}
private boolean isFromMyProject(Editor editor) {
private boolean isFromMyProject(@NotNull Editor editor) {
if (myProject == editor.getProject()) {
return true;
}
for (FileEditor fileEditor : FileEditorManager.getInstance(myProject).getAllEditors()) {
if (fileEditor instanceof TextEditor && ((TextEditor)fileEditor).getEditor().equals(editor)) {
return true;
@@ -44,6 +44,10 @@ public class InterfaceMayBeAnnotatedFunctionalInspectionTest extends LightInspec
"}");
}
public void testAnnotationType() {
doTest("@interface A {}");
}
@Override
protected InspectionProfileEntry getInspection() {
return new InterfaceMayBeAnnotatedFunctionalInspection();
@@ -432,6 +432,7 @@ public class GroovyDslFileIndex extends ScalarIndexExtension<String> {
}
private static final Key<CachedValue<List<GroovyDslScript>>> SCRIPTS_CACHE = Key.create("GdslScriptCache");
private static List<GroovyDslScript> getDslScripts(final Project project) {
return CachedValuesManager.getManager(project).getCachedValue(project, SCRIPTS_CACHE, new CachedValueProvider<List<GroovyDslScript>>() {
@Override
@@ -445,9 +446,6 @@ public class GroovyDslFileIndex extends ScalarIndexExtension<String> {
List<GroovyDslScript> result = new ArrayList<GroovyDslScript>();
List<Pair<File, GroovyDslExecutor>> standardScripts = getStandardScripts();
if (ourGdslStopped) {
return Result.create(Collections.<GroovyDslScript>emptyList(), Collections.emptyList());
}
assert standardScripts != null;
for (Pair<File, GroovyDslExecutor> pair : standardScripts) {
result.add(new GroovyDslScript(project, null, pair.second, pair.first.getPath()));
@@ -457,7 +455,8 @@ public class GroovyDslFileIndex extends ScalarIndexExtension<String> {
new LinkedBlockingQueue<Pair<VirtualFile, GroovyDslExecutor>>();
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
for (VirtualFile vfile : FileBasedIndex.getInstance().getContainingFiles(NAME, OUR_KEY, GlobalSearchScope.allScope(project))) {
final GlobalSearchScope scope = GlobalSearchScope.allScope(project);
for (VirtualFile vfile : FileBasedIndex.getInstance().getContainingFiles(NAME, OUR_KEY, scope)) {
if (!vfile.isValid()) {
continue;
}