diff --git a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java index 62948cb62279..0e5e290be799 100644 --- a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java +++ b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java @@ -330,9 +330,11 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, EditorOptions editorOptions = options.getEditorOptions(); ZoomOptions zoomOptions = editorOptions.getZoomOptions(); if (zoomOptions.isWheelZooming() && e.isControlDown()) { - if (e.getWheelRotation() < 0) { + int rotation = e.getWheelRotation(); + if (rotation < 0) { zoomModel.zoomOut(); - } else { + } + else if (rotation > 0) { zoomModel.zoomIn(); } e.consume(); diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java b/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java index 0d46f2fba155..f504c0f67655 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/JavaSmartStepIntoHandler.java @@ -52,8 +52,9 @@ import org.jetbrains.org.objectweb.asm.MethodVisitor; import org.jetbrains.org.objectweb.asm.Opcodes; import java.util.Collections; +import java.util.Deque; +import java.util.LinkedList; import java.util.List; -import java.util.Stack; /** * User: Alexander Podkhalyuzin @@ -144,14 +145,14 @@ public class JavaSmartStepIntoHandler extends JvmSmartStepIntoHandler { final Ref textRange = new Ref<>(lineRange); final PsiElementVisitor methodCollector = new JavaRecursiveElementVisitor() { - final Stack myContextStack = new Stack<>(); - final Stack myParamNameStack = new Stack<>(); + final Deque myContextStack = new LinkedList<>(); + final Deque myParamNameStack = new LinkedList<>(); private int myNextLambdaExpressionOrdinal = 0; private boolean myInsideLambda = false; @Nullable private String getCurrentParamName() { - return myParamNameStack.isEmpty() ? null : myParamNameStack.peek(); + return myParamNameStack.peekFirst(); } @Override @@ -257,7 +258,7 @@ public class JavaSmartStepIntoHandler extends JvmSmartStepIntoHandler { } public void visitExpressionList(PsiExpressionList expressionList) { - final PsiMethod psiMethod = myContextStack.isEmpty()? null : myContextStack.peek(); + PsiMethod psiMethod = myContextStack.peekFirst(); if (psiMethod != null) { final String methodName = psiMethod.getName(); final PsiExpression[] expressions = expressionList.getExpressions(); diff --git a/java/debugger/impl/src/com/intellij/debugger/jdi/LocalVariablesUtil.java b/java/debugger/impl/src/com/intellij/debugger/jdi/LocalVariablesUtil.java index 2880847a8adf..dfb00467a1cf 100644 --- a/java/debugger/impl/src/com/intellij/debugger/jdi/LocalVariablesUtil.java +++ b/java/debugger/impl/src/com/intellij/debugger/jdi/LocalVariablesUtil.java @@ -360,15 +360,13 @@ public class LocalVariablesUtil { private final MultiMap myNames; private int myCurrentSlotIndex; private final PsiElement myElement; - private final Stack myIndexStack; + private final Deque myIndexStack = new LinkedList<>(); private boolean myReached = false; public LocalVariableNameFinder(int startSlot, MultiMap names, PsiElement element) { myNames = names; myCurrentSlotIndex = startSlot; myElement = element; - myIndexStack = new Stack<>(); - } private boolean shouldVisit(PsiElement scope) { diff --git a/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java index 189f80bb6ed1..514a82daa105 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/AbstractPatternBasedConfigurationProducer.java @@ -165,11 +165,12 @@ public abstract class AbstractPatternBasedConfigurationProducer allCarets = editor.getCaretModel().getAllCarets(); - if (allCarets.size() > 1) { - final PsiFile editorFile = CommonDataKeys.PSI_FILE.getData(dataContext); - if (editorFile != null) { + if (editorFile != null) { + if (allCarets.size() > 1) { final Set methods = new LinkedHashSet<>(); for (Caret caret : allCarets) { ContainerUtil.addIfNotNull(methods, PsiTreeUtil.getParentOfType(editorFile.findElementAt(caret.getOffset()), PsiMethod.class)); @@ -178,9 +179,16 @@ public abstract class AbstractPatternBasedConfigurationProducerList of PsiReferenceExpression of uninitialized final variables private final Map> myUninitializedVarProblems = new THashMap<>(); @@ -155,13 +156,9 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh @Override public boolean analyze(@NotNull PsiFile file, boolean updateWholeFile, @NotNull HighlightInfoHolder holder, @NotNull Runnable highlight) { - myFile = file; - myHolder = Holder.CHECK_ELEMENT_LEVEL ? new CheckLevelHighlightInfoHolder(file, holder) : holder; - boolean success = true; try { - myLanguageLevel = PsiUtil.getLanguageLevel(file); - myJavaSdkVersion = notNull(JavaVersionService.getInstance().getJavaSdkVersion(file), JavaSdkVersion.fromLanguageLevel(myLanguageLevel)); + prepare(Holder.CHECK_ELEMENT_LEVEL ? new CheckLevelHighlightInfoHolder(file, holder) : holder, file); if (updateWholeFile) { ProgressIndicator progress = ProgressManager.getInstance().getProgressIndicator(); if (progress == null) throw new IllegalStateException("Must be run under progress"); @@ -193,6 +190,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh myReassignedParameters.clear(); myRefCountHolder = null; + myJavaModule = null; myFile = null; myHolder = null; myDuplicateMethods.clear(); @@ -202,6 +200,18 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh return success; } + protected void prepareToRunAsInspection(@NotNull HighlightInfoHolder holder) { + prepare(holder, holder.getContextFile()); + } + + private void prepare(HighlightInfoHolder holder, PsiFile file) { + myHolder = holder; + myFile = file; + myLanguageLevel = PsiUtil.getLanguageLevel(file); + myJavaSdkVersion = notNull(JavaVersionService.getInstance().getJavaSdkVersion(file), JavaSdkVersion.fromLanguageLevel(myLanguageLevel)); + myJavaModule = myLanguageLevel.isAtLeast(LanguageLevel.JDK_1_9) ? ModuleHighlightUtil.getModuleDescriptor(file) : null; + } + @Override public void visitElement(PsiElement element) { if (myRefCountHolder != null && myFile instanceof ServerPageFile) { @@ -1030,8 +1040,14 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh @Override public void visitReferenceElement(PsiJavaCodeReferenceElement ref) { - JavaResolveResult resolveResult = doVisitReferenceElement(ref); - if (resolveResult != null && !myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkRawOnParameterizedType(ref, resolveResult.getElement())); + JavaResolveResult result = doVisitReferenceElement(ref); + if (result != null) { + PsiElement resolved = result.getElement(); + if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkRawOnParameterizedType(ref, resolved)); + if (!myHolder.hasErrorResults() && resolved != null && myJavaModule != null) { + myHolder.add(ModuleHighlightUtil.checkPackageAccessibility(ref, resolved, myJavaModule)); + } + } } private JavaResolveResult doVisitReferenceElement(@NotNull PsiJavaCodeReferenceElement ref) { @@ -1688,14 +1704,4 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh private HighlightInfo checkFeature(@NotNull PsiElement element, @NotNull Feature feature) { return HighlightUtil.checkFeature(element, feature, myLanguageLevel, myFile); } - - protected void prepareToRunAsInspection(@NotNull HighlightInfoHolder holder) { - PsiFile file = holder.getContextFile(); - JavaSdkVersion sdkVersion = JavaVersionService.getInstance().getJavaSdkVersion(file); - - myHolder = holder; - myFile = file; - myLanguageLevel = PsiUtil.getLanguageLevel(file); - myJavaSdkVersion = sdkVersion != null ? sdkVersion : JavaSdkVersion.fromLanguageLevel(myLanguageLevel); - } } \ No newline at end of file diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphBuilder.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphBuilder.java deleted file mode 100644 index 3a1441b2c504..000000000000 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphBuilder.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2000-2016 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.codeInsight.daemon.impl.analysis; - -import com.intellij.openapi.application.ReadAction; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; -import com.intellij.psi.search.FilenameIndex; -import com.intellij.psi.util.CachedValueProvider.Result; -import com.intellij.psi.util.CachedValuesManager; -import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.MultiMap; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.Graph; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.intellij.psi.PsiJavaModule.MODULE_INFO_FILE; -import static com.intellij.psi.SyntaxTraverser.psiTraverser; -import static com.intellij.psi.util.PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT; - -public class JavaModuleGraphBuilder { - private JavaModuleGraphBuilder() { } - - @Nullable - public static Graph getOrBuild(@NotNull Project project) { - return CachedValuesManager.getManager(project).getCachedValue(project, () -> { - Graph graph = ReadAction.compute(() -> build(project)); - return Result.create(graph, OUT_OF_CODE_BLOCK_MODIFICATION_COUNT); - }); - } - - @Nullable - public static Collection findCycle(@NotNull Graph graph, @NotNull PsiJavaModule module) { - return ((JavaModuleGraph)graph).myCycles.stream().filter(set -> set.contains(module)).findFirst().orElse(null); - } - - // Discovers relationships between Java modules in the project. - // Library/JDK modules are excluded - in assumption there can't be any lib -> src dependencies. - private static Graph build(Project project) { - Set projectModules = ContainerUtil.newHashSet(); - for (Module module : ModuleManager.getInstance(project).getModules()) { - Collection files = FilenameIndex.getVirtualFilesByName(project, MODULE_INFO_FILE, module.getModuleScope(false)); - if (files.size() > 1) return null; // aborts the process when there are incorrect modules in the project - VirtualFile vFile = ContainerUtil.getFirstItem(files); - if (vFile != null) { - PsiFile psiFile = PsiManager.getInstance(project).findFile(vFile); - if (psiFile instanceof PsiJavaFile) { - PsiJavaModule moduleDeclaration = ((PsiJavaFile)psiFile).getModuleDeclaration(); - if (moduleDeclaration != null) { - projectModules.add(moduleDeclaration); - } - } - } - } - - MultiMap relations = MultiMap.create(); - for (PsiJavaModule moduleDeclaration : projectModules) { - for (PsiRequiresStatement statement : psiTraverser().children(moduleDeclaration).filter(PsiRequiresStatement.class)) { - PsiJavaModule dependency = resolveDependency(statement); - if (dependency != null && projectModules.contains(dependency)) { - relations.putValue(moduleDeclaration, dependency); - } - } - } - return new JavaModuleGraph(relations); - } - - private static PsiJavaModule resolveDependency(PsiRequiresStatement statement) { - PsiJavaModuleReferenceElement refElement = statement.getReferenceElement(); - if (refElement != null) { - PsiPolyVariantReference ref = refElement.getReference(); - if (ref != null) { - ResolveResult[] results = ref.multiResolve(true); - if (results.length == 1) { - PsiElement target = results[0].getElement(); - if (target instanceof PsiJavaModule) { - return (PsiJavaModule)target; - } - } - } - } - - return null; - } - - private static class JavaModuleGraph implements Graph { - private final MultiMap myMap; - private final List> myCycles; - - public JavaModuleGraph(MultiMap map) { - myMap = map; - - DFSTBuilder builder = new DFSTBuilder<>(this); - myCycles = builder.getComponents().stream() - .map(ContainerUtil::newLinkedHashSet) - .collect(Collectors.toList()); - } - - @Override - public Collection getNodes() { - return myMap.keySet(); - } - - @Override - public Iterator getIn(PsiJavaModule n) { - return ContainerUtil.emptyIterator(); - } - - @Override - public Iterator getOut(PsiJavaModule n) { - return myMap.get(n).iterator(); - } - } -} \ No newline at end of file diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java new file mode 100644 index 000000000000..48400b4eef99 --- /dev/null +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java @@ -0,0 +1,211 @@ +/* + * Copyright 2000-2016 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.codeInsight.daemon.impl.analysis; + +import com.intellij.openapi.application.ReadAction; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.*; +import com.intellij.psi.search.FilenameIndex; +import com.intellij.psi.util.CachedValueProvider.Result; +import com.intellij.psi.util.CachedValuesManager; +import com.intellij.psi.util.PsiUtil; +import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.MultiMap; +import com.intellij.util.graph.DFSTBuilder; +import com.intellij.util.graph.Graph; +import com.intellij.util.graph.GraphGenerator; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.stream.Collectors; + +import static com.intellij.psi.PsiJavaModule.MODULE_INFO_FILE; +import static com.intellij.psi.SyntaxTraverser.psiTraverser; +import static com.intellij.psi.util.PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT; + +public class JavaModuleGraphUtil { + private JavaModuleGraphUtil() { } + + @Nullable + public static Collection findCycle(@NotNull PsiJavaModule module) { + Project project = module.getProject(); + List> cycles = CachedValuesManager.getManager(project).getCachedValue(project, () -> + Result.create(ReadAction.compute(() -> findCycles(project)), OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)); + return ContainerUtil.find(cycles, set -> set.contains(module)); + } + + public static boolean reads(@NotNull PsiJavaModule source, @NotNull PsiJavaModule destination) { + Project project = source.getProject(); + RequiresGraph graph = CachedValuesManager.getManager(project).getCachedValue(project, () -> + Result.create(ReadAction.compute(() -> buildRequiresGraph(project)), OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)); + return graph.reads(source, destination); + } + + // Looks for cycles between Java modules in the project sources. + // Library/JDK modules are excluded - in assumption there can't be any lib -> src dependencies. + // Module references are resolved "globally" (i.e., without taking project dependencies into account). + private static List> findCycles(Project project) { + Set projectModules = ContainerUtil.newHashSet(); + for (Module module : ModuleManager.getInstance(project).getModules()) { + Collection files = FilenameIndex.getVirtualFilesByName(project, MODULE_INFO_FILE, module.getModuleScope(false)); + if (files.size() > 1) return Collections.emptyList(); // aborts the process when there are incorrect modules in the project + Optional.ofNullable(ContainerUtil.getFirstItem(files)) + .map(PsiManager.getInstance(project)::findFile) + .map(f -> f instanceof PsiJavaFile ? ((PsiJavaFile)f).getModuleDeclaration() : null) + .ifPresent(projectModules::add); + } + + if (!projectModules.isEmpty()) { + MultiMap relations = MultiMap.create(); + for (PsiJavaModule module : projectModules) { + for (PsiRequiresStatement statement : psiTraverser().children(module).filter(PsiRequiresStatement.class)) { + Optional.ofNullable(statement.getReferenceElement()) + .map(PsiJavaModuleReferenceElement::getReference) + .map(ref -> ref.multiResolve(true)) + .map(a -> a.length == 1 ? a[0].getElement() : null) + .map(e -> e instanceof PsiJavaModule ? (PsiJavaModule)e : null) + .filter(projectModules::contains) + .ifPresent(dependency -> relations.putValue(module, dependency)); + } + } + + if (!relations.isEmpty()) { + Graph graph = new SourceSemiGraph(relations); + DFSTBuilder builder = new DFSTBuilder<>(graph); + Collection> components = builder.getComponents(); + if (!components.isEmpty()) { + return components.stream().map(ContainerUtil::newLinkedHashSet).collect(Collectors.toList()); + } + } + } + + return Collections.emptyList(); + } + + // Starting from source modules, collects all module dependencies in the project. + // The resulting graph is used for tracing readability. + private static RequiresGraph buildRequiresGraph(Project project) { + MultiMap relations = MultiMap.create(); + Set publicEdges = ContainerUtil.newTroveSet(); + for (Module module : ModuleManager.getInstance(project).getModules()) { + Collection files = FilenameIndex.getVirtualFilesByName(project, MODULE_INFO_FILE, module.getModuleScope(false)); + Optional.ofNullable(ContainerUtil.getFirstItem(files)) + .map(PsiManager.getInstance(project)::findFile) + .map(f -> f instanceof PsiJavaFile ? ((PsiJavaFile)f).getModuleDeclaration() : null) + .ifPresent(m -> visit(m, relations, publicEdges)); + } + + GraphGenerator graph = GraphGenerator.create(new RequiresSemiGraph(relations)); + return new RequiresGraph(graph, publicEdges); + } + + private static void visit(PsiJavaModule module, MultiMap relations, Set publicEdges) { + if (!relations.containsKey(module)) { + relations.putValues(module, Collections.emptyList()); + for (PsiRequiresStatement statement : psiTraverser().children(module).filter(PsiRequiresStatement.class)) { + Optional.ofNullable(statement.getReferenceElement()) + .map(PsiJavaModuleReferenceElement::getReference) + .map(PsiReference::resolve) + .map(e -> e instanceof PsiJavaModule ? (PsiJavaModule)e : null) + .ifPresent(dependency -> { + relations.putValue(module, dependency); + if (isPublic(statement)) publicEdges.add(RequiresGraph.key(dependency, module)); + visit(dependency, relations, publicEdges); + }); + } + } + } + + private static boolean isPublic(PsiRequiresStatement statement) { + for (PsiElement child = statement.getFirstChild(); child != null; child = child.getNextSibling()) { + if (PsiUtil.isJavaToken(child, JavaTokenType.PUBLIC_KEYWORD)) return true; + if (child instanceof PsiJavaModuleReferenceElement) break; + } + return false; + } + + private static class RequiresGraph { + private final Graph myGraph; + private final Set myPublicEdges; + + public RequiresGraph(Graph graph, Set publicEdges) { + myGraph = graph; + myPublicEdges = publicEdges; + } + + public boolean reads(PsiJavaModule source, PsiJavaModule destination) { + Iterator directReaders = myGraph.getOut(destination); + while (directReaders.hasNext()) { + PsiJavaModule next = directReaders.next(); + if (source.equals(next) || myPublicEdges.contains(key(destination, next)) && reads(source, next)) { + return true; + } + } + return false; + } + + public static String key(PsiJavaModule module, PsiJavaModule exporter) { + return module.getModuleName() + '/' + exporter.getModuleName(); + } + } + + // + private static class SourceSemiGraph implements Graph { + private final MultiMap myMap; + + public SourceSemiGraph(MultiMap map) { + myMap = map; + } + + @Override + public Collection getNodes() { + return myMap.keySet(); + } + + @Override + public Iterator getIn(PsiJavaModule n) { + throw new UnsupportedOperationException(); + } + + @Override + public Iterator getOut(PsiJavaModule n) { + return myMap.get(n).iterator(); + } + } + + private static class RequiresSemiGraph implements GraphGenerator.SemiGraph { + private final MultiMap myMap; + + public RequiresSemiGraph(MultiMap map) { + myMap = map; + } + + @Override + public Collection getNodes() { + return myMap.keySet(); + } + + @Override + public Iterator getIn(PsiJavaModule n) { + return myMap.get(n).iterator(); + } + } + // +} \ No newline at end of file diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/LambdaHighlightingUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/LambdaHighlightingUtil.java index c20953f75a17..95a692f56796 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/LambdaHighlightingUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/LambdaHighlightingUtil.java @@ -113,11 +113,8 @@ public class LambdaHighlightingUtil { final PsiClass aClass = resolveResult.getElement(); if (aClass != null) { if (aClass instanceof PsiTypeParameter) return null; //should be logged as cyclic inference - final List signatures = LambdaUtil.findFunctionCandidates(aClass); - if (signatures != null && signatures.size() == 1) { - final MethodSignature functionalMethod = signatures.get(0); - if (functionalMethod.getTypeParameters().length > 0) return "Target method is generic"; - } + MethodSignature functionalMethod = LambdaUtil.getFunction(aClass); + if (functionalMethod != null && functionalMethod.getTypeParameters().length > 0) return "Target method is generic"; if (checkReturnTypeApplicable(resolveResult, aClass)) { return "No instance of type " + functionalInterfaceType.getPresentableText() + " exists so that lambda expression can be type-checked"; } diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/ModuleHighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/ModuleHighlightUtil.java index f8100e070e4f..480c5b0af920 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/ModuleHighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/ModuleHighlightUtil.java @@ -37,7 +37,6 @@ import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.JBIterable; -import com.intellij.util.graph.Graph; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.PropertyKey; @@ -55,6 +54,34 @@ import static com.intellij.psi.PsiJavaModule.MODULE_INFO_FILE; import static com.intellij.psi.SyntaxTraverser.psiTraverser; public class ModuleHighlightUtil { + @Nullable + static PsiJavaModule getModuleDescriptor(@NotNull PsiElement element) { + VirtualFile file = Optional.of(element) + .map(e -> e instanceof PsiFileSystemItem ? (PsiFileSystemItem)e : e.getContainingFile()) + .map(PsiFileSystemItem::getVirtualFile) + .orElse(null); + if (file == null) return null; + + Project project = element.getProject(); + ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(project); + if (element instanceof PsiCompiledElement) { + return Optional.ofNullable(index.getClassRootForFile(file)) + .map(r -> r.findChild(PsiJavaModule.MODULE_INFO_CLS_FILE)) + .map(PsiManager.getInstance(project)::findFile) + .map(f -> f instanceof PsiJavaFile ? ((PsiJavaFile)f).getModuleDeclaration() : null) + .orElse(null); + } + else { + Module module = index.getModuleForFile(file); + return Optional.ofNullable(module) + .map(m -> FilenameIndex.getVirtualFilesByName(project, MODULE_INFO_FILE, m.getModuleScope(false))) + .map(c -> c.size () == 1 ? c.iterator().next() : null) + .map(PsiManager.getInstance(project)::findFile) + .map(f -> f instanceof PsiJavaFile ? ((PsiJavaFile)f).getModuleDeclaration() : null) + .orElse(null); + } + } + @Nullable static HighlightInfo checkFileName(@NotNull PsiJavaModule element, @NotNull PsiFile file) { if (!MODULE_INFO_FILE.equals(file.getName())) { @@ -198,15 +225,12 @@ public class ModuleHighlightUtil { return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(refElement).description(message).create(); } else { - Graph graph = JavaModuleGraphBuilder.getOrBuild(target.getProject()); - if (graph != null) { - Collection cycle = JavaModuleGraphBuilder.findCycle(graph, (PsiJavaModule)target); - if (cycle != null && cycle.contains(container)) { - Stream stream = cycle.stream().map(PsiJavaModule::getModuleName); - if (ApplicationManager.getApplication().isUnitTestMode()) stream = stream.sorted(); - String message = JavaErrorMessages.message("module.cyclic.dependence", stream.collect(Collectors.joining(", "))); - return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(refElement).description(message).create(); - } + Collection cycle = JavaModuleGraphUtil.findCycle((PsiJavaModule)target); + if (cycle != null && cycle.contains(container)) { + Stream stream = cycle.stream().map(PsiJavaModule::getModuleName); + if (ApplicationManager.getApplication().isUnitTestMode()) stream = stream.sorted(); + String message = JavaErrorMessages.message("module.cyclic.dependence", stream.collect(Collectors.joining(", "))); + return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(refElement).description(message).create(); } } } @@ -311,6 +335,70 @@ public class ModuleHighlightUtil { return null; } + @Nullable + static HighlightInfo checkPackageAccessibility(@NotNull PsiJavaCodeReferenceElement ref, + @NotNull PsiElement target, + @NotNull PsiJavaModule refModule) { + Module module = ModuleUtilCore.findModuleForPsiElement(ref); + if (module != null) { + if (target instanceof PsiClass && !(target instanceof PsiCompiledElement) && module != ModuleUtilCore.findModuleForPsiElement(target)) { + PsiElement targetFile = target.getParent(); + if (targetFile instanceof PsiClassOwner) { + PsiJavaModule targetModule = getModuleDescriptor(target); + String packageName = ((PsiClassOwner)targetFile).getPackageName(); + return checkPackageAccessibility(ref, refModule, targetModule, packageName); + } + } + else if (target instanceof PsiPackage) { + PsiElement refImport = ref.getParent(); + if (refImport instanceof PsiImportStatementBase && ((PsiImportStatementBase)refImport).isOnDemand()) { + PsiDirectory[] dirs = ((PsiPackage)target).getDirectories(module.getModuleWithDependenciesAndLibrariesScope(false)); + if (dirs.length == 1 && ModuleUtilCore.findModuleForPsiElement(dirs[0]) != module) { + PsiJavaModule targetModule = getModuleDescriptor(dirs[0]); + String packageName = ((PsiPackage)target).getQualifiedName(); + return checkPackageAccessibility(ref, refModule, targetModule, packageName); + } + } + } + } + + return null; + } + + private static HighlightInfo checkPackageAccessibility(PsiJavaCodeReferenceElement ref, + PsiJavaModule refModule, + PsiJavaModule targetModule, + String packageName) { + if (targetModule == null) { + String message = JavaErrorMessages.message("module.package.on.classpath"); + return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(ref).description(message).create(); + } + + String refModuleName = refModule.getModuleName(); + String requiredName = targetModule.getModuleName(); + if (!(targetModule instanceof PsiCompiledElement) && !isExported(targetModule, packageName)) { + String message = JavaErrorMessages.message("module.package.not.exported", requiredName, packageName, refModuleName); + return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(ref).description(message).create(); + } + + if (!(PsiJavaModule.JAVA_BASE.equals(requiredName) || JavaModuleGraphUtil.reads(refModule, targetModule))) { + String message = JavaErrorMessages.message("module.not.in.requirements", refModuleName, requiredName); + return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(ref).description(message).create(); + } + + return null; + } + + private static boolean isExported(PsiJavaModule module, String packageName) { + for (PsiExportsStatement statement : psiTraverser().children(module).filter(PsiExportsStatement.class)) { + String exportedName = Optional.ofNullable(statement.getPackageReference()).map(ModuleHighlightUtil::refText).orElse(""); + if (packageName.equals(exportedName)) { + return true; + } + } + return false; + } + private static HighlightInfo moduleResolveError(PsiJavaModuleReferenceElement refElement, PsiPolyVariantReference ref) { boolean missing = ref.multiResolve(true).length == 0; String message = JavaErrorMessages.message(missing ? "module.not.found" : "module.not.on.path", refElement.getReferenceText()); diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java index eaecb9b92551..0300a2e1f30c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeLambdaInspection.java @@ -359,16 +359,10 @@ public class AnonymousCanBeLambdaInspection extends BaseJavaBatchLocalInspection } private static class ReplaceWithLambdaFix implements LocalQuickFix, HighPriorityAction { - @NotNull - @Override - public String getName() { - return "Replace with lambda"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Replace with lambda"; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeMethodReferenceInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeMethodReferenceInspection.java index f74912d75516..d0a5790a9882 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeMethodReferenceInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousCanBeMethodReferenceInspection.java @@ -114,17 +114,11 @@ public class AnonymousCanBeMethodReferenceInspection extends BaseJavaBatchLocalI private static class ReplaceWithMethodRefFix implements LocalQuickFix { @NotNull @Override - public String getName() { + public String getFamilyName() { return "Replace with method reference"; } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - - @Override + @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { final PsiElement element = descriptor.getPsiElement(); if (element instanceof PsiNewExpression) { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/BlockMarkerCommentsInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/BlockMarkerCommentsInspection.java index f2d8f77267a7..1d85c083d89e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/BlockMarkerCommentsInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/BlockMarkerCommentsInspection.java @@ -91,12 +91,6 @@ public class BlockMarkerCommentsInspection extends BaseJavaBatchLocalInspectionT } if (MARKER_PATTERN.accepts(element)) { holder.registerProblem(element, "Redundant block marker", new LocalQuickFix() { - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java index 100cc979e235..000e9d7887f4 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/ExplicitTypeCanBeDiamondInspection.java @@ -82,16 +82,10 @@ public class ExplicitTypeCanBeDiamondInspection extends BaseJavaBatchLocalInspec } private static class ReplaceWithDiamondFix implements LocalQuickFix, HighPriorityAction { - @NotNull - @Override - public String getName() { - return "Replace with <>"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Replace with <>"; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java index ef9890c0e654..c86d71191de2 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java @@ -587,16 +587,10 @@ public class LambdaCanBeMethodReferenceInspection extends BaseJavaBatchLocalInsp } private static class ReplaceWithMethodRefFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return "Replace lambda with method reference"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Replace lambda with method reference"; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/PossibleHeapPollutionVarargsInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/PossibleHeapPollutionVarargsInspection.java index eb136dc4136f..cd8d9f319325 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/PossibleHeapPollutionVarargsInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/PossibleHeapPollutionVarargsInspection.java @@ -92,16 +92,10 @@ public class PossibleHeapPollutionVarargsInspection extends BaseJavaBatchLocalIn } private static class AnnotateAsSafeVarargsQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return "Annotate as @SafeVarargs"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Annotate as @SafeVarargs"; } @Override @@ -117,16 +111,10 @@ public class PossibleHeapPollutionVarargsInspection extends BaseJavaBatchLocalIn } private static class MakeFinalAndAnnotateQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return "Make final and annotate as @SafeVarargs"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Make final and annotate as @SafeVarargs"; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java index a05dd88c4700..71425f84396e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/RedundantLambdaCodeBlockInspection.java @@ -124,16 +124,10 @@ public class RedundantLambdaCodeBlockInspection extends BaseJavaBatchLocalInspec } private static class ReplaceWithExprFix implements LocalQuickFix, HighPriorityAction { - @NotNull - @Override - public String getName() { - return "Replace with expression lambda"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Replace with expression lambda"; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/RemoveAnnotationQuickFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/RemoveAnnotationQuickFix.java index 9899198be6aa..be605fa364cb 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/RemoveAnnotationQuickFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/RemoveAnnotationQuickFix.java @@ -40,7 +40,7 @@ public class RemoveAnnotationQuickFix implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return CodeInsightBundle.message("remove.annotation"); } @@ -58,10 +58,4 @@ public class RemoveAnnotationQuickFix implements LocalQuickFix { ExternalAnnotationsManager.getInstance(project).deannotate(myListOwner, myAnnotation.getQualifiedName()); } } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } \ No newline at end of file diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/TrivialMethodReferenceInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/TrivialMethodReferenceInspection.java index 5978a899105b..40edc3d4eaca 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/TrivialMethodReferenceInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/TrivialMethodReferenceInspection.java @@ -53,13 +53,6 @@ public class TrivialMethodReferenceInspection extends BaseJavaBatchLocalInspecti } private static class ReplaceMethodRefWithQualifierFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/canBeFinal/CanBeFinalInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/canBeFinal/CanBeFinalInspection.java index 9ca3844e0987..3b874fdfdc71 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/canBeFinal/CanBeFinalInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/canBeFinal/CanBeFinalInspection.java @@ -269,16 +269,10 @@ public class CanBeFinalInspection extends GlobalJavaBatchInspectionTool { myManager = manager; } - @Override - @NotNull - public String getName() { - return QUICK_FIX_NAME; - } - @Override @NotNull public String getFamilyName() { - return getName(); + return QUICK_FIX_NAME; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/RemoveElementQuickFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/RemoveElementQuickFix.java index 15ea06538dbd..29886f09a6b2 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/RemoveElementQuickFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/compiler/RemoveElementQuickFix.java @@ -29,12 +29,6 @@ public class RemoveElementQuickFix implements LocalQuickFix { myName = name; } - @NotNull - @Override - public String getName() { - return myName; - } - @NotNull @Override public String getFamilyName() { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java index 548e0dea874a..d0b186572877 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java @@ -833,7 +833,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { private static class RedundantInstanceofFix implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.data.flow.redundant.instanceof.quickfix"); } @@ -852,12 +852,6 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { } } } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } @@ -901,7 +895,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { } Collection getAlwaysFailingCalls() { - return StreamEx.of(myFailingCalls.keySet()).filter(this::isAlwaysFailing).map(MethodCallInstruction::getCallExpression).toList(); + return StreamEx.ofKeys(myFailingCalls, v -> v).map(MethodCallInstruction::getCallExpression).toList(); } @Override @@ -911,7 +905,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { DfaInstructionState[] states = super.visitMethodCall(instruction, runner, memState); if (hasNonTrivialFailingContracts(instruction)) { boolean allFail = Arrays.stream(states).allMatch(s -> s.getMemoryState().peek() == runner.getFactory().getConstFactory().getContractFail()); - myFailingCalls.put(instruction, allFail && isAlwaysFailing(instruction)); + myFailingCalls.merge(instruction, allFail, Boolean::logicalAnd); } return states; } @@ -926,10 +920,6 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { Arrays.stream(contract.arguments).anyMatch(v -> v != MethodContract.ValueConstraint.ANY_VALUE); } - private boolean isAlwaysFailing(MethodCallInstruction instruction) { - return !Boolean.FALSE.equals(myFailingCalls.get(instruction)); - } - @Override protected boolean checkNotNullable(DfaMemoryState state, DfaValue value, NullabilityProblem problem, PsiElement anchor) { boolean ok = super.checkNotNullable(state, value, problem, anchor); diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaOptionalSupport.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaOptionalSupport.java index 6ce8055fd0ae..866e6a6161c0 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaOptionalSupport.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaOptionalSupport.java @@ -100,13 +100,6 @@ public class DfaOptionalSupport { myClearArguments = clearArguments; } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java index c94794c36ecd..c200adb7bd91 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java @@ -484,13 +484,6 @@ public class Java8CollectionsApiInspection extends BaseJavaBatchLocalInspectionT } private static class ReplaceWithListSortFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override @@ -584,13 +577,6 @@ public class Java8CollectionsApiInspection extends BaseJavaBatchLocalInspectionT } private static class ReplaceWithRemoveIfQuickFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java b/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java index a4d2ea70c7c1..0a8c02246af9 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/localCanBeFinal/LocalCanBeFinal.java @@ -325,7 +325,7 @@ public class LocalCanBeFinal extends BaseJavaBatchLocalInspectionTool { private static class AcceptSuggested implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.can.be.final.accept.quickfix"); } @@ -344,12 +344,6 @@ public class LocalCanBeFinal extends BaseJavaBatchLocalInspectionTool { LOG.error(e); } } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/RedundantTypeArgsInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/RedundantTypeArgsInspection.java index 896f1061f6e1..01d79e175996 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/RedundantTypeArgsInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/miscGenerics/RedundantTypeArgsInspection.java @@ -167,7 +167,7 @@ public class RedundantTypeArgsInspection extends GenericsInspectionToolBase { private static class MyQuickFixAction implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.redundant.type.remove.quickfix"); } @@ -186,12 +186,6 @@ public class RedundantTypeArgsInspection extends GenericsInspectionToolBase { LOG.error(e); } } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } //separate quickfix is needed to invalidate initial method reference @@ -199,7 +193,7 @@ public class RedundantTypeArgsInspection extends GenericsInspectionToolBase { private static class MyMethodReferenceFixAction implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.redundant.type.remove.quickfix"); } @@ -212,11 +206,5 @@ public class RedundantTypeArgsInspection extends GenericsInspectionToolBase { expression.replace(createMethodReference(expression, typeElement)); } } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/ChangeNullableDefaultsFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/ChangeNullableDefaultsFix.java index aa3f0d087de8..237f227c4aa3 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/ChangeNullableDefaultsFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/ChangeNullableDefaultsFix.java @@ -43,16 +43,10 @@ class ChangeNullableDefaultsFix implements LocalQuickFix { myNullableName = nullable; } - @NotNull - @Override - public String getName() { - return "Make \"" + (myNotNullName != null ? myNotNullName : myNullableName) + "\" default annotation"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Make \"" + (myNotNullName != null ? myNotNullName : myNullableName) + "\" default annotation"; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java index fadb67ca50ca..c4b072952510 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/redundantCast/RedundantCastInspection.java @@ -133,7 +133,7 @@ public class RedundantCastInspection extends GenericsInspectionToolBase { private static class AcceptSuggested implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.redundant.cast.remove.quickfix"); } @@ -146,12 +146,6 @@ public class RedundantCastInspection extends GenericsInspectionToolBase { RedundantCastUtil.removeCast(cast); } } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/MigrateToStreamFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/MigrateToStreamFix.java index 4dd254602a3e..c4b333a19542 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/MigrateToStreamFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/MigrateToStreamFix.java @@ -19,6 +19,7 @@ import com.intellij.codeInsight.FileModificationService; import com.intellij.codeInspection.LambdaCanBeMethodReferenceInspection; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.InitializerUsageStatus; import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.Operation; import com.intellij.openapi.project.Project; import com.intellij.psi.*; @@ -72,14 +73,13 @@ abstract class MigrateToStreamFix implements LocalQuickFix { PsiType expressionType) { PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(project); restoreComments(foreachStatement, foreachStatement.getBody()); - if (StreamApiMigrationInspection.isDeclarationJustBefore(var, foreachStatement)) { + InitializerUsageStatus status = StreamApiMigrationInspection.getInitializerUsageStatus(var, foreachStatement); + if (status != InitializerUsageStatus.UNKNOWN) { PsiExpression initializer = var.getInitializer(); if (ExpressionUtils.isZero(initializer)) { PsiType type = var.getType(); String replacement = (type.equals(expressionType) ? "" : "(" + type.getCanonicalText() + ") ") + builder; - initializer.replace(elementFactory.createExpressionFromText(replacement, foreachStatement)); - removeLoop(foreachStatement); - simplifyAndFormat(project, var); + replaceInitializer(foreachStatement, var, initializer, replacement, status); return; } } @@ -88,6 +88,27 @@ abstract class MigrateToStreamFix implements LocalQuickFix { simplifyAndFormat(project, result); } + static void replaceInitializer(PsiForeachStatement foreachStatement, + PsiVariable var, + PsiExpression initializer, + String replacement, + InitializerUsageStatus status) { + Project project = foreachStatement.getProject(); + PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(project); + if(status == InitializerUsageStatus.DECLARED_JUST_BEFORE) { + initializer.replace(elementFactory.createExpressionFromText(replacement, foreachStatement)); + removeLoop(foreachStatement); + simplifyAndFormat(project, var); + } else { + if(status == InitializerUsageStatus.AT_WANTED_PLACE_ONLY) { + initializer.delete(); + } + PsiElement result = + foreachStatement.replace(elementFactory.createStatementFromText(var.getName() + " = " + replacement + ";", foreachStatement)); + simplifyAndFormat(project, result); + } + } + static void simplifyAndFormat(@NotNull Project project, PsiElement result) { if (result == null) return; LambdaCanBeMethodReferenceInspection.replaceAllLambdasWithMethodReferences(result); diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithCollectFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithCollectFix.java index ba04d8dc5f90..e092bdb21f79 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithCollectFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithCollectFix.java @@ -16,7 +16,9 @@ package com.intellij.codeInspection.streamMigration; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.InitializerUsageStatus; import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.Operation; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; @@ -32,6 +34,8 @@ import java.util.List; * @author Tagir Valeev */ class ReplaceWithCollectFix extends MigrateToStreamFix { + private static final Logger LOG = Logger.getInstance(ReplaceWithCollectFix.class); + final String myMethodName; protected ReplaceWithCollectFix(String methodName) { @@ -87,16 +91,18 @@ class ReplaceWithCollectFix extends MigrateToStreamFix { final StringBuilder builder = generateStream(iteratedValue, operations); final PsiExpression qualifierExpression = methodCallExpression.getMethodExpression().getQualifierExpression(); - final PsiExpression initializer = StreamApiMigrationInspection - .extractReplaceableCollectionInitializer(qualifierExpression, foreachStatement); - if (initializer != null) { - String callText = builder.append(".collect(java.util.stream.Collectors.") - .append(createInitializerReplacementText(qualifierExpression.getType(), initializer)) - .append(")").toString(); - PsiElement result = initializer.replace(elementFactory.createExpressionFromText(callText, null)); - simplifyAndFormat(project, result); - removeLoop(foreachStatement); - return; + final PsiLocalVariable variable = StreamApiMigrationInspection.extractCollectionVariable(qualifierExpression); + if (variable != null) { + InitializerUsageStatus status = StreamApiMigrationInspection.getInitializerUsageStatus(variable, foreachStatement); + if(status != InitializerUsageStatus.UNKNOWN) { + PsiExpression initializer = variable.getInitializer(); + LOG.assertTrue(initializer != null); + String callText = builder.append(".collect(java.util.stream.Collectors.") + .append(createInitializerReplacementText(qualifierExpression.getType(), initializer)) + .append(")").toString(); + replaceInitializer(foreachStatement, variable, initializer, callText, status); + return; + } } final String qualifierText = qualifierExpression != null ? qualifierExpression.getText() + "." : ""; diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithFindFirstFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithFindFirstFix.java index 0579ba2557b1..6eb0e9c86301 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithFindFirstFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithFindFirstFix.java @@ -16,6 +16,7 @@ package com.intellij.codeInspection.streamMigration; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.InitializerUsageStatus; import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.Operation; import com.intellij.openapi.project.Project; import com.intellij.psi.*; @@ -76,13 +77,12 @@ class ReplaceWithFindFirstFix extends MigrateToStreamFix { PsiExpression value = assignment.getRExpression(); if (value == null) return; restoreComments(foreachStatement, body); - if (StreamApiMigrationInspection.isDeclarationJustBefore(var, foreachStatement)) { + InitializerUsageStatus status = StreamApiMigrationInspection.getInitializerUsageStatus(var, foreachStatement); + if (status != InitializerUsageStatus.UNKNOWN) { PsiExpression initializer = var.getInitializer(); if (initializer != null) { - PsiElement result = - initializer.replace(elementFactory.createExpressionFromText(generateOptionalUnwrap(stream, tb, value, initializer), initializer)); - removeLoop(foreachStatement); - simplifyAndFormat(project, result); + String replacementText = generateOptionalUnwrap(stream, tb, value, initializer); + replaceInitializer(foreachStatement, var, initializer, replacementText, status); return; } } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithMatchFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithMatchFix.java index 0488e0e14cfd..5435eee33752 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithMatchFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/ReplaceWithMatchFix.java @@ -16,6 +16,7 @@ package com.intellij.codeInspection.streamMigration; import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.InitializerUsageStatus; import com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.Operation; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; @@ -93,7 +94,8 @@ class ReplaceWithMatchFix extends MigrateToStreamFix { // for(....) if(...) {flag = true; break;} PsiVariable var = (PsiVariable)maybeVar; PsiExpression initializer = var.getInitializer(); - if(initializer != null && StreamApiMigrationInspection.isDeclarationJustBefore(var, foreachStatement)) { + InitializerUsageStatus status = StreamApiMigrationInspection.getInitializerUsageStatus(var, foreachStatement); + if(initializer != null && status != InitializerUsageStatus.UNKNOWN) { String replacement; if(ExpressionUtils.isLiteral(initializer, Boolean.FALSE) && ExpressionUtils.isLiteral(rValue, Boolean.TRUE)) { @@ -104,9 +106,7 @@ class ReplaceWithMatchFix extends MigrateToStreamFix { } else { replacement = streamText + "?" + rValue.getText() + ":" + initializer.getText(); } - PsiElement result = initializer.replace(elementFactory.createExpressionFromText(replacement, initializer)); - removeLoop(foreachStatement); - simplifyAndFormat(project, result); + replaceInitializer(foreachStatement, var, initializer, replacement, status); return; } } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java index aad571a9b6fa..1e3bb608c47b 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java @@ -49,6 +49,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.*; +import static com.intellij.codeInspection.streamMigration.StreamApiMigrationInspection.InitializerUsageStatus.*; + /** * User: anna */ @@ -377,19 +379,17 @@ public class StreamApiMigrationInspection extends BaseJavaBatchLocalInspectionTo return consumerClass != null ? psiFacade.getElementFactory().createType(consumerClass, variable.getType()) : null; } - @Contract("null, _ -> null") - static PsiExpression extractReplaceableCollectionInitializer(PsiExpression qualifierExpression, PsiStatement foreachStatement) { + @Contract("null -> null") + static PsiLocalVariable extractCollectionVariable(PsiExpression qualifierExpression) { if (qualifierExpression instanceof PsiReferenceExpression) { final PsiElement resolve = ((PsiReferenceExpression)qualifierExpression).resolve(); if (resolve instanceof PsiLocalVariable) { PsiLocalVariable var = (PsiLocalVariable)resolve; - if (isDeclarationJustBefore(var, foreachStatement)) { - final PsiExpression initializer = var.getInitializer(); - if (initializer instanceof PsiNewExpression) { - final PsiExpressionList argumentList = ((PsiNewExpression)initializer).getArgumentList(); - if (argumentList != null && argumentList.getExpressions().length == 0) { - return initializer; - } + final PsiExpression initializer = var.getInitializer(); + if (initializer instanceof PsiNewExpression) { + final PsiExpressionList argumentList = ((PsiNewExpression)initializer).getArgumentList(); + if (argumentList != null && argumentList.getExpressions().length == 0) { + return var; } } } @@ -397,6 +397,40 @@ public class StreamApiMigrationInspection extends BaseJavaBatchLocalInspectionTo return null; } + enum InitializerUsageStatus { + // Variable is declared just before the wanted place + DECLARED_JUST_BEFORE, + // All initial value usages go through wanted place and at wanted place the variable value is guaranteed to be the initial value + AT_WANTED_PLACE_ONLY, + // At wanted place the variable value is guaranteed to be the initial value, but this initial value might be used somewhere else + AT_WANTED_PLACE, + // It's not guaranteed that the variable value at wanted place is initial value + UNKNOWN + } + + static InitializerUsageStatus getInitializerUsageStatus(PsiVariable var, PsiStatement nextStatement) { + if(var.getInitializer() == null) return UNKNOWN; + if(isDeclarationJustBefore(var, nextStatement)) return DECLARED_JUST_BEFORE; + PsiElement declaration = var.getParent(); + // Check if variable is not referenced in the same declaration like "int a = 0, b = a;" + if(!PsiTreeUtil.processElements(declaration, e -> !(e instanceof PsiReferenceExpression) || + ((PsiReferenceExpression)e).resolve() != var)) return UNKNOWN; + PsiElement block = PsiUtil.getVariableCodeBlock(var, null); + if(block == null) return UNKNOWN; + final ControlFlow controlFlow; + try { + controlFlow = ControlFlowFactory.getInstance(nextStatement.getProject()) + .getControlFlow(block, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance()); + } + catch (AnalysisCanceledException ignored) { + return UNKNOWN; + } + int start = controlFlow.getEndOffset(declaration); + int stop = controlFlow.getStartOffset(nextStatement); + if(ControlFlowUtil.isVariableReferencedBetween(controlFlow, start, stop, var)) return UNKNOWN; + return ControlFlowUtil.isValueUsedWithoutVisitingStop(controlFlow, start, stop, var) ? AT_WANTED_PLACE : AT_WANTED_PLACE_ONLY; + } + static boolean isDeclarationJustBefore(PsiVariable var, PsiStatement nextStatement) { PsiElement declaration = var.getParent(); PsiElement nextStatementParent = nextStatement.getParent(); @@ -482,8 +516,7 @@ public class StreamApiMigrationInspection extends BaseJavaBatchLocalInspectionTo methodName = "addAll"; } else { PsiMethodCallExpression methodCallExpression = tb.getSingleMethodCall(); - if(methodCallExpression != null && extractReplaceableCollectionInitializer( - methodCallExpression.getMethodExpression().getQualifierExpression(), statement) != null) { + if(canCollect(statement, methodCallExpression)) { methodName = "collect"; } else { if (!SUGGEST_FOREACH) return; @@ -535,13 +568,19 @@ public class StreamApiMigrationInspection extends BaseJavaBatchLocalInspectionTo } } - void handleSingleReturn(PsiForeachStatement statement, - TerminalBlock tb, - List operations) { + boolean canCollect(PsiForeachStatement statement, PsiMethodCallExpression methodCallExpression) { + if(methodCallExpression == null) return false; + PsiLocalVariable variable = extractCollectionVariable(methodCallExpression.getMethodExpression().getQualifierExpression()); + if(variable == null) return false; + return getInitializerUsageStatus(variable, statement) != UNKNOWN; + } + + void handleSingleReturn(PsiForeachStatement statement, TerminalBlock tb, List operations) { PsiReturnStatement returnStatement = (PsiReturnStatement)tb.getSingleStatement(); PsiExpression value = returnStatement.getReturnValue(); PsiReturnStatement nextReturnStatement = getNextReturnStatement(statement); - if(nextReturnStatement != null && (ExpressionUtils.isLiteral(value, Boolean.TRUE) || ExpressionUtils.isLiteral(value, Boolean.FALSE))) { + if (nextReturnStatement != null && + (ExpressionUtils.isLiteral(value, Boolean.TRUE) || ExpressionUtils.isLiteral(value, Boolean.FALSE))) { boolean foundResult = (boolean)((PsiLiteralExpression)value).getValue(); if(ExpressionUtils.isLiteral(nextReturnStatement.getReturnValue(), !foundResult)) { String methodName; diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java index fa63230009c9..f2198709ad8e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/unnecessaryModuleDependency/UnnecessaryModuleDependencyInspection.java @@ -156,16 +156,10 @@ public class UnnecessaryModuleDependencyInspection extends GlobalInspectionTool myDependency = dependency; } - @Override - @NotNull - public String getName() { - return "Remove dependency"; - } - @Override @NotNull public String getFamilyName() { - return getName(); + return "Remove dependency"; } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/unneededThrows/RedundantThrows.java b/java/java-analysis-impl/src/com/intellij/codeInspection/unneededThrows/RedundantThrows.java index be7c4c43d3af..4cb330bb8315 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/unneededThrows/RedundantThrows.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/unneededThrows/RedundantThrows.java @@ -201,7 +201,7 @@ public class RedundantThrows extends GlobalJavaBatchInspectionTool { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.redundant.throws.remove.quickfix"); } @@ -225,12 +225,6 @@ public class RedundantThrows extends GlobalJavaBatchInspectionTool { } } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - private void removeExcessiveThrows(@Nullable RefMethod refMethod, @Nullable final PsiModifierListOwner element, final CommonProblemDescriptor[] problems) { try { @Nullable final PsiMethod psiMethod; diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java index 55ab95f5c3a7..6147a0d7ea5b 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/unusedLibraries/UnusedLibrariesInspection.java @@ -131,16 +131,10 @@ public class UnusedLibrariesInspection extends GlobalInspectionTool { myFiles = files; } - @Override - @NotNull - public String getName() { - return myFiles == null ? InspectionsBundle.message("detach.library.quickfix.name") : InspectionsBundle.message("detach.library.roots.quickfix.name"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return myFiles == null ? InspectionsBundle.message("detach.library.quickfix.name") : InspectionsBundle.message("detach.library.roots.quickfix.name"); } @Override diff --git a/java/java-impl/src/com/intellij/application/options/editor/ExcludeTable.java b/java/java-impl/src/com/intellij/application/options/editor/ExcludeTable.java index 28702654c80d..4cd827d635d1 100644 --- a/java/java-impl/src/com/intellij/application/options/editor/ExcludeTable.java +++ b/java/java-impl/src/com/intellij/application/options/editor/ExcludeTable.java @@ -47,7 +47,7 @@ import java.util.List; import java.util.regex.Pattern; class ExcludeTable extends ListTableWithButtons { - private static final Pattern ourPackagePattern = Pattern.compile("(\\w+\\.)*\\w+"); + private static final Pattern ourPackagePattern = Pattern.compile("([\\w*]+\\.)*[\\w*]+"); private static final ColumnInfo NAME_COLUMN = new ColumnInfo("Class/package/member qualified name mask") { @Nullable @Override diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java index 09b57555cd23..065527c55642 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java @@ -25,6 +25,7 @@ import com.intellij.codeInsight.template.impl.TemplateImpl; import com.intellij.codeInsight.template.impl.TemplateManagerImpl; import com.intellij.codeInsight.template.impl.TemplateState; import com.intellij.featureStatistics.FeatureUsageTracker; +import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.event.DocumentAdapter; @@ -288,7 +289,8 @@ public class JavaMethodCallElement extends LookupItem implements Type TextRange endRange = templateState.getVariableRange(template.getVariableNameAt(template.getVariableCount() - 1)); if (startRange == null || endRange == null) return; - editor.getDocument().deleteString(startRange.getStartOffset(), endRange.getEndOffset()); + WriteCommandAction.runWriteCommandAction(editor.getProject(), () -> + editor.getDocument().deleteString(startRange.getStartOffset(), endRange.getEndOffset())); } }); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateStaticMethodQuickFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateStaticMethodQuickFix.java index cdaa2aad68ff..cb81d23a378d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateStaticMethodQuickFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateStaticMethodQuickFix.java @@ -33,12 +33,6 @@ public class CreateStaticMethodQuickFix implements LocalQuickFix { } - @NotNull - @Override - public String getName() { - return QuickFixBundle.message("create.method.from.usage.family"); - } - @NotNull @Override public String getFamilyName() { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFieldOrPropertyFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFieldOrPropertyFix.java index 07f31972f482..b6fec5cbe294 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFieldOrPropertyFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/quickFix/CreateFieldOrPropertyFix.java @@ -70,12 +70,6 @@ public class CreateFieldOrPropertyFix implements IntentionAction, LocalQuickFix return QuickFixBundle.message(myMemberType == PropertyMemberType.FIELD ? "create.field.text":"create.property.text", myName); } - @Override - @NotNull - public String getName() { - return getText(); - } - @Override @NotNull public String getFamilyName() { diff --git a/java/java-impl/src/com/intellij/codeInspection/CollectionAddAllCanBeReplacedWithConstructorInspection.java b/java/java-impl/src/com/intellij/codeInspection/CollectionAddAllCanBeReplacedWithConstructorInspection.java index 283bc4f050ab..27c4e6958bf5 100644 --- a/java/java-impl/src/com/intellij/codeInspection/CollectionAddAllCanBeReplacedWithConstructorInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/CollectionAddAllCanBeReplacedWithConstructorInspection.java @@ -239,13 +239,6 @@ public class CollectionAddAllCanBeReplacedWithConstructorInspection extends Base myAssignmentExpression = smartPointerManager.createSmartPsiElementPointer(assignmentExpression); } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/java/java-impl/src/com/intellij/codeInspection/DefaultAnnotationParamInspection.java b/java/java-impl/src/com/intellij/codeInspection/DefaultAnnotationParamInspection.java index 5fa4f4285051..1f8caf6565ed 100644 --- a/java/java-impl/src/com/intellij/codeInspection/DefaultAnnotationParamInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/DefaultAnnotationParamInspection.java @@ -42,18 +42,11 @@ public class DefaultAnnotationParamInspection extends BaseJavaBatchLocalInspecti if (defaultValue == null) return; if (areEqual(value, defaultValue)) { holder.registerProblem(value, "Redundant default parameter value assignment", ProblemHighlightType.LIKE_UNUSED_SYMBOL, new LocalQuickFix() { - @Nls - @NotNull - @Override - public String getName() { - return "Remove redundant parameter"; - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return "Remove redundant parameter"; } @Override diff --git a/java/java-impl/src/com/intellij/codeInspection/RemoveInitializerFix.java b/java/java-impl/src/com/intellij/codeInspection/RemoveInitializerFix.java index 3a5da370be67..6ffd46aca6df 100644 --- a/java/java-impl/src/com/intellij/codeInspection/RemoveInitializerFix.java +++ b/java/java-impl/src/com/intellij/codeInspection/RemoveInitializerFix.java @@ -36,7 +36,7 @@ public class RemoveInitializerFix implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.unused.assignment.remove.quickfix"); } @@ -91,10 +91,4 @@ public class RemoveInitializerFix implements LocalQuickFix { LOG.error(e); } } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } diff --git a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedParametersInspection.java b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedParametersInspection.java index f06ba2a958cf..53340a90d5b6 100644 --- a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedParametersInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedParametersInspection.java @@ -210,16 +210,10 @@ class UnusedParametersInspection extends GlobalJavaBatchInspectionTool { return myHint; } - @Override - @NotNull - public String getName() { - return InspectionsBundle.message("inspection.unused.parameter.delete.quickfix"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionsBundle.message("inspection.unused.parameter.delete.quickfix"); } @Override diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java index e0927704d563..58cbd1d85fc4 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/DefaultFileTemplateUsageInspection.java @@ -84,16 +84,10 @@ public class DefaultFileTemplateUsageInspection extends BaseJavaLocalInspectionT myReplaceTemplateFix = replaceTemplateFix; } - @Override - @NotNull - public String getName() { - return InspectionsBundle.message("default.file.template.edit.template"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionsBundle.message("default.file.template.edit.template"); } @Override diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/ReplaceWithFileTemplateFix.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/ReplaceWithFileTemplateFix.java index d13986e35a1a..99ded0b3b833 100644 --- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/ReplaceWithFileTemplateFix.java +++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/ReplaceWithFileTemplateFix.java @@ -25,13 +25,7 @@ import org.jetbrains.annotations.NotNull; public abstract class ReplaceWithFileTemplateFix implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("default.file.template.replace.with.actual.file.template"); } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } diff --git a/java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java b/java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java index 6a108d6ed4a5..fbb22e5dca2c 100644 --- a/java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java @@ -307,12 +307,6 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool { myHint = hint; } - @Override - @NotNull - public String getName() { - return QUICK_FIX_NAME; - } - @Override @NotNull public String getFamilyName() { @@ -352,7 +346,7 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool { @Override @NotNull - public String getName() { + public String getFamilyName() { return QUICK_FIX_NAME; } @@ -361,12 +355,6 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool { applyFix(project, new ProblemDescriptor[]{descriptor}, new ArrayList<>(), null); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - private void deleteHierarchy(RefMethod refMethod, List result) { Collection derivedMethods = refMethod.getDerivedMethods(); RefMethod[] refMethods = derivedMethods.toArray(new RefMethod[derivedMethods.size()]); diff --git a/java/java-impl/src/com/intellij/codeInspection/equalsAndHashcode/EqualsAndHashcode.java b/java/java-impl/src/com/intellij/codeInspection/equalsAndHashcode/EqualsAndHashcode.java index 3887640051c4..c315401c6ceb 100644 --- a/java/java-impl/src/com/intellij/codeInspection/equalsAndHashcode/EqualsAndHashcode.java +++ b/java/java-impl/src/com/intellij/codeInspection/equalsAndHashcode/EqualsAndHashcode.java @@ -47,18 +47,12 @@ public class EqualsAndHashcode extends EqualsAndHashcodeBase { @NotNull @Override - public String getName() { + public String getFamilyName() { return myHasEquals ? InspectionsBundle.message("inspection.equals.hashcode.generate.hashcode.quickfix") : InspectionsBundle.message("inspection.equals.hashcode.generate.equals.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); diff --git a/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java b/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java index e08c66fa943b..8fce942f9023 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java @@ -114,13 +114,6 @@ public class StaticPseudoFunctionalStyleMethodInspection extends BaseJavaBatchLo myHandler = handler; } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspection.java b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspection.java index 816a191b3a6b..e9b2536eac18 100644 --- a/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspection.java @@ -69,16 +69,10 @@ public class JavaDocReferenceInspection extends JavaDocReferenceInspectionBase { myUnboundParams = unboundParams; } - @Override - @NotNull - public String getName() { - return "Change to ..."; - } - @Override @NotNull public String getFamilyName() { - return getName(); + return "Change to ..."; } @Override @@ -114,12 +108,6 @@ public class JavaDocReferenceInspection extends JavaDocReferenceInspectionBase { this.originalClasses = originalClasses; } - @Override - @NotNull - public String getName() { - return QuickFixBundle.message("add.qualifier"); - } - @Override @NotNull public String getFamilyName() { diff --git a/java/java-impl/src/com/intellij/codeInspection/lambda/RedundantLambdaParameterTypeInspection.java b/java/java-impl/src/com/intellij/codeInspection/lambda/RedundantLambdaParameterTypeInspection.java index b925e8ff8083..28b4bf9fb510 100644 --- a/java/java-impl/src/com/intellij/codeInspection/lambda/RedundantLambdaParameterTypeInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/lambda/RedundantLambdaParameterTypeInspection.java @@ -129,13 +129,6 @@ public class RedundantLambdaParameterTypeInspection extends BaseJavaBatchLocalIn } private static class LambdaParametersFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override diff --git a/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java b/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java index 2d84ba4350a0..6cc93d4cd165 100644 --- a/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/magicConstant/MagicConstantInspection.java @@ -203,16 +203,10 @@ public class MagicConstantInspection extends BaseJavaLocalInspectionTool { String text = "No IDEA annotations attached to the JDK " + finalJdk.getName() + (path == null ? "" : " (" + FileUtil.toSystemDependentName(path) + ")") +", some issues will not be found"; holder.registerProblem(file, text, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, new LocalQuickFix() { - @NotNull - @Override - public String getName() { - return "Attach annotations"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Attach annotations"; } @Override diff --git a/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java b/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java index ad340fb68355..d7ab946a7ed7 100644 --- a/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/miscGenerics/RedundantArrayForVarargsCallInspection.java @@ -54,12 +54,6 @@ public class RedundantArrayForVarargsCallInspection extends GenericsInspectionTo @Override @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionsBundle.message("inspection.redundant.array.creation.quickfix"); } } diff --git a/java/java-impl/src/com/intellij/codeInspection/sillyAssignment/SillyAssignmentInspection.java b/java/java-impl/src/com/intellij/codeInspection/sillyAssignment/SillyAssignmentInspection.java index 69c88c46a6d4..26af65fb83bd 100644 --- a/java/java-impl/src/com/intellij/codeInspection/sillyAssignment/SillyAssignmentInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/sillyAssignment/SillyAssignmentInspection.java @@ -45,18 +45,11 @@ public class SillyAssignmentInspection extends SillyAssignmentInspectionBase { private static class RemoveSillyAssignmentFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionsBundle.message("assignment.to.itself.quickfix.name"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionsBundle.message("assignment.to.itself.quickfix.name"); } @Override diff --git a/java/java-impl/src/com/intellij/codeInspection/unusedReturnValue/UnusedReturnValue.java b/java/java-impl/src/com/intellij/codeInspection/unusedReturnValue/UnusedReturnValue.java index f0b92e20c666..f295d2361d9c 100644 --- a/java/java-impl/src/com/intellij/codeInspection/unusedReturnValue/UnusedReturnValue.java +++ b/java/java-impl/src/com/intellij/codeInspection/unusedReturnValue/UnusedReturnValue.java @@ -154,7 +154,7 @@ public class UnusedReturnValue extends GlobalJavaBatchInspectionTool{ @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("inspection.unused.return.value.make.void.quickfix"); } @@ -179,12 +179,6 @@ public class UnusedReturnValue extends GlobalJavaBatchInspectionTool{ return false; } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - private static void makeMethodHierarchyVoid(Project project, @NotNull PsiMethod psiMethod) { replaceReturnStatements(psiMethod); for (final PsiMethod oMethod : OverridingMethodsSearch.search(psiMethod)) { diff --git a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/BaseConvertToLocalQuickFix.java b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/BaseConvertToLocalQuickFix.java index c993cc143b6e..69a70e616546 100644 --- a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/BaseConvertToLocalQuickFix.java +++ b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/BaseConvertToLocalQuickFix.java @@ -50,7 +50,7 @@ public abstract class BaseConvertToLocalQuickFix implemen @Override @NotNull - public final String getName() { + public final String getFamilyName() { return InspectionsBundle.message("inspection.convert.to.local.quickfix"); } @@ -225,12 +225,6 @@ public abstract class BaseConvertToLocalQuickFix implemen } } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - @Nullable private static PsiElement getAnchorElement(PsiCodeBlock anchorBlock, @NotNull PsiElement firstElement) { PsiElement element = firstElement; diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index e8687987042c..a88239d002fa 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -549,13 +549,24 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement @Nullable public static String generateExternalJavadoc(@NotNull final PsiElement element) { + List docURLs = getExternalJavaDocUrl(element); + return generateExternalJavadoc(element, docURLs); + } + + @Nullable + public static String generateExternalJavadoc(@NotNull final PsiElement element, @Nullable List docURLs) { final JavaDocInfoGenerator javaDocInfoGenerator = JavaDocInfoGeneratorFactory.create(element.getProject(), element); - return generateExternalJavadoc(element, javaDocInfoGenerator); + return generateExternalJavadoc(javaDocInfoGenerator, docURLs); } @Nullable public static String generateExternalJavadoc(@NotNull final PsiElement element, @NotNull JavaDocInfoGenerator generator) { final List docURLs = getExternalJavaDocUrl(element); + return generateExternalJavadoc(generator, docURLs); + } + + @Nullable + private static String generateExternalJavadoc(@NotNull JavaDocInfoGenerator generator, @Nullable List docURLs) { return JavaDocExternalFilter.filterInternalDocInfo(generator.generateDocInfo(docURLs)); } diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/java/ReferenceChainLink.java b/java/java-indexing-impl/src/com/intellij/psi/impl/java/ReferenceChainLink.java index c3e0295e3e03..15ccb80fa2b0 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/java/ReferenceChainLink.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/java/ReferenceChainLink.java @@ -101,12 +101,17 @@ public class ReferenceChainLink { PsiPackage pkg = JavaPsiFacade.getInstance(project).findPackage(referenceName); if (pkg != null && pkg.getDirectories(scope).length > 0) return null; - if (!cache.processFieldsWithName(referenceName, processor, scope, null) || - !cache.processClassesWithName(referenceName, processor, scope, null)) { + if (!cache.processFieldsWithName(referenceName, processor, scope, null)) { markExpensive(project); return null; } } + + if (!cache.processClassesWithName(referenceName, processor, scope, null)) { + markExpensive(project); + return null; + } + return candidates; } diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index 38ece57ff05e..a60752e62360 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -24,10 +24,7 @@ import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.impl.source.resolve.graphInference.PsiPolyExpressionUtil; import com.intellij.psi.infos.MethodCandidateInfo; import com.intellij.psi.util.*; -import com.intellij.util.Consumer; -import com.intellij.util.Function; -import com.intellij.util.IncorrectOperationException; -import com.intellij.util.Producer; +import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.Contract; @@ -122,8 +119,7 @@ public class LambdaUtil { public static boolean isFunctionalClass(PsiClass aClass) { if (aClass != null) { if (aClass instanceof PsiTypeParameter) return false; - final List signatures = findFunctionCandidates(aClass); - return signatures != null && signatures.size() == 1; + return getFunction(aClass) != null; } return false; } @@ -152,15 +148,69 @@ public class LambdaUtil { @Contract("null -> null") @Nullable - public static MethodSignature getFunction(PsiClass psiClass) { - if (psiClass == null) return null; - final List functions = findFunctionCandidates(psiClass); - if (functions != null && functions.size() == 1) { - return functions.get(0); + public static MethodSignature getFunction(final PsiClass psiClass) { + if (isPlainInterface(psiClass)) { + return CachedValuesManager.getCachedValue(psiClass, new CachedValueProvider() { + @Nullable + @Override + public Result compute() { + return Result.create(calcFunction(psiClass), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT); + } + }); } return null; } + private static boolean isPlainInterface(PsiClass psiClass) { + return psiClass != null && psiClass.isInterface() && !psiClass.isAnnotationType(); + } + + @Nullable + private static MethodSignature calcFunction(@NotNull PsiClass psiClass) { + if (hasManyOwnAbstractMethods(psiClass) || hasManyInheritedAbstractMethods(psiClass)) return null; + + final List functions = findFunctionCandidates(psiClass); + return functions != null && functions.size() == 1 ? functions.get(0) : null; + } + + private static boolean hasManyOwnAbstractMethods(@NotNull PsiClass psiClass) { + int abstractCount = 0; + for (PsiMethod method : psiClass.getMethods()) { + if (isDefinitelyAbstractInterfaceMethod(method) && ++abstractCount > 1) { + return true; + } + } + return false; + } + + private static boolean isDefinitelyAbstractInterfaceMethod(PsiMethod method) { + return method.hasModifierProperty(PsiModifier.ABSTRACT) && !isPublicObjectMethod(method.getName()); + } + + private static boolean isPublicObjectMethod(String methodName) { + return "equals".equals(methodName) || "hashCode".equals(methodName) || "toString".equals(methodName); + } + + private static boolean hasManyInheritedAbstractMethods(@NotNull PsiClass psiClass) { + final Set abstractNames = ContainerUtil.newHashSet(); + final Set defaultNames = ContainerUtil.newHashSet(); + InheritanceUtil.processSupers(psiClass, true, new Processor() { + @Override + public boolean process(PsiClass psiClass) { + for (PsiMethod method : psiClass.getMethods()) { + if (isDefinitelyAbstractInterfaceMethod(method)) { + abstractNames.add(method.getName()); + } + else if (method.hasModifierProperty(PsiModifier.DEFAULT)) { + defaultNames.add(method.getName()); + } + } + return true; + } + }); + abstractNames.removeAll(defaultNames); + return abstractNames.size() > 1; + } private static boolean overridesPublicObjectMethod(HierarchicalMethodSignature psiMethod) { final List signatures = psiMethod.getSuperSignatures(); @@ -219,20 +269,9 @@ public class LambdaUtil { @Contract("null -> null") @Nullable - public static List findFunctionCandidates(final PsiClass psiClass) { - if (psiClass != null && psiClass.isInterface() && !psiClass.isAnnotationType()) { - return CachedValuesManager.getCachedValue(psiClass, new CachedValueProvider>() { - @Nullable - @Override - public Result> compute() { - return Result.create(calcFunctionCandidates(psiClass), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT); - } - }); - } - return null; - } + public static List findFunctionCandidates(@Nullable final PsiClass psiClass) { + if (!isPlainInterface(psiClass)) return null; - private static List calcFunctionCandidates(PsiClass psiClass) { final List methods = new ArrayList(); final Map> overrideEquivalents = PsiSuperMethodUtil.collectOverrideEquivalents(psiClass); final Collection visibleSignatures = psiClass.getVisibleSignatures(); diff --git a/java/java-psi-api/src/com/intellij/psi/PsiJavaModule.java b/java/java-psi-api/src/com/intellij/psi/PsiJavaModule.java index 11f3f622b205..7063b26b5e74 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiJavaModule.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiJavaModule.java @@ -26,6 +26,7 @@ public interface PsiJavaModule extends NavigatablePsiElement, PsiNamedElement, P String MODULE_INFO_CLASS = "module-info"; String MODULE_INFO_FILE = MODULE_INFO_CLASS + ".java"; String MODULE_INFO_CLS_FILE = MODULE_INFO_CLASS + ".class"; + String JAVA_BASE = "java.base"; @NotNull PsiJavaModuleReferenceElement getNameElement(); @NotNull String getModuleName(); diff --git a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java index 4b08e3e094a6..ddab945cff0f 100644 --- a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -29,6 +29,7 @@ import com.intellij.util.containers.IntArrayList; import com.intellij.util.containers.IntStack; import gnu.trove.THashMap; import gnu.trove.THashSet; +import gnu.trove.TIntArrayList; import gnu.trove.TIntHashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -1284,6 +1285,112 @@ public class ControlFlowUtil { return visitor.getResult().booleanValue(); } + /** + * Returns true if the value the variable has at start is later referenced without going through stop instruction + * + * @param flow ControlFlow to analyze + * @param start the point at which variable value is created + * @param stop the stop-point + * @param variable the variable to examine + * @return true if the value the variable has at start is later referenced without going through stop instruction + */ + public static boolean isValueUsedWithoutVisitingStop(final ControlFlow flow, final int start, final int stop, final PsiVariable variable) { + if(start == stop) return false; + + class MyVisitor extends InstructionClientVisitor { + // true if value the variable has at given offset maybe referenced without going through stop instruction + final boolean[] maybeReferenced = new boolean[flow.getSize() + 1]; + + @Override + public void visitInstruction(Instruction instruction, int offset, int nextOffset) { + if (offset == stop) { + maybeReferenced[offset] = false; + return; + } + if(instruction instanceof WriteVariableInstruction && ((WriteVariableInstruction)instruction).variable == variable) { + maybeReferenced[offset] = false; + return; + } + if (maybeReferenced[offset]) return; + if (nextOffset > flow.getSize()) nextOffset = flow.getSize(); + + boolean nextState = maybeReferenced[nextOffset]; + maybeReferenced[offset] = + nextState || (instruction instanceof ReadVariableInstruction && ((ReadVariableInstruction)instruction).variable == variable); + } + + @Override + public Boolean getResult() { + return maybeReferenced[start]; + } + } + MyVisitor visitor = new MyVisitor(); + depthFirstSearch(flow, visitor, start, flow.getSize()); + return visitor.getResult().booleanValue(); + } + + /** + * Checks whether variable can be referenced between start and stop points. Back-edges are also considered, so the actual place + * where it referenced might be outside of (start, stop) interval. + * + * @param flow ControlFlow to analyze + * @param start start point + * @param stop stop point + * @param variable variable to analyze + * @return true if variable can be referenced between start and stop points + */ + public static boolean isVariableReferencedBetween(final ControlFlow flow, + final int start, + final int stop, + final PsiVariable variable) { + if(start == stop) return false; + + // DFS visits instructions mainly in backward direction while here visiting in forward direction + // greatly reduces number of iterations. So first we just collect edges, then reverse their order. + // contains (from, to) pairs representing control flow arcs + final TIntArrayList list = new TIntArrayList(); + depthFirstSearch(flow, new InstructionClientVisitor() { + @Override + public void visitInstruction(Instruction instruction, int offset, int nextOffset) { + list.add(offset); + list.add(nextOffset); + } + + @Override + public Void getResult() { + return null; + } + }, start, flow.getSize()); + BitSet violated = new BitSet(); + List instructions = flow.getInstructions(); + boolean changed = true; + while(changed) { + changed = false; + for(int i=list.size()-2; i>=0; i-=2) { + int from = list.get(i); + int to = list.get(i+1); + if(from == stop) continue; + if(violated.get(from)) { + if(!violated.get(to)) { + if(to == stop) return true; + violated.set(to); + changed = true; + } + continue; + } + Instruction instruction = instructions.get(from); + if((instruction instanceof ReadVariableInstruction && ((ReadVariableInstruction)instruction).variable == variable) || + (instruction instanceof WriteVariableInstruction && ((WriteVariableInstruction)instruction).variable == variable)) { + violated.set(from); + violated.set(to); + if(to == stop) return true; + changed = true; + } + } + } + return false; + } + /** * @return min offset after sourceOffset which is definitely reachable from all references */ diff --git a/java/java-psi-impl/src/messages/JavaErrorMessages.properties b/java/java-psi-impl/src/messages/JavaErrorMessages.properties index 8fc2d0f4d052..cae0654cb54f 100644 --- a/java/java-psi-impl/src/messages/JavaErrorMessages.properties +++ b/java/java-psi-impl/src/messages/JavaErrorMessages.properties @@ -411,6 +411,9 @@ module.service.abstract=The service implementation is an abstract class: {0} module.service.no.ctor=The service implementation does not have a default constructor: {0} module.service.hidden.ctor=The default constructor of the service implementation is not public: {0} module.service.unused=Service interface provided but not exported or used +module.package.not.exported=The module ''{0}'' does not export the package ''{1}'' to the module ''{2}'' +module.package.on.classpath=A named module cannot access packages of an unnamed one +module.not.in.requirements=The module ''{0}'' does not have the module ''{1}'' in requirements feature.generics=Generics feature.annotations=Annotations diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ChainStartingWithConstructor.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ChainStartingWithConstructor.java new file mode 100644 index 000000000000..d9394ca3cd0d --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ChainStartingWithConstructor.java @@ -0,0 +1,17 @@ +class A { + + void foo() { + new IterHelper<>().loopMap((k, val) -> { + //do something + }); + } +} + +final class IterHelper { + public void loopMap(final MapIterCallback callback) { + //do something + } + public static interface MapIterCallback { + abstract void eval(K k, V v); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignment.java index cfdbf01b641b..d701eac44dab 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignment.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignment.java @@ -4,6 +4,6 @@ import java.util.List; public class Main { public void testAssignment(List data) { - String found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()) ? "yes" : "no"; + String found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()) ? "yes" : "no"; } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBoolean.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBoolean.java index fc0e5b198bc7..17bfaefa2008 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBoolean.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBoolean.java @@ -4,6 +4,6 @@ import java.util.List; public class Main { public void testAssignment(List data) { - boolean found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); + boolean found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBooleanInverted.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBooleanInverted.java index 24ba822d2458..9c0ba70e710e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBooleanInverted.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentBooleanInverted.java @@ -4,6 +4,6 @@ import java.util.List; public class Main { public void testAssignment(List data) { - boolean found = !data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); + boolean found = !data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentExtraCode.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentExtraCode.java new file mode 100644 index 000000000000..9a35e4e44cd3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentExtraCode.java @@ -0,0 +1,14 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found; + if (data.size() > 10) { + System.out.println("Big data"); + } + found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); + System.out.println(found); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivial.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivial.java index 5d7e8f1d4dec..c62a206e83ac 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivial.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivial.java @@ -4,13 +4,12 @@ import java.util.List; public class Main { public void testAssignment(List data) { - boolean found = false; + boolean found; if(Math.random() > 0.5) { found = true; } else { - if (data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty())) { - found = true; - } + found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); } + System.out.println(found); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivialUnassigned.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivialUnassigned.java new file mode 100644 index 000000000000..f947070807b7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivialUnassigned.java @@ -0,0 +1,15 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found = false; + if(Math.random() > 0.5) { + System.out.println("oops"); + } else { + found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); + } + System.out.println(found); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch.java new file mode 100644 index 000000000000..c49e906a2145 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch.java @@ -0,0 +1,16 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found; + try { + found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); + System.out.println(found); + } + catch(Exception ex) { + ex.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch2.java new file mode 100644 index 000000000000..3a1d5dc97f86 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch2.java @@ -0,0 +1,16 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found = false; + try { + found = data.stream().map(String::trim).anyMatch(trimmed -> !trimmed.isEmpty()); + } + catch(Exception ex) { + ex.printStackTrace(); + } + System.out.println(found); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayFilterCollect.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayFilterCollect.java index 883fd7326822..3b3a7b9983a9 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayFilterCollect.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayFilterCollect.java @@ -6,6 +6,6 @@ import java.util.stream.Collectors; public class Main { public void test(Integer[] arr) { - List result = Arrays.stream(arr).filter(x -> x > 5).collect(Collectors.toList()); + List result = Arrays.stream(arr).filter(x -> x > 5).collect(Collectors.toList()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayListVariableType.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayListVariableType.java index 6d59beba0bfe..3767a91d0618 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayListVariableType.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterArrayListVariableType.java @@ -4,7 +4,7 @@ import java.util.stream.Collectors; class A { public static void main(List args) { - ArrayList uniqNames = args.stream().map(name -> name.substring(1)).collect(Collectors.toCollection(ArrayList::new)); + ArrayList uniqNames = args.stream().map(name -> name.substring(1)).collect(Collectors.toCollection(ArrayList::new)); uniqNames.forEach(System.out::println); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCastExpected.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCastExpected.java index b0f1807d07fe..cbf887b56104 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCastExpected.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCastExpected.java @@ -5,7 +5,7 @@ import java.util.stream.Collectors; class Test { public static List> fromString(final T src, Function> extractor) { - final List> result = extractor.apply(src).stream().map((Function>) TokenFilter::new).collect(Collectors.toList()); + final List> result = extractor.apply(src).stream().map((Function>) TokenFilter::new).collect(Collectors.toList()); return result; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayList.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayList.java index aef9e753f716..134b51e18570 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayList.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayList.java @@ -10,6 +10,6 @@ public class Collect { } void collectNames(List persons){ - List names = persons.stream().map(Person::getName).collect(Collectors.toList()); + List names = persons.stream().map(Person::getName).collect(Collectors.toList()); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListAndFilter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListAndFilter.java index 4c736c9e53e0..e19a340cb9a5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListAndFilter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListAndFilter.java @@ -10,6 +10,6 @@ public class Collect { } void collectNames(List persons){ - List names = persons.stream().filter(Objects::nonNull).map(Person::getName).collect(Collectors.toList()); + List names = persons.stream().filter(Objects::nonNull).map(Person::getName).collect(Collectors.toList()); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListCollection.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListCollection.java index c526e817b438..d8233354012e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListCollection.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListCollection.java @@ -10,6 +10,6 @@ public class Collect { } void collectNames(List persons){ - Collection names = persons.stream().map(Person::getName).collect(Collectors.toList()); + Collection names = persons.stream().map(Person::getName).collect(Collectors.toList()); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListComment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListComment.java index a9b24a5a2005..cfec0c75d869 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListComment.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListComment.java @@ -10,7 +10,7 @@ public class Collect { } void collectNames(List persons){ - List names = persons.stream().map(Person::getName).collect(Collectors.toList()); + List names = persons.stream().map(Person::getName).collect(Collectors.toList()); //some comment } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListLambda.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListLambda.java index e1517740be28..9700feba43a7 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListLambda.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectArrayListLambda.java @@ -10,6 +10,6 @@ public class Collect { } void collectNames(List persons){ - List names = persons.stream().map(person -> "name: " + person.getName()).collect(Collectors.toList()); + List names = persons.stream().map(person -> "name: " + person.getName()).collect(Collectors.toList()); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectBoxed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectBoxed.java index 5f8cdce462d7..5401a062acc7 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectBoxed.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectBoxed.java @@ -6,6 +6,6 @@ import java.util.stream.Collectors; public class Main { public void testPrimitiveMap(List data) { - List list = data.stream().filter(str -> str.startsWith("xyz")).mapToInt(String::length).filter(len -> len > 10).boxed().collect(Collectors.toList()); + List list = data.stream().filter(str -> str.startsWith("xyz")).mapToInt(String::length).filter(len -> len > 10).boxed().collect(Collectors.toList()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectHashSet.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectHashSet.java index 022b8e3ae576..5d6cab563c56 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectHashSet.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectHashSet.java @@ -10,6 +10,6 @@ public class Collect { } void collectNames(List persons){ - Set names = persons.stream().map(Person::getName).collect(Collectors.toSet()); + Set names = persons.stream().map(Person::getName).collect(Collectors.toSet()); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterrupted.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterrupted.java new file mode 100644 index 000000000000..9923f577a02d --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterrupted.java @@ -0,0 +1,17 @@ +// "Replace with collect" "true" +import java.util.*; +import java.util.stream.Collectors; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names, other = new HashSet<>(); + names = persons.stream().map(Person::getName).collect(Collectors.toSet()); + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedInLoop.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedInLoop.java new file mode 100644 index 000000000000..8721aa441968 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedInLoop.java @@ -0,0 +1,18 @@ +// "Replace with forEach" "true" +import java.util.*; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names = new HashSet<>(); + for(int i=0; i<10; i++) { + persons.stream().map(Person::getName).forEach(names::add); + } + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUpdated.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUpdated.java new file mode 100644 index 000000000000..0d86145188f2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUpdated.java @@ -0,0 +1,17 @@ +// "Replace with forEach" "true" +import java.util.*; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names = new HashSet<>(); + names.add("Test"); + persons.stream().map(Person::getName).forEach(names::add); + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUsed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUsed.java new file mode 100644 index 000000000000..2e2ea02812dc --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUsed.java @@ -0,0 +1,19 @@ +// "Replace with collect" "true" +import java.util.*; +import java.util.stream.Collectors; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names = new HashSet<>(), other = new HashSet<>(); + if(persons != null) { + names = persons.stream().map(Person::getName).collect(Collectors.toSet()); + } + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectLinkedHashSet.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectLinkedHashSet.java index 031edc64f14d..9ac23c8f4984 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectLinkedHashSet.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectLinkedHashSet.java @@ -10,6 +10,6 @@ public class Collect { } void collectNames(List persons){ - Set names = persons.stream().map(Person::getName).collect(Collectors.toCollection(LinkedHashSet::new)); + Set names = persons.stream().map(Person::getName).collect(Collectors.toCollection(LinkedHashSet::new)); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectToObj.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectToObj.java index bb8a76602fc1..38b8180bf6c4 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectToObj.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectToObj.java @@ -6,6 +6,6 @@ import java.util.stream.Collectors; public class Main { public void testPrimitiveMap(List data) { - List list = data.stream().filter(str -> str.startsWith("xyz")).mapToInt(String::length).filter(len -> len > 10).mapToObj(String::valueOf).collect(Collectors.toList()); + List list = data.stream().filter(str -> str.startsWith("xyz")).mapToInt(String::length).filter(len -> len > 10).mapToObj(String::valueOf).collect(Collectors.toList()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNested.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNested.java index c54f06a9c72c..3b4195b6d70d 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNested.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNested.java @@ -6,7 +6,7 @@ import java.util.stream.Collectors; public class Main { public List test(Map> map) { - List result = map.entrySet().stream().filter(entry -> !entry.getKey().isEmpty()).map(Map.Entry::getValue).filter(Objects::nonNull).flatMap(Collection::stream).map(String::trim).filter(trimmed -> !trimmed.isEmpty()).collect(Collectors.toList()); + List result = map.entrySet().stream().filter(entry -> !entry.getKey().isEmpty()).map(Map.Entry::getValue).filter(Objects::nonNull).flatMap(Collection::stream).map(String::trim).filter(trimmed -> !trimmed.isEmpty()).collect(Collectors.toList()); return result; } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNestedElse.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNestedElse.java index c54f06a9c72c..3b4195b6d70d 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNestedElse.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterContinueNestedElse.java @@ -6,7 +6,7 @@ import java.util.stream.Collectors; public class Main { public List test(Map> map) { - List result = map.entrySet().stream().filter(entry -> !entry.getKey().isEmpty()).map(Map.Entry::getValue).filter(Objects::nonNull).flatMap(Collection::stream).map(String::trim).filter(trimmed -> !trimmed.isEmpty()).collect(Collectors.toList()); + List result = map.entrySet().stream().filter(entry -> !entry.getKey().isEmpty()).map(Map.Entry::getValue).filter(Objects::nonNull).flatMap(Collection::stream).map(String::trim).filter(trimmed -> !trimmed.isEmpty()).collect(Collectors.toList()); return result; } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapCollectionFilterMapCollect.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapCollectionFilterMapCollect.java index a7a5a0f83364..091106c433cd 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapCollectionFilterMapCollect.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapCollectionFilterMapCollect.java @@ -4,6 +4,6 @@ import java.util.stream.Collectors; public class Main { public void test(List> nested) { - List result = nested.stream().filter(Objects::nonNull).flatMap(Collection::stream).filter(str -> str.startsWith("xyz")).map(String::trim).collect(Collectors.toList()); + List result = nested.stream().filter(Objects::nonNull).flatMap(Collection::stream).filter(str -> str.startsWith("xyz")).map(String::trim).collect(Collectors.toList()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapMapFilterCollect.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapMapFilterCollect.java index e6be8c957ec4..dba2e1608027 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapMapFilterCollect.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterFlatMapMapFilterCollect.java @@ -6,6 +6,6 @@ import java.util.stream.Collectors; public class Main { public void test(List list) { - List result = list.stream().filter(arr -> arr.length > 2).flatMap(Arrays::stream).map(String::trim).filter(trimmed -> !trimmed.isEmpty()).collect(Collectors.toList()); + List result = list.stream().filter(arr -> arr.length > 2).flatMap(Arrays::stream).map(String::trim).filter(trimmed -> !trimmed.isEmpty()).collect(Collectors.toList()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterMapFlatMapArrayCollect.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterMapFlatMapArrayCollect.java index 46c9d614e531..81e1b7dbcc44 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterMapFlatMapArrayCollect.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFilterMapFlatMapArrayCollect.java @@ -7,6 +7,6 @@ import java.util.stream.Collectors; public class Main { public void test(Map map) { - List result = map.entrySet().stream().filter(entry -> entry.getKey().startsWith("x")).map(Map.Entry::getValue).flatMap(Arrays::stream).map(String::trim).collect(Collectors.toList()); + List result = map.entrySet().stream().filter(entry -> entry.getKey().startsWith("x")).map(Map.Entry::getValue).flatMap(Arrays::stream).map(String::trim).collect(Collectors.toList()); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignment.java index 9ff0c0efd750..3938b777a914 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignment.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignment.java @@ -6,7 +6,7 @@ import java.util.Objects; public class Main { public void testMap(Map> map) throws Exception { - int firstSize = map.values().stream().filter(Objects::nonNull).findFirst().map(List::size).orElse(0); + int firstSize = map.values().stream().filter(Objects::nonNull).findFirst().map(List::size).orElse(0); // comment System.out.println(firstSize); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentCast.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentCast.java index ce1ea6e97718..e301f4212d5f 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentCast.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentCast.java @@ -4,7 +4,7 @@ import java.util.List; public class Main { public void testCast(List data) { - String found = (String) data.stream().filter(obj -> obj instanceof String).findFirst().orElse(null); + String found = (String) data.stream().filter(obj -> obj instanceof String).findFirst().orElse(null); System.out.println(found); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentInterrupted.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentInterrupted.java new file mode 100644 index 000000000000..edce43b3da0b --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentInterrupted.java @@ -0,0 +1,18 @@ +// "Replace with findFirst()" "true" + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +public class Main { + public void testMap(Map> map) throws Exception { + int firstSize; + int other = map.size(); + if(other > 10) { + System.out.println("Big"); + } + // comment + firstSize = map.values().stream().filter(Objects::nonNull).findFirst().map(List::size).orElse(0); + System.out.println(firstSize); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentUsedInSameDeclaration.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentUsedInSameDeclaration.java new file mode 100644 index 000000000000..3ea2190bb2bb --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentUsedInSameDeclaration.java @@ -0,0 +1,14 @@ +// "Replace with findFirst()" "true" + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +public class Main { + public void testMap(Map> map) throws Exception { + int firstSize = 0, other = firstSize; + // comment + firstSize = map.values().stream().filter(Objects::nonNull).findFirst().map(List::size).orElse(firstSize); + System.out.println(firstSize); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentWithLabel.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentWithLabel.java index e901baff38ee..ecfb21e12394 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentWithLabel.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentWithLabel.java @@ -7,7 +7,7 @@ import java.util.Objects; public class Main { public void testMap(Map> map) throws Exception { - String firstStr = map.values().stream().filter(Objects::nonNull).flatMap(Collection::stream).filter(str -> !str.isEmpty()).findFirst().orElse(""); + String firstStr = map.values().stream().filter(Objects::nonNull).flatMap(Collection::stream).filter(str -> !str.isEmpty()).findFirst().orElse(""); System.out.println(firstStr); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArray.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArray.java index a74094c0dc8b..fb742c6b7dce 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArray.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArray.java @@ -7,7 +7,7 @@ import java.util.stream.Collectors; public class Main { public List test(String[][] arr) { - List result = Arrays.stream(arr).filter(Objects::nonNull).flatMap(Arrays::stream).collect(Collectors.toList()); + List result = Arrays.stream(arr).filter(Objects::nonNull).flatMap(Arrays::stream).collect(Collectors.toList()); return result; } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArrayPrimitive.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArrayPrimitive.java index 7fc05324430b..5b5a13aacf04 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArrayPrimitive.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFlatten2DArrayPrimitive.java @@ -7,7 +7,7 @@ import java.util.stream.Collectors; public class Main { public List test(int[][] arr) { - List result = Arrays.stream(arr).filter(Objects::nonNull).flatMapToInt(Arrays::stream).boxed().collect(Collectors.toList()); + List result = Arrays.stream(arr).filter(Objects::nonNull).flatMapToInt(Arrays::stream).boxed().collect(Collectors.toList()); return result; } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUnused.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUnused.java new file mode 100644 index 000000000000..de8298912da4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUnused.java @@ -0,0 +1,15 @@ +// "Replace with sum()" "true" + +import java.util.List; + +public class Main { + public void testPrimitiveMap(List data) { + int sum; + if(Math.random() > 0.5) { + sum = 10; + } else { + sum = data.stream().filter(str -> str.startsWith("xyz")).mapToInt(String::length).filter(len -> len > 10).map(len -> len * 2).sum(); + } + System.out.println(sum); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUsed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUsed.java new file mode 100644 index 000000000000..f9e15642def1 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUsed.java @@ -0,0 +1,15 @@ +// "Replace with sum()" "true" + +import java.util.List; + +public class Main { + public void testPrimitiveMap(List data) { + int sum = 0; + if(Math.random() > 0.5) { + System.out.println("oops"); + } else { + sum = data.stream().filter(str -> str.startsWith("xyz")).mapToInt(String::length).filter(len -> len > 10).map(len -> len * 2).sum(); + } + System.out.println(sum); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentExtraCode.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentExtraCode.java new file mode 100644 index 000000000000..ae1ff4ab7304 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentExtraCode.java @@ -0,0 +1,20 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found = false; + if (data.size() > 10) { + System.out.println("Big data"); + } + for(String str : data) { + String trimmed = str.trim(); + if(!trimmed.isEmpty()) { + found = true; + break; + } + } + System.out.println(found); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivial.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivial.java index 742d43ee19a6..ab0ed9ccce36 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivial.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivial.java @@ -16,5 +16,6 @@ public class Main { } } } + System.out.println(found); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivialUnassigned.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivialUnassigned.java new file mode 100644 index 000000000000..9fd6306271dc --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivialUnassigned.java @@ -0,0 +1,21 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found = false; + if(Math.random() > 0.5) { + System.out.println("oops"); + } else { + for (String str : data) { + String trimmed = str.trim(); + if (!trimmed.isEmpty()) { + found = true; + break; + } + } + } + System.out.println(found); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch.java new file mode 100644 index 000000000000..74a945dbf159 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch.java @@ -0,0 +1,22 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found = false; + try { + for (String str : data) { + String trimmed = str.trim(); + if (!trimmed.isEmpty()) { + found = true; + break; + } + } + System.out.println(found); + } + catch(Exception ex) { + ex.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch2.java new file mode 100644 index 000000000000..ad9783e71a0a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch2.java @@ -0,0 +1,22 @@ +// "Replace with anyMatch()" "true" + +import java.util.List; + +public class Main { + public void testAssignment(List data) { + boolean found = false; + try { + for (String str : data) { + String trimmed = str.trim(); + if (!trimmed.isEmpty()) { + found = true; + break; + } + } + } + catch(Exception ex) { + ex.printStackTrace(); + } + System.out.println(found); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterrupted.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterrupted.java new file mode 100644 index 000000000000..beeebbc22879 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterrupted.java @@ -0,0 +1,18 @@ +// "Replace with collect" "true" +import java.util.*; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names = new HashSet<>(), other = new HashSet<>(); + for (Person person : persons) { + names.add(person.getName()); + } + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedInLoop.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedInLoop.java new file mode 100644 index 000000000000..da174b7f9203 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedInLoop.java @@ -0,0 +1,20 @@ +// "Replace with forEach" "true" +import java.util.*; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names = new HashSet<>(); + for(int i=0; i<10; i++) { + for (Person person : persons) { + names.add(person.getName()); + } + } + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUpdated.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUpdated.java new file mode 100644 index 000000000000..807ad23e0f6c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUpdated.java @@ -0,0 +1,19 @@ +// "Replace with forEach" "true" +import java.util.*; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names = new HashSet<>(); + names.add("Test"); + for (Person person : persons) { + names.add(person.getName()); + } + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUsed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUsed.java new file mode 100644 index 000000000000..5121108ae0e9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUsed.java @@ -0,0 +1,20 @@ +// "Replace with collect" "true" +import java.util.*; + +public class Collect { + class Person { + String getName() { + return ""; + } + } + + void collectNames(List persons){ + Set names = new HashSet<>(), other = new HashSet<>(); + if(persons != null) { + for (Person person : persons) { + names.add(person.getName()); + } + } + System.out.println(names); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentInterrupted.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentInterrupted.java new file mode 100644 index 000000000000..f197faa7d174 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentInterrupted.java @@ -0,0 +1,22 @@ +// "Replace with findFirst()" "true" + +import java.util.List; +import java.util.Map; + +public class Main { + public void testMap(Map> map) throws Exception { + int firstSize = 0; + int other = map.size(); + if(other > 10) { + System.out.println("Big"); + } + for(List list : map.values()) { + if(list != null) { + firstSize = list.size(); + // comment + break; + } + } + System.out.println(firstSize); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentUsedInSameDeclaration.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentUsedInSameDeclaration.java new file mode 100644 index 000000000000..5b2dad630004 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentUsedInSameDeclaration.java @@ -0,0 +1,18 @@ +// "Replace with findFirst()" "true" + +import java.util.List; +import java.util.Map; + +public class Main { + public void testMap(Map> map) throws Exception { + int firstSize = 0, other = firstSize; + for(List list : map.values()) { + if(list != null) { + firstSize = list.size(); + // comment + break; + } + } + System.out.println(firstSize); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUnused.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUnused.java new file mode 100644 index 000000000000..6d1bec15b905 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUnused.java @@ -0,0 +1,22 @@ +// "Replace with sum()" "true" + +import java.util.List; + +public class Main { + public void testPrimitiveMap(List data) { + int sum = 0; + if(Math.random() > 0.5) { + sum = 10; + } else { + for (String str : data) { + if (str.startsWith("xyz")) { + int len = str.length(); + if (len > 10) { + sum += len * 2; + } + } + } + } + System.out.println(sum); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUsed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUsed.java new file mode 100644 index 000000000000..e33ab51f1b7c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUsed.java @@ -0,0 +1,22 @@ +// "Replace with sum()" "true" + +import java.util.List; + +public class Main { + public void testPrimitiveMap(List data) { + int sum = 0; + if(Math.random() > 0.5) { + System.out.println("oops"); + } else { + for (String str : data) { + if (str.startsWith("xyz")) { + int len = str.length(); + if (len > 10) { + sum += len * 2; + } + } + } + } + System.out.println(sum); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/doubleLt.html b/java/java-tests/testData/codeInsight/javadocIG/doubleLt.html new file mode 100644 index 000000000000..91861a2aca53 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/doubleLt.html @@ -0,0 +1,3 @@ +
class C
+extends Object
+ a << b \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/doubleLt.java b/java/java-tests/testData/codeInsight/javadocIG/doubleLt.java new file mode 100644 index 000000000000..7c30bf471f93 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/doubleLt.java @@ -0,0 +1,4 @@ +/** + * a << b + */ +class C {} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/ModuleHighlightingTest.kt b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/ModuleHighlightingTest.kt index c1db1138e1ec..b183184a5efe 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/ModuleHighlightingTest.kt +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/ModuleHighlightingTest.kt @@ -17,8 +17,7 @@ package com.intellij.codeInsight.daemon import com.intellij.psi.PsiJavaModule import com.intellij.testFramework.fixtures.LightJava9ModulesCodeInsightFixtureTestCase -import com.intellij.testFramework.fixtures.MultiModuleJava9ProjectDescriptor.ModuleDescriptor.M2 -import com.intellij.testFramework.fixtures.MultiModuleJava9ProjectDescriptor.ModuleDescriptor.M3 +import com.intellij.testFramework.fixtures.MultiModuleJava9ProjectDescriptor.ModuleDescriptor.* import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl import org.assertj.core.api.Assertions.assertThat @@ -136,6 +135,33 @@ class ModuleHighlightingTest : LightJava9ModulesCodeInsightFixtureTestCase() { fixes("module M { uses pkg.m3.C3; }", "AddModuleDependencyFix") } + fun testPackageAccessibility() { + addFile("module-info.java", "module M { requires M2; requires M6; }") + addFile("module-info.java", "module M2 { exports pkg.m2; }", M2) + addFile("pkg/m2/C2.java", "package pkg.m2;\npublic class C2 { }", M2) + addFile("pkg/m2/impl/C2Impl.java", "package pkg.m2.impl;\nimport pkg.m2.C2;\npublic class C2Impl { public static C2 make() {} }", M2) + addFile("pkg/m4/C4.java", "package pkg.m4;\npublic class C4 { }", M4) + addFile("module-info.java", "module M5 { exports pkg.m5; }", M5) + addFile("pkg/m5/C5.java", "package pkg.m5;\npublic class C5 { }", M5) + addFile("module-info.java", "module M6 { requires public M7; }", M6) + addFile("module-info.java", "module M7 { exports pkg.m7; }", M7) + addFile("pkg/m7/C7.java", "package pkg.m7;\npublic class C7 { }", M7) + + highlight("test.java", """ + import pkg.m2.C2; + import pkg.m2.*; + import pkg.m2.impl.C2Impl; + import pkg.m2.impl.*; + import pkg.m4.C4; + import pkg.m5.C5; + import pkg.m7.C7; + + import static pkg.m2.impl.C2Impl.make; + + class C { } + """.trimIndent(), true) + } + // private fun highlight(text: String, filter: Boolean = false) = highlight("module-info.java", text, filter) diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/DaemonRespondToChangesTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/DaemonRespondToChangesTest.java index 97e3eee4199a..d39851084606 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/DaemonRespondToChangesTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/DaemonRespondToChangesTest.java @@ -586,6 +586,15 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase { int countAfter = tool.visited.size(); assertTrue(tool.visited.toString(), countAfter > 0); + tool.visited.clear(); + + //ensure started on another file + configureByExistingFile(otherFile.getVirtualFile()); + infos = doHighlighting(HighlightSeverity.WARNING); + assertEmpty(infos); + + int countAfter2 = tool.visited.size(); + assertTrue(tool.visited.toString(), countAfter2 > 0); } public void testOverriddenMethodMarkers() throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java index 584031b37d13..c02e3c770fec 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java @@ -140,6 +140,11 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase assertSize(1, FunctionalExpressionSearch.search(findClass("I")).findAll()); } + public void testChainStartingWithConstructor() { + configure(); + assertSize(1, FunctionalExpressionSearch.search(findClass("IterHelper.MapIterCallback")).findAll()); + } + public void testDontVisitInapplicableFiles() { PsiClass sam = myFixture.addClass("interface I { void foo(); }"); myFixture.addClass("class Some { " + diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java index 5ea7abfd4543..07eb77bbd6e3 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java @@ -176,6 +176,10 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { doTestField(); } + public void testDoubleLt() throws Exception { + doTestClass(); + } + public void testEnumConstantOrdinal() throws Exception { PsiClass psiClass = getTestClass(); PsiField field = psiClass.getFields() [0]; @@ -224,6 +228,11 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { doTestLambdaParameter(); } + private void doTestClass() throws Exception { + PsiClass psiClass = getTestClass(); + verifyJavaDoc(psiClass); + } + private void doTestField() throws Exception { PsiClass psiClass = getTestClass(); PsiField field = psiClass.getFields() [0]; @@ -253,7 +262,7 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { } private void verifyJavaDoc(final PsiElement field, List docUrls) throws IOException { - String docInfo = JavaDocInfoGeneratorFactory.create(getProject(), field).generateDocInfo(docUrls); + String docInfo = JavaDocumentationProvider.generateExternalJavadoc(field, docUrls); assertNotNull(docInfo); assertEquals(exampleHtmlFileText(getTestName(true)), replaceEnvironmentDependentContent(docInfo)); } @@ -262,7 +271,8 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { final String path = JavaTestUtil.getJavaTestDataPath() + TEST_DATA_FOLDER; final String packageInfo = path + getTestName(true); PsiTestUtil.createTestProjectStructure(myProject, myModule, path, myFilesToDelete); - final String info = JavaDocInfoGeneratorFactory.create(getProject(), JavaPsiFacade.getInstance(getProject()).findPackage(getTestName(true))).generateDocInfo(null); + PsiPackage psiPackage = JavaPsiFacade.getInstance(getProject()).findPackage(getTestName(true)); + final String info = JavaDocumentationProvider.generateExternalJavadoc(psiPackage, (List)null); String htmlText = FileUtil.loadFile(new File(packageInfo + File.separator + "packageInfo.html")); assertNotNull(info); assertEquals(StringUtil.convertLineSeparators(htmlText.trim()), replaceEnvironmentDependentContent(info)); @@ -307,7 +317,7 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { private void verifyJavadocFor(String className) throws IOException { PsiClass psiClass = JavaPsiFacade.getInstance(myProject).findClass(className, GlobalSearchScope.allScope(myProject)); assertNotNull(psiClass); - String doc = JavaDocInfoGeneratorFactory.create(myProject, psiClass).generateDocInfo(null); + String doc = JavaDocumentationProvider.generateExternalJavadoc(psiClass, (List)null); assertNotNull(doc); PsiDirectory dir = (PsiDirectory)psiClass.getParent().getParent(); PsiFile htmlFile = dir.findFile(psiClass.getName() + ".html"); diff --git a/java/java-tests/testSrc/com/intellij/psi/search/UpdateCacheTest.java b/java/java-tests/testSrc/com/intellij/psi/search/UpdateCacheTest.java index ccde7332d8f7..298cd8520b53 100644 --- a/java/java-tests/testSrc/com/intellij/psi/search/UpdateCacheTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/search/UpdateCacheTest.java @@ -48,6 +48,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.indexing.FileBasedIndex; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.ArrayList; @@ -95,7 +96,7 @@ public class UpdateCacheTest extends PsiTestCase { final PsiFile finalFile = file; file = new WriteAction() { @Override - protected void run(Result result) throws Throwable { + protected void run(@NotNull Result result) throws Throwable { PsiFile res = (PsiFile)root.add(finalFile); result.setResult(res); } diff --git a/java/java-tests/testSrc/com/intellij/roots/libraries/LibraryTest.java b/java/java-tests/testSrc/com/intellij/roots/libraries/LibraryTest.java index 2a88f81c9350..db4059f329c2 100644 --- a/java/java-tests/testSrc/com/intellij/roots/libraries/LibraryTest.java +++ b/java/java-tests/testSrc/com/intellij/roots/libraries/LibraryTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -168,7 +168,7 @@ public class LibraryTest extends ModuleRootManagerTestCase { LibraryTable table = getLibraryTable(); Library library = new WriteAction() { @Override - protected void run(Result result) throws Throwable { + protected void run(@NotNull Result result) throws Throwable { Library res = table.createLibrary("native"); result.setResult(res); } diff --git a/java/java-tests/testSrc/com/intellij/testFramework/fixtures/MultiModuleJava9ProjectDescriptor.kt b/java/java-tests/testSrc/com/intellij/testFramework/fixtures/MultiModuleJava9ProjectDescriptor.kt index 2021dcd603a3..cdc211e11e3c 100644 --- a/java/java-tests/testSrc/com/intellij/testFramework/fixtures/MultiModuleJava9ProjectDescriptor.kt +++ b/java/java-tests/testSrc/com/intellij/testFramework/fixtures/MultiModuleJava9ProjectDescriptor.kt @@ -20,10 +20,7 @@ import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.Sdk -import com.intellij.openapi.roots.ContentEntry -import com.intellij.openapi.roots.LanguageLevelModuleExtension -import com.intellij.openapi.roots.ModifiableRootModel -import com.intellij.openapi.roots.ModuleRootModificationUtil +import com.intellij.openapi.roots.* import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.ex.temp.TempFileSystem @@ -32,13 +29,17 @@ import com.intellij.testFramework.IdeaTestUtil import com.intellij.testFramework.LightPlatformTestCase /** - * Dependencies: 'main' -> 'm2', 'm3' + * Dependencies: 'main' -> 'm2', 'main' -> 'm4', 'main' -> 'm5', 'main' -> 'm6' => 'm7' */ object MultiModuleJava9ProjectDescriptor : DefaultLightProjectDescriptor() { enum class ModuleDescriptor(internal val moduleName: String, internal val rootName: String) { MAIN(TEST_MODULE_NAME, "/not_used/"), M2("${TEST_MODULE_NAME}_m2", "src_m2"), - M3("${TEST_MODULE_NAME}_m3", "src_m3"); + M3("${TEST_MODULE_NAME}_m3", "src_m3"), + M4("${TEST_MODULE_NAME}_m4", "src_m4"), + M5("${TEST_MODULE_NAME}_m5", "src_m5"), + M6("${TEST_MODULE_NAME}_m6", "src_m6"), + M7("${TEST_MODULE_NAME}_m7", "src_m7"); fun root(): VirtualFile = if (this == MAIN) LightPlatformTestCase.getSourceRoot() else TempFileSystem.getInstance().findFileByPath("/$rootName")!! @@ -50,9 +51,23 @@ object MultiModuleJava9ProjectDescriptor : DefaultLightProjectDescriptor() { super.setUpProject(project, handler) runWriteAction { val main = ModuleManager.getInstance(project).findModuleByName(TEST_MODULE_NAME)!! + val m2 = makeModule(project, ModuleDescriptor.M2) ModuleRootModificationUtil.addDependency(main, m2) + makeModule(project, ModuleDescriptor.M3) + + val m4 = makeModule(project, ModuleDescriptor.M4) + ModuleRootModificationUtil.addDependency(main, m4) + + val m5 = makeModule(project, ModuleDescriptor.M5) + ModuleRootModificationUtil.addDependency(main, m5) + + val m6 = makeModule(project, ModuleDescriptor.M6) + ModuleRootModificationUtil.addDependency(main, m6) + + val m7 = makeModule(project, ModuleDescriptor.M7) + ModuleRootModificationUtil.addDependency(m6, m7, DependencyScope.COMPILE, true) } } diff --git a/java/testFramework/src/com/siyeh/ig/LightInspectionTestCase.java b/java/testFramework/src/com/siyeh/ig/LightInspectionTestCase.java index 3f47bb1fb661..d1fa0b9ca1df 100644 --- a/java/testFramework/src/com/siyeh/ig/LightInspectionTestCase.java +++ b/java/testFramework/src/com/siyeh/ig/LightInspectionTestCase.java @@ -15,11 +15,16 @@ */ package com.siyeh.ig; +import com.intellij.codeHighlighting.HighlightDisplayLevel; +import com.intellij.codeInsight.daemon.HighlightDisplayKey; import com.intellij.codeInspection.InspectionProfileEntry; +import com.intellij.codeInspection.ex.InspectionProfileImpl; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.profile.codeInspection.ProjectInspectionProfileManager; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; @@ -44,6 +49,14 @@ public abstract class LightInspectionTestCase extends LightCodeInsightFixtureTes final InspectionProfileEntry inspection = getInspection(); if (inspection != null) { myFixture.enableInspections(inspection); + + final Project project = myFixture.getProject(); + final HighlightDisplayKey displayKey = HighlightDisplayKey.find(inspection.getShortName()); + final InspectionProfileImpl currentProfile = ProjectInspectionProfileManager.getInstanceImpl(project).getCurrentProfile(); + final HighlightDisplayLevel errorLevel = currentProfile.getErrorLevel(displayKey, null); + if (errorLevel == HighlightDisplayLevel.DO_NOT_SHOW) { + currentProfile.setErrorLevel(displayKey, HighlightDisplayLevel.WARNING, project); + } } Sdk sdk = ModuleRootManager.getInstance(ModuleManager.getInstance(getProject()).getModules()[0]).getSdk(); diff --git a/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/MigrateAssertToMatcherAssertInspection.java b/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/MigrateAssertToMatcherAssertInspection.java index 41a2e42111d9..55773c007e0d 100644 --- a/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/MigrateAssertToMatcherAssertInspection.java +++ b/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/MigrateAssertToMatcherAssertInspection.java @@ -96,13 +96,6 @@ public class MigrateAssertToMatcherAssertInspection extends LocalInspectionTool } public class MyQuickFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override diff --git a/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java b/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java index 24a3d927f632..ce4220603e7d 100644 --- a/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java +++ b/json/src/com/intellij/json/codeinsight/JsonStandardComplianceInspection.java @@ -140,16 +140,10 @@ public class JsonStandardComplianceInspection extends LocalInspectionTool { } private static class AddDoubleQuotesFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return JsonBundle.message("quickfix.add.double.quotes.desc"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return JsonBundle.message("quickfix.add.double.quotes.desc"); } @Override diff --git a/platform/analysis-impl/src/com/intellij/codeStyle/InconsistentLineSeparatorsInspection.java b/platform/analysis-impl/src/com/intellij/codeStyle/InconsistentLineSeparatorsInspection.java index 97e0261987e4..88566bb3b416 100644 --- a/platform/analysis-impl/src/com/intellij/codeStyle/InconsistentLineSeparatorsInspection.java +++ b/platform/analysis-impl/src/com/intellij/codeStyle/InconsistentLineSeparatorsInspection.java @@ -67,12 +67,6 @@ public class InconsistentLineSeparatorsInspection extends LocalInspectionTool { } @NotNull private static final LocalQuickFix SET_PROJECT_LINE_SEPARATORS = new LocalQuickFix() { - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/platform/built-in-server/client/node-rpc-client/node-rpc-client.iml b/platform/built-in-server/client/node-rpc-client/node-rpc-client.iml index d5ce734b54a9..6fc90357ac32 100644 --- a/platform/built-in-server/client/node-rpc-client/node-rpc-client.iml +++ b/platform/built-in-server/client/node-rpc-client/node-rpc-client.iml @@ -11,11 +11,11 @@ - + - + diff --git a/platform/configuration-store-impl/src/DirectoryBasedStorage.kt b/platform/configuration-store-impl/src/DirectoryBasedStorage.kt index cc28a60b6b18..4b2a1519627e 100644 --- a/platform/configuration-store-impl/src/DirectoryBasedStorage.kt +++ b/platform/configuration-store-impl/src/DirectoryBasedStorage.kt @@ -204,7 +204,7 @@ open class DirectoryBasedStorage(private val dir: Path, storeElement.setAttribute(FileStorageCoreUtil.NAME, storage.componentName!!) storeElement.addContent(element) - val file = getFile(fileName, dir, this) + val file = dir.getOrCreateChild(fileName, this) // we don't write xml prolog due to historical reasons (and should not in any case) writeFile(null, this, file, storeElement, LineSeparator.fromString(if (file.exists()) loadFile(file).second else SystemProperties.getLineSeparator()), false) } diff --git a/platform/configuration-store-impl/src/SchemeManagerImpl.kt b/platform/configuration-store-impl/src/SchemeManagerImpl.kt index 9aaa33d6c372..eb9b341f4316 100644 --- a/platform/configuration-store-impl/src/SchemeManagerImpl.kt +++ b/platform/configuration-store-impl/src/SchemeManagerImpl.kt @@ -25,26 +25,25 @@ import com.intellij.openapi.components.impl.stores.FileStorageCoreUtil.DEFAULT_E import com.intellij.openapi.diagnostic.catchAndLog import com.intellij.openapi.extensions.AbstractExtensionPointBean import com.intellij.openapi.options.* -import com.intellij.openapi.project.ProjectBundle import com.intellij.openapi.util.Condition -import com.intellij.openapi.util.JDOMUtil import com.intellij.openapi.util.WriteExternalException import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.text.StringUtilRt -import com.intellij.openapi.vfs.* +import com.intellij.openapi.vfs.LocalFileSystem +import com.intellij.openapi.vfs.SafeWriteRequestor +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.vfs.newvfs.BulkFileListener import com.intellij.openapi.vfs.newvfs.NewVirtualFile import com.intellij.openapi.vfs.newvfs.events.VFileContentChangeEvent import com.intellij.openapi.vfs.newvfs.events.VFileCreateEvent import com.intellij.openapi.vfs.newvfs.events.VFileDeleteEvent import com.intellij.openapi.vfs.newvfs.events.VFileEvent -import com.intellij.util.PathUtil -import com.intellij.util.PathUtilRt -import com.intellij.util.SmartList +import com.intellij.util.* import com.intellij.util.containers.ConcurrentList import com.intellij.util.containers.ContainerUtil +import com.intellij.util.containers.catch import com.intellij.util.io.* -import com.intellij.util.loadElement import com.intellij.util.messages.MessageBus import com.intellij.util.text.UniqueNameGenerator import gnu.trove.THashSet @@ -575,7 +574,7 @@ class SchemeManagerImpl(val fileSpec: String, val currentFileNameWithoutExtension = externalInfo?.fileNameWithoutExtension val parent = processor.writeScheme(scheme) val element = if (parent is Element) parent else (parent as Document).detachRootElement() - if (JDOMUtil.isEmpty(element)) { + if (element.isEmpty()) { externalInfo?.scheduleDelete() return } @@ -591,9 +590,7 @@ class SchemeManagerImpl(val fileSpec: String, } // save only if scheme differs from bundled - val bundledScheme = readOnlyExternalizableSchemes.get(scheme.name) - if (bundledScheme != null && schemeToInfo.get(bundledScheme)?.isDigestEquals(newDigest) ?: false) { - externalInfo?.scheduleDelete() + if (isEqualToBundledScheme(externalInfo, newDigest, scheme)) { return } @@ -642,7 +639,7 @@ class SchemeManagerImpl(val fileSpec: String, } if (file == null) { - file = getFile(fileName, dir, this) + file = dir.getOrCreateChild(fileName, this) } runWriteAction { @@ -676,6 +673,38 @@ class SchemeManagerImpl(val fileSpec: String, externalInfo.schemeName = scheme.name } + private fun isEqualToBundledScheme(externalInfo: ExternalInfo?, newDigest: ByteArray, scheme: MUTABLE_SCHEME): Boolean { + fun serializeIfPossible(scheme: T): Element? { + LOG.catchAndLog { + @Suppress("UNCHECKED_CAST") + val bundledAsMutable = scheme as? MUTABLE_SCHEME ?: return null + return processor.writeScheme(bundledAsMutable) as Element + } + return null + } + + val bundledScheme = readOnlyExternalizableSchemes.get(scheme.name) + if (bundledScheme == null) { + if ((processor as? LazySchemeProcessor)?.let { it.isSchemeEqualToBundled(scheme) } ?: false) { + externalInfo?.scheduleDelete() + return true + } + return false + } + + val bundledExternalInfo = schemeToInfo.get(bundledScheme) ?: return false + if (bundledExternalInfo.digest == null) { + serializeIfPossible(bundledScheme)?.let { + bundledExternalInfo.digest = it.digest() + } ?: return false + } + if (bundledExternalInfo.isDigestEquals(newDigest)) { + externalInfo?.scheduleDelete() + return true + } + return false + } + private fun ExternalInfo.scheduleDelete() { filesToDelete.add(fileName) } @@ -930,25 +959,6 @@ class SchemeManagerImpl(val fileSpec: String, override fun isMetadataEditable(scheme: T) = !readOnlyExternalizableSchemes.containsKey(scheme.name) - private class ExternalInfo(var fileNameWithoutExtension: String, var fileExtension: String?) { - // we keep it to detect rename - var schemeName: String? = null - - var digest: ByteArray? = null - - val fileName: String - get() = "$fileNameWithoutExtension$fileExtension" - - fun setFileNameWithoutExtension(nameWithoutExtension: String, extension: String) { - fileNameWithoutExtension = nameWithoutExtension - fileExtension = extension - } - - fun isDigestEquals(newDigest: ByteArray) = Arrays.equals(digest, newDigest) - - override fun toString() = fileName - } - override fun toString() = fileSpec } @@ -959,26 +969,6 @@ private fun ExternalizableScheme.renameScheme(newName: String) { } } -private inline fun MutableList.catch(runnable: () -> Unit) { - try { - runnable() - } - catch (e: Throwable) { - add(e) - } -} - -fun createDir(ioDir: Path, requestor: Any): VirtualFile { - ioDir.createDirectories() - val parentFile = ioDir.parent - val parentVirtualFile = (if (parentFile == null) null else VfsUtil.createDirectoryIfMissing(parentFile.systemIndependentPath)) ?: throw IOException(ProjectBundle.message("project.configuration.save.file.not.found", parentFile)) - return getFile(ioDir.fileName.toString(), parentVirtualFile, requestor) -} - -fun getFile(fileName: String, parent: VirtualFile, requestor: Any): VirtualFile { - return parent.findChild(fileName) ?: runWriteAction { parent.createChildData(requestor, fileName) } -} - private inline fun catchAndLog(fileName: String, runnable: (fileName: String) -> Unit) { try { runnable(fileName) diff --git a/platform/configuration-store-impl/src/schemeLoader.kt b/platform/configuration-store-impl/src/schemeLoader.kt index 4a69c29009ec..ee780abac95c 100644 --- a/platform/configuration-store-impl/src/schemeLoader.kt +++ b/platform/configuration-store-impl/src/schemeLoader.kt @@ -1,7 +1,16 @@ package com.intellij.configurationStore +import com.intellij.openapi.application.runWriteAction +import com.intellij.openapi.project.ProjectBundle +import com.intellij.openapi.vfs.VfsUtil +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.util.io.createDirectories +import com.intellij.util.io.systemIndependentPath import org.xmlpull.mxp1.MXParser import org.xmlpull.v1.XmlPullParser +import java.io.IOException +import java.nio.file.Path +import java.util.* internal inline fun lazyPreloadScheme(bytes: ByteArray, isUseOldFileNameSanitize: Boolean, consumer: (name: String?, parser: XmlPullParser) -> Unit) { val parser = MXParser() @@ -49,4 +58,35 @@ private fun preload(isUseOldFileNameSanitize: Boolean, parser: MXParser): String } while (eventType != XmlPullParser.END_DOCUMENT) return null +} + +internal class ExternalInfo(var fileNameWithoutExtension: String, var fileExtension: String?) { + // we keep it to detect rename + var schemeName: String? = null + + var digest: ByteArray? = null + + val fileName: String + get() = "$fileNameWithoutExtension$fileExtension" + + fun setFileNameWithoutExtension(nameWithoutExtension: String, extension: String) { + fileNameWithoutExtension = nameWithoutExtension + fileExtension = extension + } + + fun isDigestEquals(newDigest: ByteArray) = Arrays.equals(digest, newDigest) + + override fun toString() = fileName +} + +internal fun VirtualFile.getOrCreateChild(fileName: String, requestor: Any): VirtualFile { + return findChild(fileName) ?: runWriteAction { createChildData(requestor, fileName) } +} + +internal fun createDir(ioDir: Path, requestor: Any): VirtualFile { + ioDir.createDirectories() + val parentFile = ioDir.parent + val parentVirtualFile = (if (parentFile == null) null else VfsUtil.createDirectoryIfMissing(parentFile.systemIndependentPath)) + ?: throw IOException(ProjectBundle.message("project.configuration.save.file.not.found", parentFile)) + return parentVirtualFile.getOrCreateChild(ioDir.fileName.toString(), requestor) } \ No newline at end of file diff --git a/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java b/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java index 895aca00ef71..89092913e98c 100644 --- a/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java +++ b/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java @@ -15,7 +15,6 @@ */ package com.intellij.codeInsight.documentation; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; @@ -25,18 +24,11 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.LinkedList; import java.util.List; -import java.util.Locale; -import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.util.regex.PatternSyntaxException; public class PlatformDocumentationUtil { - private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.documentation.PlatformDocumentationUtil"); - - private static final @NonNls Pattern ourLtFixupPattern = Pattern.compile("<([^/^\\w^!])"); - private static final @NonNls Pattern ourToQuote = Pattern.compile("[\\\\\\.\\^\\$\\?\\*\\+\\|\\)\\}\\]\\{\\(\\[]"); + private static final @NonNls Pattern ourLtFixupPattern = Pattern.compile("<(?=[^/!\\p{Alpha}])"); private static final @NonNls String LT_ENTITY = "<"; @Nullable @@ -68,38 +60,10 @@ public class PlatformDocumentationUtil { } } - private static String quote(String x) { - if (ourToQuote.matcher(x).find()) { - return "\\" + x; - } - - return x; - } - + /** + * Updates HTML contents for display in JEditorPane, which treats invalid HTML somewhat differently than popular browsers. + */ public static String fixupText(@NotNull CharSequence docText) { - Matcher fixupMatcher = ourLtFixupPattern.matcher(docText); - LinkedList secondSymbols = new LinkedList(); - - while (fixupMatcher.find()) { - String s = fixupMatcher.group(1); - - //[db] that's workaround to avoid internal bug - if (!s.equals("\\") && !secondSymbols.contains(s)) { - secondSymbols.addFirst(s); - } - } - - for (String s : secondSymbols) { - String pattern = "<" + quote(s); - - try { - docText = Pattern.compile(pattern).matcher(docText).replaceAll(LT_ENTITY + pattern); - } - catch (PatternSyntaxException e) { - LOG.error("Pattern syntax exception on " + pattern); - } - } - - return docText.toString(); + return ourLtFixupPattern.matcher(docText).replaceAll(LT_ENTITY); } } diff --git a/platform/core-impl/src/org/jetbrains/ide/script/Jsr223IdeScriptEngineManagerImpl.java b/platform/core-impl/src/org/jetbrains/ide/script/Jsr223IdeScriptEngineManagerImpl.java index c4ed7782241a..e38a4f8e607a 100644 --- a/platform/core-impl/src/org/jetbrains/ide/script/Jsr223IdeScriptEngineManagerImpl.java +++ b/platform/core-impl/src/org/jetbrains/ide/script/Jsr223IdeScriptEngineManagerImpl.java @@ -36,9 +36,7 @@ import java.io.IOException; import java.io.Reader; import java.io.Writer; import java.net.URL; -import java.util.Enumeration; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -50,7 +48,12 @@ class Jsr223IdeScriptEngineManagerImpl extends IdeScriptEngineManager { public ScriptEngineManager call() { long start = System.currentTimeMillis(); try { - return new ScriptEngineManager(); + return ClassLoaderUtil.runWithClassLoader(AllPluginsLoader.INSTANCE, new Computable() { + @Override + public ScriptEngineManager compute() { + return new ScriptEngineManager(); + } + }); } finally { long end = System.currentTimeMillis(); @@ -300,13 +303,38 @@ class Jsr223IdeScriptEngineManagerImpl extends IdeScriptEngineManager { throw new ClassNotFoundException(name); } + private static boolean isAllowedPluginResource(String name) { + // allow plugin engines but suppress all other resources + return "META-INF/services/javax.script.ScriptEngineFactory".equals(name); + } + @Override protected URL findResource(String name) { + if (isAllowedPluginResource(name)) { + for (IdeaPluginDescriptor descriptor : PluginManagerCore.getPlugins()) { + ClassLoader l = descriptor.getPluginClassLoader(); + URL url = l == null ? null : l.getResource(name); + if (url != null) return url; + } + } return getClass().getClassLoader().getResource(name); } @Override protected Enumeration findResources(String name) throws IOException { + if (isAllowedPluginResource(name)) { + Set result = null; + for (IdeaPluginDescriptor descriptor : PluginManagerCore.getPlugins()) { + ClassLoader l = descriptor.getPluginClassLoader(); + Enumeration urls = l == null ? null : l.getResources(name); + if (urls == null || !urls.hasMoreElements()) continue; + if (result == null) result = ContainerUtil.newLinkedHashSet(); + ContainerUtil.addAll(result, urls); + } + if (result != null) { + return Collections.enumeration(result); + } + } return getClass().getClassLoader().getResources(name); } } diff --git a/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsScheme.java b/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsScheme.java index 2aaf813d3a2d..aeed76a146cd 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsScheme.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsScheme.java @@ -31,7 +31,7 @@ public interface EditorColorsScheme extends Cloneable, TextAttributesScheme, Sch void setName(String name); - void setAttributes(TextAttributesKey key, TextAttributes attributes); + void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes); @NotNull Color getDefaultBackground(); diff --git a/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorSchemeAttributeDescriptor.java b/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorSchemeAttributeDescriptor.java index f174507a51c2..a1add8aeb4de 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorSchemeAttributeDescriptor.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorSchemeAttributeDescriptor.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.openapi.editor.colors; +import org.jetbrains.annotations.Nullable; + public interface EditorSchemeAttributeDescriptor { String getGroup(); @@ -23,7 +24,8 @@ public interface EditorSchemeAttributeDescriptor { EditorColorsScheme getScheme(); - void apply(EditorColorsScheme scheme); + default void apply(@Nullable EditorColorsScheme scheme) { + } boolean isModified(); } diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java index 5def887f1990..69415ec6db0a 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java @@ -17,6 +17,7 @@ package com.intellij.openapi.editor.colors.impl; import com.intellij.application.options.EditorFontsConstants; +import com.intellij.configurationStore.SerializableScheme; import com.intellij.ide.ui.ColorBlindness; import com.intellij.ide.ui.UISettings; import com.intellij.openapi.application.ex.ApplicationInfoEx; @@ -26,6 +27,7 @@ import com.intellij.openapi.editor.colors.ex.DefaultColorSchemesManager; import com.intellij.openapi.editor.markup.EffectType; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.options.FontSize; +import com.intellij.openapi.options.SchemeManager; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Couple; import com.intellij.openapi.util.WriteExternalException; @@ -49,7 +51,7 @@ import static com.intellij.openapi.editor.colors.EditorColors.*; import static com.intellij.openapi.util.Couple.of; import static com.intellij.ui.ColorUtil.fromHex; -public abstract class AbstractColorsScheme implements EditorColorsScheme { +public abstract class AbstractColorsScheme implements EditorColorsScheme, SerializableScheme { private static final int CURR_VERSION = 142; private static final FontSize DEFAULT_FONT_SIZE = FontSize.SMALL; @@ -340,28 +342,28 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { } myMetaInfo.clear(); - for (final Object o : node.getChildren()) { - Element childNode = (Element)o; + for (Element childNode : node.getChildren()) { String childName = childNode.getName(); - if (OPTION_ELEMENT.equals(childName)) { - readSettings(childNode, isDefault); + switch (childName) { + case OPTION_ELEMENT: + readSettings(childNode, isDefault); + break; + case EDITOR_FONT: + readFontSettings(childNode, myFontPreferences, isDefault); + break; + case CONSOLE_FONT: + readFontSettings(childNode, myConsoleFontPreferences, isDefault); + break; + case COLORS_ELEMENT: + readColors(childNode); + break; + case ATTRIBUTES_ELEMENT: + readAttributes(childNode); + break; + case META_INFO_ELEMENT: + readMetaInfo(childNode); + break; } - else if (EDITOR_FONT.equals(childName)) { - readFontSettings(childNode, myFontPreferences, isDefault); - } - else if (CONSOLE_FONT.equals(childName)) { - readFontSettings(childNode, myConsoleFontPreferences, isDefault); - } - else if (COLORS_ELEMENT.equals(childName)) { - readColors(childNode); - } - else if (ATTRIBUTES_ELEMENT.equals(childName)) { - readAttributes(childNode); - } - else if(META_INFO_ELEMENT.equals(childName)) { - readMetaInfo(childNode); - } - } if (myDeprecatedBackgroundColor != null) { @@ -429,9 +431,6 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { } } - @Deprecated - public static final Map DEFAULT_ERROR_STRIPE_COLOR = new THashMap<>(); - @SuppressWarnings("UseJBColor") private static final Map> DEFAULT_STRIPE_COLORS = new THashMap>() { { @@ -526,8 +525,7 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { } } - public void - writeExternal(Element parentNode) throws WriteExternalException { + public void writeExternal(Element parentNode) { parentNode.setAttribute(NAME_ATTR, getName()); parentNode.setAttribute(VERSION_ATTR, Integer.toString(myVersion)); @@ -606,10 +604,10 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { writeColors(colorElements); writeAttributes(attrElements); - if (colorElements.getChildren().size() > 0) { + if (!colorElements.getChildren().isEmpty()) { parentNode.addContent(colorElements); } - if (attrElements.getChildren().size() > 0) { + if (!attrElements.getChildren().isEmpty()) { parentNode.addContent(attrElements); } @@ -642,10 +640,9 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { } } - private void writeAttributes(Element attrElements) throws WriteExternalException { + private void writeAttributes(@NotNull Element attrElements) throws WriteExternalException { List list = new ArrayList<>(myAttributesMap.keySet()); - Collections.sort(list); - + list.sort(null); for (TextAttributesKey key: list) { TextAttributes defaultAttr = myParentScheme != null ? myParentScheme.getAttributes(key) : new TextAttributes(); TextAttributesKey baseKey = key.getFallbackAttributeKey(); @@ -653,20 +650,16 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { baseKey != null && myParentScheme instanceof AbstractColorsScheme ? ((AbstractColorsScheme)myParentScheme).getFallbackAttributes(baseKey) : null; TextAttributes value = myAttributesMap.get(key); - Element element = new Element(OPTION_ELEMENT); - element.setAttribute(NAME_ATTR, key.getExternalName()); if (baseKey != null && value.isFallbackEnabled()) { if (isParentOverwritingInheritance(key)) { - element.setAttribute(BASE_ATTRIBUTES_ATTR, baseKey.getExternalName()); - attrElements.addContent(element); + attrElements.addContent(new Element(OPTION_ELEMENT).setAttribute(NAME_ATTR, key.getExternalName()).setAttribute(BASE_ATTRIBUTES_ATTR, baseKey.getExternalName())); } } else { if (value.containsValue() && !value.equals(defaultAttr) || defaultAttr == defaultFallbackAttr) { Element valueElement = new Element(VALUE_ELEMENT); value.writeExternal(valueElement); - element.addContent(valueElement); - attrElements.addContent(element); + attrElements.addContent(new Element(OPTION_ELEMENT).setAttribute(NAME_ATTR, key.getExternalName()).addContent(valueElement)); } } } @@ -676,9 +669,8 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { private Element metaInfoToElement() { Element metaInfoElement = new Element(META_INFO_ELEMENT); myMetaInfo.setProperty(META_INFO_MODIFIED_TIME, META_INFO_DATE_FORMAT.format(new Date())); - ArrayList sortedPropertyNames = new ArrayList<>(myMetaInfo.size()); - sortedPropertyNames.addAll(myMetaInfo.stringPropertyNames()); - Collections.sort(sortedPropertyNames); + List sortedPropertyNames = new ArrayList<>(myMetaInfo.stringPropertyNames()); + sortedPropertyNames.sort(null); for (String propertyName : sortedPropertyNames) { String value = myMetaInfo.getProperty(propertyName); Element propertyInfo = new Element(PROPERTY_ELEMENT); @@ -704,8 +696,7 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { private void writeColors(Element colorElements) { List list = new ArrayList<>(myColorsMap.keySet()); - Collections.sort(list); - + list.sort(null); for (ColorKey key : list) { if (haveToWrite(key)) { Color value = myColorsMap.get(key); @@ -801,7 +792,6 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { return getFallbackAttributes(fallbackKey.getFallbackAttributeKey()); } - /** * Looks for explicitly specified attributes either in the scheme or its parent scheme. No fallback keys are used. * @@ -817,7 +807,6 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { return myParentScheme instanceof AbstractColorsScheme ? ((AbstractColorsScheme)myParentScheme).getDirectlyDefinedAttributes(key) : null; } - protected static boolean containsValue(@Nullable TextAttributes attributes) { return attributes != null && attributes.containsValue(); } @@ -857,12 +846,11 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { public static String getDisplayName(@NotNull EditorColorsScheme scheme) { String schemeName = scheme.getName(); return - schemeName.startsWith(DefaultColorsScheme.EDITABLE_COPY_PREFIX) ? - schemeName.substring(DefaultColorsScheme.EDITABLE_COPY_PREFIX.length()) : + schemeName.startsWith(SchemeManager.EDITABLE_COPY_PREFIX) ? + schemeName.substring(SchemeManager.EDITABLE_COPY_PREFIX.length()) : schemeName; } - - + @Nullable public AbstractColorsScheme getOriginal() { String originalSchemeName = getMetaProperties().getProperty(META_INFO_ORIGINAL); @@ -872,4 +860,46 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme { } return null; } + + @NotNull + @Override + public Element writeScheme() { + Element root = new Element("scheme"); + writeExternal(root); + return root; + } + + public boolean isEqualToBundled(AbstractColorsScheme bundledScheme) { + // parent is used only for default schemes (e.g. Darcula — bundled in all ide (opposite to IDE-specific, like Cobalt)) + if (myParentScheme != bundledScheme.myParentScheme && myParentScheme != bundledScheme) { + return false; + } + + for (String propertyName : myMetaInfo.stringPropertyNames()) { + if (propertyName.equals(META_INFO_CREATION_TIME) || + propertyName.equals(META_INFO_MODIFIED_TIME) || + propertyName.equals(META_INFO_IDE) || + propertyName.equals(META_INFO_IDE_VERSION) || + propertyName.equals(META_INFO_ORIGINAL) + ) { + continue; + } + + if (!Comparing.equal(myMetaInfo.getProperty(propertyName), bundledScheme.myMetaInfo.getProperty(propertyName))) { + return false; + } + } + + return getLineSpacing() == bundledScheme.getLineSpacing() && + getConsoleLineSpacing() == bundledScheme.getConsoleLineSpacing() && + getQuickDocFontSize() == bundledScheme.getQuickDocFontSize() && + myFontPreferences.getRealFontFamilies().equals(bundledScheme.myFontPreferences.getRealFontFamilies()) && + myFontPreferences.useLigatures() == bundledScheme.myFontPreferences.useLigatures() && + myConsoleFontPreferences.useLigatures() == bundledScheme.myConsoleFontPreferences.useLigatures() && + myConsoleFontPreferences.getRealFontFamilies().equals(bundledScheme.myConsoleFontPreferences.getRealFontFamilies()) && + myColorsMap.equals(bundledScheme.myColorsMap) && + myAttributesMap.equals(bundledScheme.myAttributesMap) && + myFontPreferences.equals(bundledScheme.myFontPreferences) && + myConsoleFontPreferences.equals(bundledScheme.myConsoleFontPreferences); + } } diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/DefaultColorsScheme.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/DefaultColorsScheme.java index ab7e65b39641..c3254814cf81 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/DefaultColorsScheme.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/DefaultColorsScheme.java @@ -20,6 +20,7 @@ import com.intellij.openapi.editor.colors.ColorKey; import com.intellij.openapi.editor.colors.EditorFontType; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.markup.TextAttributes; +import com.intellij.openapi.options.SchemeManager; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,9 +28,6 @@ import org.jetbrains.annotations.Nullable; import java.awt.*; public class DefaultColorsScheme extends AbstractColorsScheme implements ReadOnlyColorsScheme { - - public final static String EDITABLE_COPY_PREFIX = "_@user_"; - private String myName; public DefaultColorsScheme() { @@ -77,7 +75,7 @@ public class DefaultColorsScheme extends AbstractColorsScheme implements ReadOnl } @Override - public void setAttributes(TextAttributesKey key, TextAttributes attributes) { + public void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes) { } @Override @@ -107,7 +105,7 @@ public class DefaultColorsScheme extends AbstractColorsScheme implements ReadOnl } public String getEditableCopyName() { - return EDITABLE_COPY_PREFIX + myName; + return SchemeManager.EDITABLE_COPY_PREFIX + myName; } @Override diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java index 17ecad114fd0..55b51681a1ed 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImpl.java @@ -15,14 +15,12 @@ */ package com.intellij.openapi.editor.colors.impl; -import com.intellij.configurationStore.SerializableScheme; import com.intellij.openapi.editor.colors.ColorKey; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.options.ExternalizableScheme; import com.intellij.openapi.util.Comparing; -import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,13 +29,13 @@ import java.awt.*; /** * @author Yura Cangea */ -public class EditorColorsSchemeImpl extends AbstractColorsScheme implements ExternalizableScheme, SerializableScheme { +public class EditorColorsSchemeImpl extends AbstractColorsScheme implements ExternalizableScheme { public EditorColorsSchemeImpl(EditorColorsScheme parentScheme) { super(parentScheme); } @Override - public void setAttributes(TextAttributesKey key, TextAttributes attributes) { + public void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes) { if (attributes != getAttributes(key)) { myAttributesMap.put(key, attributes); } @@ -51,20 +49,31 @@ public class EditorColorsSchemeImpl extends AbstractColorsScheme implements Exte } @Override - public TextAttributes getAttributes(TextAttributesKey key) { - if (key != null) { - TextAttributesKey fallbackKey = key.getFallbackAttributeKey(); - TextAttributes attributes = getDirectlyDefinedAttributes(key); - if (fallbackKey == null) { - if (containsValue(attributes)) return attributes; - } - else { - if (containsValue(attributes) && !attributes.isFallbackEnabled()) return attributes; - attributes = getFallbackAttributes(fallbackKey); - if (containsValue(attributes)) return attributes; + public TextAttributes getAttributes(@Nullable TextAttributesKey key) { + TextAttributes attributes = key == null ? null : getOwnAttributes(key); + return attributes == null ? myParentScheme.getAttributes(key) : attributes; + } + + @Nullable + private TextAttributes getOwnAttributes(@NotNull TextAttributesKey key) { + TextAttributesKey fallbackKey = key.getFallbackAttributeKey(); + TextAttributes attributes = getDirectlyDefinedAttributes(key); + if (fallbackKey == null) { + if (containsValue(attributes)) { + return attributes; } } - return myParentScheme.getAttributes(key); + else { + if (containsValue(attributes) && !attributes.isFallbackEnabled()) { + return attributes; + } + + attributes = getFallbackAttributes(fallbackKey); + if (containsValue(attributes)) { + return attributes; + } + } + return null; } @Nullable @@ -86,12 +95,4 @@ public class EditorColorsSchemeImpl extends AbstractColorsScheme implements Exte newScheme.setDefaultMetaInfo(this); return newScheme; } - - @NotNull - @Override - public Element writeScheme() { - Element root = new Element("scheme"); - writeExternal(root); - return root; - } } diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ProgressExecutionMode.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ProgressExecutionMode.java index f0134df9347d..ecb602ed55b2 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ProgressExecutionMode.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ProgressExecutionMode.java @@ -20,10 +20,18 @@ package com.intellij.openapi.externalSystem.service.execution; * @since 10/2/13 */ public enum ProgressExecutionMode { + /** + * Perform synchronously w/o progress indicator + */ + NO_PROGRESS_SYNC, /** * Perform synchronously using modal window without option to sent to background */ MODAL_SYNC, + /** + * Perform asynchronously w/o progress indicator + */ + NO_PROGRESS_ASYNC, /** * Perform asynchronously using background mode */ diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java index d8b3ebc3228e..8814d3a81cd1 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java @@ -60,6 +60,7 @@ import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings; import com.intellij.openapi.externalSystem.task.TaskCallback; import com.intellij.openapi.externalSystem.view.ExternalProjectsView; import com.intellij.openapi.externalSystem.view.ExternalProjectsViewImpl; +import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.progress.PerformInBackgroundOption; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; @@ -85,7 +86,6 @@ import com.intellij.util.DisposeAwareRunnable; import com.intellij.util.concurrency.Semaphore; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtilRt; -import com.intellij.util.ui.UIUtil; import gnu.trove.TObjectHashingStrategy; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -474,37 +474,38 @@ public class ExternalSystemUtil { } }; - ExternalSystemApiUtil.executeOnEdt(true, () -> { - final String title; - switch (progressExecutionMode) { - case MODAL_SYNC: - title = ExternalSystemBundle.message("progress.import.text", projectName, externalSystemId.getReadableName()); - new Task.Modal(project, title, true) { - @Override - public void run(@NotNull ProgressIndicator indicator) { - refreshProjectStructureTask.execute(indicator); - } - }.queue(); - break; - case IN_BACKGROUND_ASYNC: - title = ExternalSystemBundle.message("progress.refresh.text", projectName, externalSystemId.getReadableName()); - new Task.Backgroundable(project, title) { - @Override - public void run(@NotNull ProgressIndicator indicator) { - refreshProjectStructureTask.execute(indicator); - } - }.queue(); - break; - case START_IN_FOREGROUND_ASYNC: - title = ExternalSystemBundle.message("progress.refresh.text", projectName, externalSystemId.getReadableName()); - new Task.Backgroundable(project, title, true, PerformInBackgroundOption.DEAF) { - @Override - public void run(@NotNull ProgressIndicator indicator) { - refreshProjectStructureTask.execute(indicator); - } - }.queue(); - } - }); + final String title; + switch (progressExecutionMode) { + case NO_PROGRESS_SYNC: + case NO_PROGRESS_ASYNC: + throw new ExternalSystemException("Please, use progress for the project import!"); + case MODAL_SYNC: + title = ExternalSystemBundle.message("progress.import.text", projectName, externalSystemId.getReadableName()); + new Task.Modal(project, title, true) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + refreshProjectStructureTask.execute(indicator); + } + }.queue(); + break; + case IN_BACKGROUND_ASYNC: + title = ExternalSystemBundle.message("progress.refresh.text", projectName, externalSystemId.getReadableName()); + new Task.Backgroundable(project, title) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + refreshProjectStructureTask.execute(indicator); + } + }.queue(); + break; + case START_IN_FOREGROUND_ASYNC: + title = ExternalSystemBundle.message("progress.refresh.text", projectName, externalSystemId.getReadableName()); + new Task.Backgroundable(project, title, true, PerformInBackgroundOption.DEAF) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + refreshProjectStructureTask.execute(indicator); + } + }.queue(); + } } public static void runTask(@NotNull ExternalSystemTaskExecutionSettings taskSettings, @@ -541,6 +542,7 @@ public class ExternalSystemUtil { final TaskUnderProgress task = new TaskUnderProgress() { @Override public void execute(@NotNull ProgressIndicator indicator) { + indicator.setIndeterminate(true); final Semaphore targetDone = new Semaphore(); final Ref result = new Ref<>(false); final Disposable disposable = Disposer.newDisposable(); @@ -581,7 +583,7 @@ public class ExternalSystemUtil { targetDone.up(); LOG.error(e); } - }, ModalityState.NON_MODAL); + }, ModalityState.defaultModalityState()); } catch (Exception e) { LOG.error(e); @@ -603,37 +605,38 @@ public class ExternalSystemUtil { } }; - UIUtil.invokeAndWaitIfNeeded(new Runnable() { - @Override - public void run() { - final String title = AbstractExternalSystemTaskConfigurationType.generateName(project, taskSettings); - switch (progressExecutionMode) { - case MODAL_SYNC: - new Task.Modal(project, title, true) { - @Override - public void run(@NotNull ProgressIndicator indicator) { - task.execute(indicator); - } - }.queue(); - break; - case IN_BACKGROUND_ASYNC: - new Task.Backgroundable(project, title) { - @Override - public void run(@NotNull ProgressIndicator indicator) { - task.execute(indicator); - } - }.queue(); - break; - case START_IN_FOREGROUND_ASYNC: - new Task.Backgroundable(project, title, true, PerformInBackgroundOption.DEAF) { - @Override - public void run(@NotNull ProgressIndicator indicator) { - task.execute(indicator); - } - }.queue(); - } - } - }); + final String title = AbstractExternalSystemTaskConfigurationType.generateName(project, taskSettings); + switch (progressExecutionMode) { + case NO_PROGRESS_SYNC: + task.execute(new EmptyProgressIndicator()); + break; + case MODAL_SYNC: + new Task.Modal(project, title, true) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + task.execute(indicator); + } + }.queue(); + break; + case NO_PROGRESS_ASYNC: + ApplicationManager.getApplication().executeOnPooledThread(() -> task.execute(new EmptyProgressIndicator())); + break; + case IN_BACKGROUND_ASYNC: + new Task.Backgroundable(project, title) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + task.execute(indicator); + } + }.queue(); + break; + case START_IN_FOREGROUND_ASYNC: + new Task.Backgroundable(project, title, true, PerformInBackgroundOption.DEAF) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + task.execute(indicator); + } + }.queue(); + } } @Nullable diff --git a/platform/icons/src/debugger/explosion.png b/platform/icons/src/debugger/explosion.png new file mode 100644 index 000000000000..d728b9452f7f Binary files /dev/null and b/platform/icons/src/debugger/explosion.png differ diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java index 0c76b11de507..e3fc61515212 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java @@ -27,7 +27,6 @@ import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.application.ApplicationNamesInfo; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.colors.*; import com.intellij.openapi.editor.colors.impl.*; import com.intellij.openapi.editor.markup.EffectType; @@ -74,8 +73,6 @@ import java.util.List; public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract implements EditorOptionsProvider { public static final String ID = "reference.settingsdialog.IDE.editor.colors"; - private static Logger LOG = Logger.getInstance("#" + ColorAndFontOptions.class.getName()); - private Map mySchemes; private MyColorScheme mySelectedScheme; @@ -208,7 +205,7 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract EditorColorsScheme clone = (EditorColorsScheme)scheme.getOriginalScheme().clone(); - scheme.apply(clone); + scheme.apply(clone, false); clone.setName(name); MyColorScheme newScheme = new MyColorScheme(clone); @@ -279,12 +276,9 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract boolean activeSchemeModified = false; EditorColorsScheme activeOriginalScheme = mySelectedScheme.getOriginalScheme(); for (MyColorScheme scheme : mySchemes.values()) { - if (!activeSchemeModified && activeOriginalScheme == scheme.getOriginalScheme()) { - activeSchemeModified = scheme.isModified(); - } - - if (!scheme.isDefault()) { - scheme.apply(); + boolean isModified = scheme.apply(); + if (isModified && !activeSchemeModified && activeOriginalScheme == scheme.getOriginalScheme()) { + activeSchemeModified = true; } result.add(scheme.getOriginalScheme()); } @@ -842,7 +836,9 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract @Override public void apply(EditorColorsScheme scheme) { - if (scheme == null) scheme = getScheme(); + if (scheme == null) { + scheme = getScheme(); + } scheme.setAttributes(key, isInherited() ? new TextAttributes() : getTextAttributes()); } @@ -1086,10 +1082,6 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract return myDescriptors; } - public boolean isDefault() { - return myParentScheme instanceof DefaultColorsScheme; - } - @Override public boolean isReadOnly() { return myParentScheme instanceof ReadOnlyColorsScheme; @@ -1123,13 +1115,16 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract return getConsoleLineSpacing() != myParentScheme.getConsoleLineSpacing(); } - public void apply() { + private boolean apply() { if (!(myParentScheme instanceof ReadOnlyColorsScheme)) { - apply(myParentScheme); + return apply(myParentScheme, true); } + return false; } - public void apply(@NotNull EditorColorsScheme scheme) { + private boolean apply(@NotNull EditorColorsScheme scheme, boolean onlyIfModified) { + boolean isModified = isFontModified() || isConsoleFontModified(); + scheme.setFontPreferences(getFontPreferences()); scheme.setLineSpacing(myLineSpacing); scheme.setQuickDocFontSize(getQuickDocFontSize()); @@ -1137,12 +1132,16 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract scheme.setConsoleLineSpacing(getConsoleLineSpacing()); for (EditorSchemeAttributeDescriptor descriptor : myDescriptors) { - descriptor.apply(scheme); + if (!onlyIfModified || descriptor.isModified()) { + isModified = true; + descriptor.apply(scheme); + } } - if (scheme instanceof AbstractColorsScheme) { + if (isModified && scheme instanceof AbstractColorsScheme) { ((AbstractColorsScheme)scheme).setSaveNeeded(true); } + return isModified; } @Override diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/SchemesPanel.java b/platform/lang-impl/src/com/intellij/application/options/colors/SchemesPanel.java index 547e7af7897c..ea5812a23553 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/SchemesPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/SchemesPanel.java @@ -21,12 +21,12 @@ import com.intellij.application.options.SaveSchemeDialog; import com.intellij.application.options.SkipSelfSearchComponent; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.editor.colors.EditorColorsScheme; -import com.intellij.openapi.editor.colors.impl.*; +import com.intellij.openapi.editor.colors.impl.AbstractColorsScheme; +import com.intellij.openapi.editor.colors.impl.EditorColorsSchemeImpl; +import com.intellij.openapi.editor.colors.impl.EmptyColorScheme; +import com.intellij.openapi.editor.colors.impl.ReadOnlyColorsScheme; import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.options.SchemeImportException; -import com.intellij.openapi.options.SchemeImportUtil; -import com.intellij.openapi.options.SchemeImporter; -import com.intellij.openapi.options.SchemeImporterEP; +import com.intellij.openapi.options.*; import com.intellij.openapi.project.DefaultProjectFactory; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.MessageType; @@ -83,7 +83,7 @@ public class SchemesPanel extends JPanel implements SkipSelfSearchComponent { selected instanceof AbstractColorsScheme ? ((AbstractColorsScheme)selected).getOriginal() : null; myResetButton.setEnabled( !readOnly && - selectedName.startsWith(DefaultColorsScheme.EDITABLE_COPY_PREFIX) && + selectedName.startsWith(SchemeManager.EDITABLE_COPY_PREFIX) && originalScheme instanceof ReadOnlyColorsScheme); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/CodeInsightUtilBase.java b/platform/lang-impl/src/com/intellij/codeInsight/CodeInsightUtilBase.java index 2a91b48f3828..a89989519ba3 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/CodeInsightUtilBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/CodeInsightUtilBase.java @@ -21,6 +21,7 @@ import com.intellij.codeInsight.hint.HintManagerImpl; import com.intellij.codeInsight.hint.HintUtil; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.textarea.TextComponentEditor; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.project.Project; @@ -109,7 +110,7 @@ public class CodeInsightUtilBase extends CodeInsightUtilCore { } public static void showReadOnlyViewWarning(Editor editor) { - if (ApplicationManager.getApplication().isHeadlessEnvironment()) return; + if (ApplicationManager.getApplication().isHeadlessEnvironment() || editor instanceof TextComponentEditor) return; JComponent component = HintUtil.createInformationLabel("This view is read-only"); final LightweightHint hint = new LightweightHint(component); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java index f76cdadf0b78..10ffb48c7a8f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java @@ -523,7 +523,7 @@ class PassExecutorService implements Disposable { else { log(updateProgress, pass, "Finished but there are passes in the queue: " + threadsToStartCountdown.get()); } - }, Registry.is("ide.perProjectModality") ? ModalityState.current() : ModalityState.stateForComponent(fileEditor.getComponent())); + }, Registry.is("ide.perProjectModality") ? ModalityState.defaultModalityState() : ModalityState.stateForComponent(fileEditor.getComponent())); } protected boolean isDisposed() { 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 1bc7a4b3ec9a..ea21c74c2c8f 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 @@ -51,7 +51,7 @@ import java.util.stream.Collectors; public class WholeFileLocalInspectionsPassFactory extends AbstractProjectComponent implements TextEditorHighlightingPassFactory { private final Map myFileToolsCache = ContainerUtil.createConcurrentWeakMap(); private final InspectionProjectProfileManager myProfileManager; - private volatile long myPsiModificationCount; + private final Map myPsiModificationCount = ContainerUtil.createConcurrentWeakMap(); public WholeFileLocalInspectionsPassFactory(Project project, TextEditorHighlightingPassRegistrar highlightingPassRegistrar, final InspectionProjectProfileManager profileManager) { @@ -88,8 +88,9 @@ public class WholeFileLocalInspectionsPassFactory extends AbstractProjectCompone @Override @Nullable public TextEditorHighlightingPass createHighlightingPass(@NotNull final PsiFile file, @NotNull final Editor editor) { - final long psiModificationCount = PsiManager.getInstance(myProject).getModificationTracker().getModificationCount(); - if (psiModificationCount == myPsiModificationCount) { + final Long appliedModificationCount = myPsiModificationCount.get(file); + if (appliedModificationCount != null && + appliedModificationCount == PsiManager.getInstance(myProject).getModificationTracker().getModificationCount()) { return null; //optimization } @@ -126,7 +127,7 @@ public class WholeFileLocalInspectionsPassFactory extends AbstractProjectCompone @Override protected void applyInformationWithProgress() { super.applyInformationWithProgress(); - myPsiModificationCount = PsiManager.getInstance(myProject).getModificationTracker().getModificationCount(); + myPsiModificationCount.put(file, PsiManager.getInstance(myProject).getModificationTracker().getModificationCount()); } }; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java index 153d93634132..5b3b97e379e1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java @@ -268,8 +268,10 @@ public class DocumentationComponent extends JPanel implements Disposable, DataPr return; } - int change = Math.abs(e.getWheelRotation()); - boolean increase = e.getWheelRotation() <= 0; + int rotation = e.getWheelRotation(); + if (rotation == 0) return; + int change = Math.abs(rotation); + boolean increase = rotation <= 0; FontSize newFontSize = getQuickDocFontSize(); for (; change > 0; change--) { if (increase) { diff --git a/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java b/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java index 3666be983e23..8a129f9aaad6 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java @@ -218,16 +218,10 @@ public class LossyEncodingInspection extends LocalInspectionTool { } private static class ChangeEncodingFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return "Change file encoding"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Change file encoding"; } @Override diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java b/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java index 17d262159cc5..487b1cbbfb68 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ProblematicWhitespaceInspection.java @@ -39,16 +39,10 @@ public class ProblematicWhitespaceInspection extends LocalInspectionTool { private static class ShowWhitespaceFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return InspectionsBundle.message("problematic.whitespace.show.whitespaces.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionsBundle.message("problematic.whitespace.show.whitespaces.quickfix"); } @Override diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java index 374901110481..5b4a6f324138 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/SeverityEditorDialog.java @@ -31,7 +31,6 @@ import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.colors.CodeInsightColors; -import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.options.Configurable; @@ -383,11 +382,6 @@ public class SeverityEditorDialog extends DialogWrapper { super(name, group, attributes, type, null, null, null); } - @Override - public void apply(EditorColorsScheme scheme) { - - } - @Override public boolean isErrorStripeEnabled() { return true; diff --git a/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineDescriptorResolveResult.java b/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineDescriptorResolveResult.java index 8a49758aca63..cf341aebc5e2 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineDescriptorResolveResult.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineDescriptorResolveResult.java @@ -186,13 +186,6 @@ class OfflineDescriptorResolveResult { private static CommonProblemDescriptor createRerunGlobalToolDescriptor(@NotNull GlobalInspectionToolWrapper wrapper, @Nullable RefEntity entity) { return new CommonProblemDescriptorImpl(new QuickFix[]{new QuickFix() { - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override diff --git a/platform/lang-impl/src/com/intellij/ide/todo/configurable/PatternDialog.java b/platform/lang-impl/src/com/intellij/ide/todo/configurable/PatternDialog.java index 981cb8b61749..415707259dae 100644 --- a/platform/lang-impl/src/com/intellij/ide/todo/configurable/PatternDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/todo/configurable/PatternDialog.java @@ -22,7 +22,6 @@ import com.intellij.application.options.colors.TextAttributesDescription; import com.intellij.icons.AllIcons; import com.intellij.ide.IdeBundle; import com.intellij.openapi.editor.colors.EditorColorsManager; -import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.DialogWrapper; @@ -78,10 +77,6 @@ class PatternDialog extends DialogWrapper { TextAttributes attributes = myPattern.getAttributes().getCustomizedTextAttributes(); myColorAndFontDescription = new TextAttributesDescription("null", null, attributes, null, EditorColorsManager.getInstance().getGlobalScheme(), null, null) { - @Override - public void apply(EditorColorsScheme scheme) { - } - @Override public boolean isErrorStripeEnabled() { return true; diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/MouseShortcut.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/MouseShortcut.java index f203dabcb4c5..6be32a0e4103 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/MouseShortcut.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/MouseShortcut.java @@ -36,7 +36,7 @@ public class MouseShortcut extends Shortcut { public static int getButton(MouseEvent event) { if (event instanceof MouseWheelEvent) { MouseWheelEvent wheel = (MouseWheelEvent)event; - return 0 < wheel.getWheelRotation() + return 0 < wheel.getPreciseWheelRotation() ? BUTTON_WHEEL_DOWN : BUTTON_WHEEL_UP; } diff --git a/platform/platform-api/src/com/intellij/openapi/ui/JBPopupMenu.java b/platform/platform-api/src/com/intellij/openapi/ui/JBPopupMenu.java index 69e969d91858..be8e65fed8ee 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/JBPopupMenu.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/JBPopupMenu.java @@ -55,6 +55,8 @@ public class JBPopupMenu extends JPopupMenu { public void processMouseWheelEvent(MouseWheelEvent e) { if (!isShowing()) return; + int rotation = e.getWheelRotation(); + if (rotation == 0) return; if (e.getComponent() != this) { e = (MouseWheelEvent)SwingUtilities.convertMouseEvent(e.getComponent(), e, this); } @@ -62,7 +64,7 @@ public class JBPopupMenu extends JPopupMenu { SwingUtilities.convertPointToScreen(p, this); Point tPoint = getLocationOnScreen(); if (p.x >= tPoint.x && p.x <= tPoint.x + getWidth() && p.y >= tPoint.y && p.y <= tPoint.y + getHeight()) { - myLayout.updateShift(e.getWheelRotation() * 10); + myLayout.updateShift(rotation * 10); } } diff --git a/platform/platform-api/src/com/intellij/openapi/ui/Messages.java b/platform/platform-api/src/com/intellij/openapi/ui/Messages.java index a88b4a422f59..48e3a167eb8d 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/Messages.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/Messages.java @@ -21,7 +21,6 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.TextRange; @@ -1568,11 +1567,10 @@ public class Messages { UIUtil.FontSize fixedFontSize = fontSize == null ? UIUtil.FontSize.NORMAL : fontSize; messageComponent.setFont(UIUtil.getLabelFont(fixedFontSize)); if (BasicHTML.isHTMLString(message)) { - HTMLEditorKit editorKit = new HTMLEditorKit(); + HTMLEditorKit editorKit = UIUtil.getHTMLEditorKit(); Font font = UIUtil.getLabelFont(fixedFontSize); editorKit.getStyleSheet().addRule(UIUtil.displayPropertiesToCSS(font, UIUtil.getLabelForeground())); messageComponent.setEditorKit(editorKit); - messageComponent.setContentType(UIUtil.HTML_MIME); } messageComponent.setText(message); messageComponent.setEditable(false); diff --git a/platform/platform-api/src/com/intellij/ui/PortField.java b/platform/platform-api/src/com/intellij/ui/PortField.java index 165c38ab3140..b1646d78196b 100644 --- a/platform/platform-api/src/com/intellij/ui/PortField.java +++ b/platform/platform-api/src/com/intellij/ui/PortField.java @@ -91,6 +91,8 @@ public class PortField extends JSpinner { @Override public void mouseWheelMoved(MouseWheelEvent e) { + int units = e.getUnitsToScroll(); + if (units == 0) return; final Object source = e.getSource(); if (source instanceof JSpinner) { final JSpinner spinner = (JSpinner)source; @@ -101,7 +103,7 @@ public class PortField extends JSpinner { final Number stepSize = numberModel.getStepSize(); final Comparable minimum = numberModel.getMinimum(); final Comparable maximum = numberModel.getMaximum(); - final Number newValue = calculateNewValue(value, stepSize, minimum, maximum, e.getUnitsToScroll()); + final Number newValue = calculateNewValue(value, stepSize, minimum, maximum, units); if (newValue != null) { numberModel.setValue(newValue); } diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java index 939020ccc266..61acf6325506 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java @@ -245,13 +245,12 @@ public class JBTabsImpl extends JComponent } } }); - addMouseWheelListener(new MouseWheelListener() { - @Override - public void mouseWheelMoved(MouseWheelEvent e) { - if (mySingleRowLayout.myLastSingRowLayout != null) { - mySingleRowLayout.scroll(e.getUnitsToScroll() * mySingleRowLayout.getScrollUnitIncrement()); - revalidateAndRepaint(false); - } + addMouseWheelListener(event -> { + int units = event.getUnitsToScroll(); + if (units == 0) return; + if (mySingleRowLayout.myLastSingRowLayout != null) { + mySingleRowLayout.scroll(units * mySingleRowLayout.getScrollUnitIncrement()); + revalidateAndRepaint(false); } }); diff --git a/platform/platform-impl/src/com/intellij/application/options/SaveSchemeDialog.java b/platform/platform-impl/src/com/intellij/application/options/SaveSchemeDialog.java index 4ad5df4f2a05..9a30a3ff26f1 100644 --- a/platform/platform-impl/src/com/intellij/application/options/SaveSchemeDialog.java +++ b/platform/platform-impl/src/com/intellij/application/options/SaveSchemeDialog.java @@ -20,6 +20,7 @@ import com.intellij.CommonBundle; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.editor.colors.ex.DefaultColorSchemesManager; import com.intellij.openapi.editor.colors.impl.DefaultColorsScheme; +import com.intellij.openapi.options.SchemeManager; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.util.text.UniqueNameGenerator; @@ -79,7 +80,7 @@ public class SaveSchemeDialog extends DialogWrapper { } else if ( isDefaultSchemeName(schemeName) || - schemeName.startsWith(DefaultColorsScheme.EDITABLE_COPY_PREFIX)) { + schemeName.startsWith(SchemeManager.EDITABLE_COPY_PREFIX)) { Messages.showMessageDialog(getContentPane(), ApplicationBundle.message("error.illegal.scheme.name"), CommonBundle.getErrorTitle(), Messages.getErrorIcon()); return; diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java index 134fdc21ee07..d3fb034d8f16 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java @@ -247,6 +247,17 @@ public class ActionMenuItem extends JBCheckBoxMenuItem { } } + @Override + public void setIcon(Icon icon) { + if (SystemInfo.isMacSystemMenu && ActionPlaces.MAIN_MENU.equals(myPlace)) { + if (icon instanceof IconLoader.LazyIcon) { + // [tav] JDK can't paint correctly our HiDPI icons at the system menu bar + icon = ((IconLoader.LazyIcon)icon).inNormalScale(false); + } + } + super.setIcon(icon); + } + public boolean isToggleable() { return myToggleable; } diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java index 81c0b5e97f0e..d7773879c448 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java @@ -319,6 +319,7 @@ public class LaterInvocator { @NotNull public static ModalityState getCurrentModalityState() { + ApplicationManager.getApplication().assertIsDispatchThread(); return ourModalityStack.peek(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/DelegateColorScheme.java b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/DelegateColorScheme.java index 2105f6bba288..090432361990 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/DelegateColorScheme.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/DelegateColorScheme.java @@ -55,7 +55,7 @@ public abstract class DelegateColorScheme implements EditorColorsScheme { } @Override - public void setAttributes(TextAttributesKey key, TextAttributes attributes) { + public void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes) { myDelegate.setAttributes(key, attributes); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java index 1adb34edb1ac..50e3306a3124 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java @@ -88,8 +88,12 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers EditorColorsSchemeImpl scheme = isBundled ? new BundledScheme() : new EditorColorsSchemeImpl(null); // todo be lazy scheme.readExternal(dataHolder.read()); - // https://gist.github.com/develar/6efc34c5f11ad50346e8eaef020b0ee4 - //dataHolder.updateDigest(scheme); + // we don't need to update digest for bundled scheme because + // 1) it can be computed on demand later (because bundled scheme is not mutable) + // 2) in the future user copy of bundled scheme will use bundled scheme as parent (not as full copy) + if (!isBundled) { + //dataHolder.updateDigest(scheme); + } return scheme; } @@ -116,6 +120,21 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers public String getSchemeExtension() { return ".icls"; } + + @Override + public boolean isSchemeEqualToBundled(@NotNull EditorColorsSchemeImpl scheme) { + if (!scheme.getName().startsWith(SchemeManager.EDITABLE_COPY_PREFIX)) { + return false; + } + + AbstractColorsScheme bundledScheme = + (AbstractColorsScheme)mySchemeManager.findSchemeByName(scheme.getName().substring(SchemeManager.EDITABLE_COPY_PREFIX.length())); + if (bundledScheme == null) { + return false; + } + + return scheme.isEqualToBundled(bundledScheme); + } } mySchemeManager = schemeManagerFactory.create(FILE_SPEC, new EditorColorSchemeProcessor()); @@ -142,7 +161,6 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers loadAdditionalTextAttributes(); } - private void initEditableDefaultSchemesCopies() { for (DefaultColorsScheme defaultScheme : myDefaultColorSchemeManager.getAllSchemes()) { if (defaultScheme.hasEditableCopy()) { @@ -172,7 +190,7 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers if (editableCopy == null) { editableCopy = (AbstractColorsScheme)initialScheme.clone(); editableCopy.setName(editableCopyName); - addColorsScheme(editableCopy); + mySchemeManager.addScheme(editableCopy); } editableCopy.setCanBeDeleted(false); } @@ -205,7 +223,7 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers } public String getEditableCopyName() { - return DefaultColorsScheme.EDITABLE_COPY_PREFIX + getName(); + return SchemeManager.EDITABLE_COPY_PREFIX + getName(); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java index 768c285ad94b..f4261e87558a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUtil.java @@ -800,6 +800,7 @@ public final class EditorUtil { } public static boolean isChangeFontSize(@NotNull MouseWheelEvent e) { + if (e.getWheelRotation() == 0) return false; return SystemInfo.isMac ? !e.isControlDown() && e.isMetaDown() && !e.isAltDown() && !e.isShiftDown() : e.isControlDown() && !e.isMetaDown() && !e.isAltDown() && !e.isShiftDown(); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 58f601064188..3d5567aff0ad 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.hint.DocumentFragmentTooltipRenderer; import com.intellij.codeInsight.hint.EditorFragmentComponent; import com.intellij.codeInsight.hint.TooltipController; import com.intellij.codeInsight.hint.TooltipGroup; +import com.intellij.concurrency.JobScheduler; import com.intellij.diagnostic.Dumpable; import com.intellij.diagnostic.LogMessageEx; import com.intellij.ide.*; @@ -32,6 +33,7 @@ import com.intellij.openapi.actionSystem.ex.ActionManagerEx; import com.intellij.openapi.actionSystem.impl.MouseGestureManager; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.application.impl.LaterInvocator; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.UndoConfirmationPolicy; import com.intellij.openapi.diagnostic.Logger; @@ -56,6 +58,7 @@ import com.intellij.openapi.fileEditor.impl.EditorsSplitters; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.AbstractPainter; import com.intellij.openapi.ui.Queryable; import com.intellij.openapi.util.*; import com.intellij.openapi.util.registry.Registry; @@ -63,6 +66,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.IdeGlassPane; +import com.intellij.openapi.wm.IdeGlassPaneUtil; import com.intellij.openapi.wm.ToolWindowAnchor; import com.intellij.openapi.wm.ex.ToolWindowManagerEx; import com.intellij.openapi.wm.impl.IdeBackgroundUtil; @@ -87,7 +91,6 @@ import com.intellij.util.ui.update.UiNotifyConnector; import gnu.trove.TIntArrayList; import gnu.trove.TIntHashSet; import gnu.trove.TIntIntHashMap; -import javafx.scene.input.DragEvent; import org.intellij.lang.annotations.JdkConstants; import org.intellij.lang.annotations.MagicConstant; import org.jetbrains.annotations.NonNls; @@ -95,6 +98,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; +import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.Timer; import javax.swing.border.Border; @@ -116,6 +120,7 @@ import java.awt.im.InputMethodRequests; import java.awt.image.BufferedImage; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.text.AttributedCharacterIterator; @@ -125,6 +130,7 @@ import java.util.*; import java.util.List; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; public final class EditorImpl extends UserDataHolderBase implements EditorEx, HighlighterClient, Queryable, Dumpable { private static final boolean isOracleRetina = UIUtil.isRetina() /*&& SystemInfo.isOracleJvm*/; @@ -6364,7 +6370,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } @Override - public void setAttributes(TextAttributesKey key, TextAttributes attributes) { + public void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes) { myOwnAttributes.put(key, attributes); } @@ -6493,6 +6499,71 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } } + private static class ExplosionPainter extends AbstractPainter { + + private Point myExplosionLocation; + private final static long TIME_PER_FRAME = 50; + private long lastRepaintTime = System.currentTimeMillis();; + private int spriteIndex = 0; + private final static int SPRITE_SIZE = 64; + private final static int SPRITES_IN_ROW = 4; + + private Image [] sprites = new Image [16]; + private AtomicBoolean nrp = new AtomicBoolean(true); + + public ExplosionPainter(final Point explosionLocation) { + myExplosionLocation = new Point(explosionLocation.x, explosionLocation.y); + Image explosionImage = ImageLoader.loadFromResource("/debugger/explosion.png"); + + for (int i = 0; i < sprites.length; i ++) { + sprites[i] = initSprites(i, explosionImage); + } + } + + private static BufferedImage initSprites(int index, Image explosionImage) { + BufferedImage spriteImage = UIUtil.createImage(SPRITE_SIZE, SPRITE_SIZE, BufferedImage.TYPE_INT_ARGB); + Graphics2D spriteGraphics = (Graphics2D)spriteImage.getGraphics(); + int sourceX = SPRITE_SIZE * (index % SPRITES_IN_ROW); + int sourceY = SPRITE_SIZE * (index / SPRITES_IN_ROW); + spriteGraphics.drawImage(explosionImage, + 0, 0, SPRITE_SIZE, SPRITE_SIZE, + sourceX, sourceY, sourceX + 64, sourceY + 64, + null); + return spriteImage; + } + + @Override + public void executePaint(Component component, Graphics2D g) { + + if (!nrp.get()) return; + + int x = myExplosionLocation.x - 32; + int y = myExplosionLocation.y - 32; + + long currentTimeMillis = System.currentTimeMillis(); + if ((currentTimeMillis - lastRepaintTime) < TIME_PER_FRAME) { + g.drawImage(sprites[spriteIndex], x, y, null); + JobScheduler.getScheduler().schedule(() -> {component.repaint(x, y, 12, 64);}, TIME_PER_FRAME, TimeUnit.MILLISECONDS); + return; + } + lastRepaintTime = currentTimeMillis; + + g.drawImage(sprites[spriteIndex++], x, y, null); + if (spriteIndex == sprites.length) { + nrp.set(false); + IdeGlassPaneUtil.find(component).removePainter(this); + component.repaint(x, y, SPRITE_SIZE, SPRITE_SIZE); + } + component.repaint(x, y, SPRITE_SIZE, SPRITE_SIZE); + } + + @Override + public boolean needsRepaint() { + return nrp.get(); + } + + } + static boolean handleDrop(@NotNull EditorImpl editor, @NotNull final Transferable t) { final EditorDropHandler dropHandler = editor.getDropHandler(); @@ -6503,6 +6574,19 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi GutterDraggableObject object = ((GutterIconRenderer)attachedObject).getDraggableObject(); if (object != null) { object.remove(); + Point mouseLocationOnScreen = MouseInfo.getPointerInfo().getLocation(); + JComponent editorComponent = editor.getComponent(); + Point editorComponentLocationOnScreen = editorComponent.getLocationOnScreen(); + IdeGlassPaneUtil.installPainter( + editorComponent, + new ExplosionPainter( + new Point( + mouseLocationOnScreen.x - editorComponentLocationOnScreen.x, + mouseLocationOnScreen.y - editorComponentLocationOnScreen.y + ) + ), + editor.getDisposable() + ); } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java index ce514ca40272..43877419b0ea 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java @@ -885,11 +885,11 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark @Override public void mouseWheelMoved(@NotNull MouseWheelEvent e) { if (myEditorPreviewHint == null) return; - int inc = e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL ? e.getUnitsToScroll() * e.getScrollAmount() : - e.getWheelRotation() < 0 ? -e.getScrollAmount() : e.getScrollAmount(); + int units = e.getUnitsToScroll(); + if (units == 0) return; // Stop accumulating when the last or the first line has been reached as 'adjusted' position to show lens. - if (myLastVisualLine < myEditor.getVisibleLineCount() - 1 && inc > 0 || myLastVisualLine > 0 && inc < 0) { - myWheelAccumulator += inc; + if (myLastVisualLine < myEditor.getVisibleLineCount() - 1 && units > 0 || myLastVisualLine > 0 && units < 0) { + myWheelAccumulator += units; } myRowAdjuster = myWheelAccumulator / myEditor.getLineHeight(); showToolTipByMouseMove(e); diff --git a/platform/platform-impl/src/com/intellij/openapi/project/ex/ProjectManagerEx.java b/platform/platform-impl/src/com/intellij/openapi/project/ex/ProjectManagerEx.java index b341b77568ad..22f9cdbd0c00 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/ex/ProjectManagerEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/ex/ProjectManagerEx.java @@ -35,7 +35,7 @@ public abstract class ProjectManagerEx extends ProjectManager { * @param filePath path to .ipr file or directory where .idea directory is located */ @Nullable - public abstract Project newProject(final String projectName, @NotNull String filePath, boolean useDefaultProjectSettings, boolean isDummy); + public abstract Project newProject(@Nullable String projectName, @NotNull String filePath, boolean useDefaultProjectSettings, boolean isDummy); @Nullable public abstract Project loadProject(@NotNull String filePath) throws IOException; @@ -67,7 +67,7 @@ public abstract class ProjectManagerEx extends ProjectManager { @Nullable @Override - public Project createProject(String name, String path) { + public Project createProject(@Nullable String name, @NotNull String path) { return newProject(name, path, true, false); } diff --git a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java index 19b104c5e75c..d60a3c114ddc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java @@ -471,7 +471,9 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable { } private static void notifyProjectOpenFailed() { - ApplicationManager.getApplication().getMessageBus().syncPublisher(AppLifecycleListener.TOPIC).projectOpenFailed(); + Application application = ApplicationManager.getApplication(); + application.getMessageBus().syncPublisher(AppLifecycleListener.TOPIC).projectOpenFailed(); + if (application.isUnitTestMode()) return; WelcomeFrame.showIfNoProjectOpened(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java index daa7142c9dbc..5670ecc8410b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java @@ -143,6 +143,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements } private final Alarm myUpdateHeadersAlarm = new Alarm(); + private final CommandProcessor myCommandProcessor = new CommandProcessor(); /** * invoked by reflection @@ -533,11 +534,11 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements for (FinalizableCommand each : commandList) { each.beforeExecute(this); } - myWindowManager.getCommandProcessor().execute(commandList, myProject.getDisposed()); + myCommandProcessor.execute(commandList, myProject.getDisposed()); } private void flushCommands() { - myWindowManager.getCommandProcessor().flush(); + myCommandProcessor.flush(); } @Override @@ -1304,7 +1305,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements @Override public void invokeLater(@NotNull final Runnable runnable) { List commandList = new ArrayList<>(); - commandList.add(new InvokeLaterCmd(runnable, myWindowManager.getCommandProcessor())); + commandList.add(new InvokeLaterCmd(runnable, myCommandProcessor)); execute(commandList); } @@ -1586,7 +1587,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements if (wasActive) { activateToolWindowImpl(id, commandList, true, true); } - commandList.add(myToolWindowsPane.createUpdateButtonPositionCmd(id, myWindowManager.getCommandProcessor())); + commandList.add(myToolWindowsPane.createUpdateButtonPositionCmd(id, myCommandProcessor)); } ToolWindowType getToolWindowInternalType(@NotNull String id) { @@ -1686,7 +1687,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements private void appendApplyWindowInfoCmd(@NotNull WindowInfoImpl info, @NotNull List commandsList) { final StripeButton button = getStripeButton(info.getId()); final InternalDecorator decorator = getInternalDecorator(info.getId()); - commandsList.add(new ApplyWindowInfoCmd(info, button, decorator, myWindowManager.getCommandProcessor())); + commandsList.add(new ApplyWindowInfoCmd(info, button, decorator, myCommandProcessor)); } /** @@ -1696,7 +1697,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements @NotNull WindowInfoImpl info, final boolean dirtyMode, @NotNull List commandsList) { - final CommandProcessor commandProcessor = myWindowManager.getCommandProcessor(); + final CommandProcessor commandProcessor = myCommandProcessor; final FinalizableCommand command = myToolWindowsPane.createAddDecoratorCmd(decorator, info, dirtyMode, commandProcessor); commandsList.add(command); } @@ -1705,7 +1706,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements * @see ToolWindowsPane#createRemoveDecoratorCmd */ private void appendRemoveDecoratorCmd(@NotNull String id, final boolean dirtyMode, @NotNull List commandsList) { - final FinalizableCommand command = myToolWindowsPane.createRemoveDecoratorCmd(id, dirtyMode, myWindowManager.getCommandProcessor()); + final FinalizableCommand command = myToolWindowsPane.createRemoveDecoratorCmd(id, dirtyMode, myCommandProcessor); commandsList.add(command); } @@ -1724,7 +1725,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements */ private void appendAddButtonCmd(final StripeButton button, @NotNull WindowInfoImpl info, @NotNull List commandsList) { final Comparator comparator = myLayout.comparator(info.getAnchor()); - final CommandProcessor commandProcessor = myWindowManager.getCommandProcessor(); + final CommandProcessor commandProcessor = myCommandProcessor; final FinalizableCommand command = myToolWindowsPane.createAddButtonCmd(button, info, comparator, commandProcessor); commandsList.add(command); } @@ -1733,14 +1734,14 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements * @see ToolWindowsPane#createAddButtonCmd */ private void appendRemoveButtonCmd(@NotNull String id, @NotNull List commandsList) { - final FinalizableCommand command = myToolWindowsPane.createRemoveButtonCmd(id, myWindowManager.getCommandProcessor()); + final FinalizableCommand command = myToolWindowsPane.createRemoveButtonCmd(id, myCommandProcessor); commandsList.add(command); } private ActionCallback appendRequestFocusInEditorComponentCmd(List commandList, boolean forced) { if (myProject.isDisposed()) return ActionCallback.DONE; EditorsSplitters splitters = getSplittersToFocus(); - CommandProcessor commandProcessor = myWindowManager.getCommandProcessor(); + CommandProcessor commandProcessor = myCommandProcessor; RequestFocusInEditorComponentCmd command = new RequestFocusInEditorComponentCmd(splitters, getFocusManager(), commandProcessor, forced); commandList.add(command); return command.getDoneCallback(); @@ -1750,14 +1751,14 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements final ToolWindowImpl toolWindow = (ToolWindowImpl)getToolWindow(id); final FocusWatcher focusWatcher = myId2FocusWatcher.get(id); commandList - .add(new RequestFocusInToolWindowCmd(getFocusManager(), toolWindow, focusWatcher, myWindowManager.getCommandProcessor(), forced)); + .add(new RequestFocusInToolWindowCmd(getFocusManager(), toolWindow, focusWatcher, myCommandProcessor, forced)); } /** * @see ToolWindowsPane#createSetEditorComponentCmd */ private void appendSetEditorComponentCmd(@Nullable final JComponent component, @NotNull List commandsList) { - final CommandProcessor commandProcessor = myWindowManager.getCommandProcessor(); + final CommandProcessor commandProcessor = myCommandProcessor; final FinalizableCommand command = myToolWindowsPane.createSetEditorComponentCmd(component, commandProcessor); commandsList.add(command); } @@ -1765,7 +1766,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements private void appendUpdateToolWindowsPaneCmd(final List commandsList) { final JRootPane rootPane = myFrame.getRootPane(); if (rootPane != null) { - final FinalizableCommand command = new UpdateRootPaneCmd(rootPane, myWindowManager.getCommandProcessor()); + final FinalizableCommand command = new UpdateRootPaneCmd(rootPane, myCommandProcessor); commandsList.add(command); } } @@ -1926,7 +1927,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements * Creates floating decorator for specified internal decorator. */ private AddFloatingDecoratorCmd(@NotNull InternalDecorator decorator, @NotNull WindowInfoImpl info) { - super(myWindowManager.getCommandProcessor()); + super(myCommandProcessor); myFloatingDecorator = new FloatingDecorator(myFrame, info.copy(), decorator); myId2FloatingDecorator.put(info.getId(), myFloatingDecorator); final Rectangle bounds = info.getFloatingBounds(); @@ -1965,7 +1966,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements private final FloatingDecorator myFloatingDecorator; private RemoveFloatingDecoratorCmd(@NotNull WindowInfoImpl info) { - super(myWindowManager.getCommandProcessor()); + super(myCommandProcessor); myFloatingDecorator = getFloatingDecorator(info.getId()); myId2FloatingDecorator.remove(info.getId()); info.setFloatingBounds(myFloatingDecorator.getBounds()); @@ -1998,7 +1999,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements * Creates windowed decorator for specified internal decorator. */ private AddWindowedDecoratorCmd(@NotNull InternalDecorator decorator, @NotNull WindowInfoImpl info) { - super(myWindowManager.getCommandProcessor()); + super(myCommandProcessor); myWindowedDecorator = new WindowedDecorator(myProject, info.copy(), decorator); Window window = myWindowedDecorator.getFrame(); final Rectangle bounds = info.getFloatingBounds(); @@ -2052,7 +2053,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements private final WindowedDecorator myWindowedDecorator; private RemoveWindowedDecoratorCmd(@NotNull WindowInfoImpl info) { - super(myWindowManager.getCommandProcessor()); + super(myCommandProcessor); myWindowedDecorator = getWindowedDecorator(info.getId()); myId2WindowedDecorator.remove(info.getId()); @@ -2090,7 +2091,7 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements private final class EditorComponentFocusWatcher extends FocusWatcher { @Override protected void focusedComponentChanged(final Component component, final AWTEvent cause) { - if (myWindowManager.getCommandProcessor().getCommandCount() > 0 || component == null) { + if (myCommandProcessor.getCommandCount() > 0 || component == null) { return; } final KeyboardFocusManager mgr = KeyboardFocusManager.getCurrentKeyboardFocusManager(); @@ -2135,12 +2136,12 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements @Override protected boolean isFocusedComponentChangeValid(final Component comp, final AWTEvent cause) { - return myWindowManager.getCommandProcessor().getCommandCount() == 0 && comp != null; + return myCommandProcessor.getCommandCount() == 0 && comp != null; } @Override protected void focusedComponentChanged(final Component component, final AWTEvent cause) { - if (myWindowManager.getCommandProcessor().getCommandCount() > 0 || component == null) { + if (myCommandProcessor.getCommandCount() > 0 || component == null) { return; } final WindowInfoImpl info = getInfo(myId); diff --git a/platform/platform-impl/src/com/intellij/ui/SlideComponent.java b/platform/platform-impl/src/com/intellij/ui/SlideComponent.java index 79564bfdbad6..9a99b427b41b 100644 --- a/platform/platform-impl/src/com/intellij/ui/SlideComponent.java +++ b/platform/platform-impl/src/com/intellij/ui/SlideComponent.java @@ -100,22 +100,19 @@ class SlideComponent extends JComponent { } }); - addMouseWheelListener(new MouseWheelListener() { - @Override - public void mouseWheelMoved(MouseWheelEvent e) { - final int amount = e.getScrollType() == MouseWheelEvent.WHEEL_UNIT_SCROLL ? e.getUnitsToScroll() * e.getScrollAmount() : - e.getWheelRotation() < 0 ? -e.getScrollAmount() : e.getScrollAmount(); - int pointerValue = myPointerValue + amount; - pointerValue = pointerValue < OFFSET ? OFFSET : pointerValue; - int size = myVertical ? getHeight() : getWidth(); - pointerValue = pointerValue > (size - 12) ? size - 12 : pointerValue; + addMouseWheelListener(event -> { + int units = event.getUnitsToScroll(); + if (units == 0) return; + int pointerValue = myPointerValue + units; + pointerValue = pointerValue < OFFSET ? OFFSET : pointerValue; + int size = myVertical ? getHeight() : getWidth(); + pointerValue = pointerValue > (size - 12) ? size - 12 : pointerValue; - myPointerValue = pointerValue; - myValue = pointerValueToValue(myPointerValue); + myPointerValue = pointerValue; + myValue = pointerValueToValue(myPointerValue); - repaint(); - fireValueChanged(); - } + repaint(); + fireValueChanged(); }); addComponentListener(new ComponentAdapter() { diff --git a/platform/platform-impl/src/com/intellij/util/containers/util.kt b/platform/platform-impl/src/com/intellij/util/containers/util.kt index 0c45fa1e55d5..535b1a47ee41 100644 --- a/platform/platform-impl/src/com/intellij/util/containers/util.kt +++ b/platform/platform-impl/src/com/intellij/util/containers/util.kt @@ -121,4 +121,13 @@ fun Stream?.getIfSingle(): T? = * * Also see [Stream.concat] documentation for other possible issues of concatenating large number of streams. */ -fun concat(vararg streams: Stream): Stream = Stream.of(*streams).reduce(Stream.empty()) { a, b -> Stream.concat(a, b) } \ No newline at end of file +fun concat(vararg streams: Stream): Stream = Stream.of(*streams).reduce(Stream.empty()) { a, b -> Stream.concat(a, b) } + +inline fun MutableList.catch(runnable: () -> Unit) { + try { + runnable() + } + catch (e: Throwable) { + add(e) + } +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/util/ui/table/JBListTable.java b/platform/platform-impl/src/com/intellij/util/ui/table/JBListTable.java index 8f981039dec7..9a5252648b1f 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/table/JBListTable.java +++ b/platform/platform-impl/src/com/intellij/util/ui/table/JBListTable.java @@ -28,6 +28,7 @@ import com.intellij.ui.EditorTextField; import com.intellij.ui.TableUtil; import com.intellij.ui.table.JBTable; import com.intellij.util.ui.AbstractTableCellEditor; +import com.intellij.util.ui.MouseEventHandler; import com.intellij.util.ui.UIUtil; import gnu.trove.TIntArrayList; import gnu.trove.TIntObjectHashMap; @@ -472,7 +473,7 @@ public abstract class JBListTable { editor.setFocusCycleRoot(true); editor.setFocusTraversalPolicy(new JBListTableFocusTraversalPolicy(editor)); - MouseSuppressor.install(editor); + editor.addMouseListener(MouseEventHandler.CONSUMER); myCellEditor = new MyCellEditor(editor); return myCellEditor; diff --git a/platform/platform-impl/src/com/intellij/util/ui/table/MouseSuppressor.java b/platform/platform-impl/src/com/intellij/util/ui/table/MouseSuppressor.java deleted file mode 100644 index e4c9198e8ea9..000000000000 --- a/platform/platform-impl/src/com/intellij/util/ui/table/MouseSuppressor.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2000-2011 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.util.ui.table; - -import org.jetbrains.annotations.NotNull; - -import javax.swing.*; -import java.awt.event.*; - -/** -* @author Konstantin Bulenkov -*/ -class MouseSuppressor implements MouseListener, MouseWheelListener, MouseMotionListener { - private static void handle(InputEvent e) { - e.consume(); - } - - public static void install(@NotNull JComponent component) { - component.addMouseListener(new MouseSuppressor()); - } - - @Override - public void mouseClicked(MouseEvent e) {handle(e);} - - @Override - public void mousePressed(MouseEvent e) {handle(e);} - - @Override - public void mouseReleased(MouseEvent e) {handle(e);} - - @Override - public void mouseEntered(MouseEvent e) {handle(e);} - - @Override - public void mouseExited(MouseEvent e) {handle(e);} - - @Override - public void mouseWheelMoved(MouseWheelEvent e) {handle(e);} - - @Override - public void mouseDragged(MouseEvent e) {handle(e);} - - @Override - public void mouseMoved(MouseEvent e) {handle(e);} -} diff --git a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java index 7d57d44bd41d..ad9405d4eb00 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java @@ -35,6 +35,9 @@ import org.jetbrains.annotations.Nullable; import java.io.OutputStream; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; public class ConsoleViewImplTest extends LightPlatformTestCase { private ConsoleViewImpl myConsole; @@ -117,7 +120,7 @@ public class ConsoleViewImplTest extends LightPlatformTestCase { latch.countDown(); }, 0); UIUtil.dispatchAllInvocationEvents(); // flush 1-st clear request - latch.await(); + assertThat(latch.await(30, TimeUnit.SECONDS)).isTrue(); UIUtil.dispatchAllInvocationEvents(); // flush 2-nd clear request while (console.hasDeferredOutput()) { UIUtil.dispatchAllInvocationEvents(); diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/LaterInvocatorTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/LaterInvocatorTest.java index 2fc0c573c217..c8902987347c 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/LaterInvocatorTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/LaterInvocatorTest.java @@ -19,6 +19,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Conditions; +import com.intellij.testFramework.LoggedErrorProcessor; import com.intellij.testFramework.PlatformTestCase; import com.intellij.testFramework.SkipInHeadlessEnvironment; import com.intellij.testFramework.UsefulTestCase; @@ -30,6 +31,9 @@ import javax.swing.*; import java.awt.*; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; @SuppressWarnings({"SSBasedInspection", "SynchronizeOnThis"}) @SkipInHeadlessEnvironment @@ -561,4 +565,16 @@ public class LaterInvocatorTest extends PlatformTestCase { assertOrderedEquals(myOrder, "m12", "m2", "m1", "m1x"); }); } + + public void testModalityStateCurrentAllowedOnlyFromEDT() throws Exception { + LoggedErrorProcessor.getInstance().disableStderrDumping(getTestRootDisposable()); + Future future = ApplicationManager.getApplication().executeOnPooledThread(() -> ModalityState.current()); + try { + future.get(1000, TimeUnit.MILLISECONDS); + fail("should fail"); + } + catch (ExecutionException e) { + assertTrue(e.getMessage(), e.getMessage().contains("Access is allowed from event dispatch thread only")); + } + } } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImplTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImplTest.java index 52f02290e4b3..5b223e0818fe 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/editor/colors/impl/EditorColorsSchemeImplTest.java @@ -31,6 +31,7 @@ import java.util.Arrays; import java.util.Collections; import static com.intellij.openapi.editor.colors.FontPreferencesTest.*; +import static com.intellij.testFramework.Assertions.assertThat; import static java.util.Collections.singletonList; @SuppressWarnings("Duplicates") @@ -198,17 +199,13 @@ public class EditorColorsSchemeImplTest extends EditorColorSchemeTestCase { assertSame(result.second, fallbackAttrs); } - public void testSaveNoInheritanceAndDefaults() throws Exception { - TextAttributes identifierAttrs = EditorColorsManager.getInstance().getScheme(EditorColorsScheme.DEFAULT_SCHEME_NAME) - .getAttributes(DefaultLanguageHighlighterColors.IDENTIFIER); - TextAttributes declarationAttrs = identifierAttrs.clone(); - Pair result = - doTestWriteRead(DefaultLanguageHighlighterColors.FUNCTION_DECLARATION, declarationAttrs); - TextAttributes fallbackAttrs = result.first.getAttributes( - DefaultLanguageHighlighterColors.FUNCTION_DECLARATION.getFallbackAttributeKey() - ); - assertEquals(result.second, fallbackAttrs); - assertNotSame(result.second, fallbackAttrs); + public void testSaveNoInheritanceAndDefaults() { + TextAttributes declarationAttrs = EditorColorsManager.getInstance().getScheme(EditorColorsScheme.DEFAULT_SCHEME_NAME) + .getAttributes(DefaultLanguageHighlighterColors.IDENTIFIER).clone(); + Pair result = doTestWriteRead(DefaultLanguageHighlighterColors.FUNCTION_DECLARATION, declarationAttrs); + TextAttributes fallbackAttrs = result.first.getAttributes(DefaultLanguageHighlighterColors.FUNCTION_DECLARATION.getFallbackAttributeKey()); + assertThat(result.second).isEqualTo(fallbackAttrs); + assertThat(result.second).isNotSameAs(fallbackAttrs); } public void testSaveInheritanceForEmptyAttrs() throws Exception { @@ -225,7 +222,6 @@ public class EditorColorsSchemeImplTest extends EditorColorSchemeTestCase { assertSame(fallbackAttrs, result.second); } - public void testUpgradeFromVer141() throws Exception { TextAttributesKey constKey = DefaultLanguageHighlighterColors.CONSTANT; TextAttributesKey fallbackKey = constKey.getFallbackAttributeKey(); @@ -279,7 +275,6 @@ public class EditorColorsSchemeImplTest extends EditorColorSchemeTestCase { TextAttributesKey.removeTextAttributesKey("C"); TextAttributesKey.removeTextAttributesKey("D"); } - } public void testIdea152156() throws Exception { @@ -311,6 +306,4 @@ public class EditorColorsSchemeImplTest extends EditorColorSchemeTestCase { TextAttributesKey.removeTextAttributesKey(testKey.getExternalName()); } } - - } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/FileEditorManagerTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/FileEditorManagerTest.java index 024b3ee0e361..b8bdda3137da 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/FileEditorManagerTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/FileEditorManagerTest.java @@ -28,7 +28,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.testFramework.FileEditorManagerTestCase; import com.intellij.testFramework.PlatformTestUtil; -import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java new file mode 100644 index 000000000000..57de3327de02 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java @@ -0,0 +1,76 @@ +/* + * Copyright 2000-2016 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.openapi.project.impl; + +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.project.ex.ProjectManagerEx; +import com.intellij.openapi.startup.StartupActivity; +import com.intellij.openapi.util.Disposer; +import com.intellij.testFramework.LightPlatformTestCase; +import com.intellij.testFramework.PlatformTestCase; +import com.intellij.testFramework.PlatformTestUtil; +import org.jetbrains.annotations.NotNull; + +import java.io.File; + +import static com.intellij.openapi.startup.StartupActivity.POST_STARTUP_ACTIVITY; + +/** + * @author Dmitry Avdeev + */ +public class ProjectOpeningTest extends LightPlatformTestCase { + + public void testOpenProjectCancelling() throws Exception { + File foo = PlatformTestCase.createTempDir("foo"); + Project project = null; + MyStartupActivity activity = new MyStartupActivity(); + PlatformTestUtil.registerExtension(POST_STARTUP_ACTIVITY, activity, getTestRootDisposable()); + + try { + ProjectManagerEx manager = ProjectManagerEx.getInstanceEx(); + project = manager.createProject(null, foo.getPath()); + assertFalse(manager.openProject(project)); + assertFalse(project.isOpen()); + assertTrue(activity.passed); + } + finally { + closeProject(project); + } + } + + private static void closeProject(final Project project) { + if (project != null && !project.isDisposed()) { + ProjectManager.getInstance().closeProject(project); + ApplicationManager.getApplication().runWriteAction(() -> Disposer.dispose(project)); + } + } + + private static class MyStartupActivity implements StartupActivity, DumbAware { + private boolean passed; + @Override + public void runActivity(@NotNull Project project) { + passed = true; + ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); + assertNotNull(indicator); + indicator.cancel(); + } + } +} diff --git a/platform/projectModel-api/src/com/intellij/openapi/project/ProjectManager.java b/platform/projectModel-api/src/com/intellij/openapi/project/ProjectManager.java index fdace050a335..f608e64459a9 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/project/ProjectManager.java +++ b/platform/projectModel-api/src/com/intellij/openapi/project/ProjectManager.java @@ -130,5 +130,5 @@ public abstract class ProjectManager { * @return newly crated project */ @Nullable - public abstract Project createProject(String name, String path); + public abstract Project createProject(@Nullable String name, @NotNull String path); } diff --git a/platform/projectModel-impl/src/com/intellij/configurationStore/scheme-impl.kt b/platform/projectModel-impl/src/com/intellij/configurationStore/scheme-impl.kt index a4d4a7721e16..cc6b497a61ce 100644 --- a/platform/projectModel-impl/src/com/intellij/configurationStore/scheme-impl.kt +++ b/platform/projectModel-impl/src/com/intellij/configurationStore/scheme-impl.kt @@ -62,12 +62,13 @@ abstract class LazySchemeProcessor(pri name: String, attributeProvider: Function, isBundled: Boolean = false): MUTABLE_SCHEME - override final fun writeScheme(scheme: MUTABLE_SCHEME) = (scheme as SerializableScheme).writeScheme() open fun isSchemeFile(name: CharSequence) = true open fun isSchemeDefault(scheme: MUTABLE_SCHEME, digest: ByteArray) = false + + open fun isSchemeEqualToBundled(scheme: MUTABLE_SCHEME) = false } class DigestOutputStream(val digest: MessageDigest) : OutputStream() { @@ -79,9 +80,7 @@ class DigestOutputStream(val digest: MessageDigest) : OutputStream() { digest.update(b, off, len) } - override fun toString(): String { - return "[Digest Output Stream] " + digest.toString() - } + override fun toString() = "[Digest Output Stream] $digest" } fun Element.digest(): ByteArray { diff --git a/platform/projectModel-impl/src/com/intellij/openapi/options/SchemeManager.java b/platform/projectModel-impl/src/com/intellij/openapi/options/SchemeManager.java index 8521c86e4136..66db8f9024a6 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/options/SchemeManager.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/options/SchemeManager.java @@ -25,6 +25,8 @@ import java.util.List; @SuppressWarnings("UnusedParameters") public abstract class SchemeManager { + public final static String EDITABLE_COPY_PREFIX = "_@user_"; + @NotNull public abstract Collection loadSchemes(); diff --git a/platform/testFramework/src/com/intellij/editor/EditorColorSchemeTestCase.java b/platform/testFramework/src/com/intellij/editor/EditorColorSchemeTestCase.java index 5314d25edfa1..6954b4222544 100644 --- a/platform/testFramework/src/com/intellij/editor/EditorColorSchemeTestCase.java +++ b/platform/testFramework/src/com/intellij/editor/EditorColorSchemeTestCase.java @@ -22,7 +22,6 @@ import com.intellij.openapi.editor.colors.impl.AbstractColorsScheme; import com.intellij.openapi.editor.colors.impl.EditorColorsSchemeImpl; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.util.Pair; -import com.intellij.openapi.util.WriteExternalException; import com.intellij.testFramework.LightPlatformTestCase; import org.jdom.Element; import org.jdom.input.DOMBuilder; @@ -56,8 +55,7 @@ public abstract class EditorColorSchemeTestCase extends LightPlatformTestCase { } @NotNull - protected Pair doTestWriteRead(TextAttributesKey key, TextAttributes attributes) - throws WriteExternalException { + protected Pair doTestWriteRead(@NotNull TextAttributesKey key, @NotNull TextAttributes attributes) { EditorColorsScheme defaultScheme = EditorColorsManager.getInstance().getScheme(EditorColorsScheme.DEFAULT_SCHEME_NAME); EditorColorsScheme sourceScheme = (EditorColorsScheme)defaultScheme.clone(); diff --git a/platform/util/src/com/intellij/openapi/util/IconLoader.java b/platform/util/src/com/intellij/openapi/util/IconLoader.java index 9b057c4b6e7f..7f12fd1424c9 100644 --- a/platform/util/src/com/intellij/openapi/util/IconLoader.java +++ b/platform/util/src/com/intellij/openapi/util/IconLoader.java @@ -573,6 +573,19 @@ public final class IconLoader { } protected abstract Icon compute(); + + public Icon inNormalScale(boolean isRetina) { + Icon icon = getOrComputeIcon(); + if (icon != null) { + if (icon instanceof CachedImageIcon) { + Image img = ((CachedImageIcon)icon).myScaledIconsCache.getOrigImage(isRetina); + if (img != null) { + icon = new ImageIcon(img); + } + } + } + return icon; + } } private static class LabelHolder { diff --git a/platform/util/src/com/intellij/util/EnvironmentUtil.java b/platform/util/src/com/intellij/util/EnvironmentUtil.java index 1d6428dadfd6..dc31d03bd7c4 100644 --- a/platform/util/src/com/intellij/util/EnvironmentUtil.java +++ b/platform/util/src/com/intellij/util/EnvironmentUtil.java @@ -161,10 +161,11 @@ public class EnvironmentUtil { public static class ShellEnvReader { public Map readShellEnv() throws Exception { + String os = SystemInfo.isLinux ? "linux" : "mac"; File reader = FileUtil.findFirstThatExist( PathManager.getBinPath() + "/printenv.py", - PathManager.getHomePath() + "/community/bin/mac/printenv.py", - PathManager.getHomePath() + "/bin/mac/printenv.py"); + PathManager.getHomePath() + "/community/bin/" + os + "/printenv.py", + PathManager.getHomePath() + "/bin/" + os + "/printenv.py"); if (reader == null) { throw new Exception("bin:" + PathManager.getBinPath()); } @@ -185,7 +186,8 @@ public class EnvironmentUtil { } @NotNull - protected static Map runProcessAndReadEnvs(@NotNull List command, @NotNull File envFile, String lineSeparator) throws Exception { + protected static Map runProcessAndReadEnvs(@NotNull List command, @NotNull File envFile, String lineSeparator) + throws Exception { ProcessBuilder builder = new ProcessBuilder(command).redirectErrorStream(true); builder.environment().put(DISABLE_OMZ_AUTO_UPDATE, "true"); Process process = builder.start(); diff --git a/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java index 5b7b03a3a68b..f7c7b4745d24 100644 --- a/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java +++ b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java @@ -17,13 +17,14 @@ package com.intellij.util.ui; import javax.swing.SwingUtilities; import javax.swing.event.MenuDragMouseEvent; +import javax.swing.event.MouseInputListener; import java.awt.*; import java.awt.event.*; /** * @author Sergey.Malenkov */ -public class MouseEventAdapter implements MouseListener, MouseMotionListener, MouseWheelListener { +public class MouseEventAdapter extends MouseAdapter implements MouseInputListener { private final T myAdapter; public MouseEventAdapter(T adapter) { @@ -119,6 +120,8 @@ public class MouseEventAdapter implements MouseListener, MouseMotionListener, public static MouseWheelEvent convert(MouseWheelEvent event, Component source, int id, long when, int modifiers, int x, int y) { return new MouseWheelEvent(source, id, when, modifiers, x, y, + event.getXOnScreen(), + event.getYOnScreen(), event.getClickCount(), event.isPopupTrigger(), event.getScrollType(), diff --git a/platform/util/src/com/intellij/util/ui/MouseEventHandler.java b/platform/util/src/com/intellij/util/ui/MouseEventHandler.java index 7477ed4afca8..7e0da37c9e0f 100644 --- a/platform/util/src/com/intellij/util/ui/MouseEventHandler.java +++ b/platform/util/src/com/intellij/util/ui/MouseEventHandler.java @@ -15,12 +15,13 @@ */ package com.intellij.util.ui; +import javax.swing.event.MouseInputListener; import java.awt.event.*; /** * @author Sergey.Malenkov */ -public abstract class MouseEventHandler implements MouseListener, MouseMotionListener, MouseWheelListener { +public abstract class MouseEventHandler extends MouseAdapter implements MouseInputListener { protected abstract void handle(MouseEvent event); @Override @@ -62,4 +63,11 @@ public abstract class MouseEventHandler implements MouseListener, MouseMotionLis public void mouseWheelMoved(MouseWheelEvent event) { handle(event); } + + public static final MouseEventHandler CONSUMER = new MouseEventHandler() { + @Override + protected void handle(MouseEvent event) { + event.consume(); + } + }; } diff --git a/platform/util/src/com/intellij/util/ui/UIUtil.java b/platform/util/src/com/intellij/util/ui/UIUtil.java index 3d5aa364d598..7d19d9138691 100644 --- a/platform/util/src/com/intellij/util/ui/UIUtil.java +++ b/platform/util/src/com/intellij/util/ui/UIUtil.java @@ -54,6 +54,7 @@ import javax.swing.plaf.basic.BasicComboBoxUI; import javax.swing.plaf.basic.BasicRadioButtonUI; import javax.swing.plaf.basic.ComboPopup; import javax.swing.text.*; +import javax.swing.text.html.HTMLDocument; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; import javax.swing.undo.UndoManager; @@ -2369,8 +2370,19 @@ public class UIUtil { final StyleSheet style = new StyleSheet(); style.addStyleSheet(isUnderDarcula() ? (StyleSheet)UIManager.getDefaults().get("StyledEditorKit.JBDefaultStyle") : DEFAULT_HTML_KIT_CSS); style.addRule(customCss); + scaleStyleSheetFontSize(style); return new HTMLEditorKit() { + + @Override + public Document createDefaultDocument() { + Document document = super.createDefaultDocument(); + if (document instanceof HTMLDocument) { + scaleStyleSheetFontSize(((HTMLDocument)document).getStyleSheet()); + } + return document; + } + @Override public StyleSheet getStyleSheet() { return style; @@ -2378,6 +2390,20 @@ public class UIUtil { }; } + private static void scaleStyleSheetFontSize(@Nullable StyleSheet styleSheet) { + if (styleSheet == null) { + return; + } + // 'baseFontSize' equals to javax.swing.text.html.StyleSheet.sizeMapDefault[3], + // where '3' == javax.swing.text.html.CSS.baseFontSizeIndex + // See javax.swing.text.html.StyleSheet.rebaseSizeMap() + int baseFontSize = 14; + int scaledBaseFontSize = JBUI.scaleFontSize(baseFontSize); + if (baseFontSize != scaledBaseFontSize) { + styleSheet.addRule("BASE_SIZE " + scaledBaseFontSize); + } + } + public static void removeScrollBorder(final Component c) { for (JScrollPane scrollPane : uiTraverser(c).filter(JScrollPane.class)) { if (!uiParents(scrollPane, true) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java index f056dd1ce99a..3091d18e4175 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java @@ -39,9 +39,9 @@ import com.intellij.vcs.log.data.LoadingDetails; import com.intellij.vcs.log.data.VcsLogData; import com.intellij.vcs.log.ui.VcsLogColorManager; import com.intellij.vcs.log.ui.render.GraphCommitCellRenderer; -import com.intellij.vcs.log.ui.render.RectangleReferencePainter; import com.intellij.vcs.log.ui.render.LabelIcon; import com.intellij.vcs.log.ui.render.RectanglePainter; +import com.intellij.vcs.log.ui.render.RectangleReferencePainter; import com.intellij.vcs.log.util.VcsUserUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -573,7 +573,7 @@ class CommitPanel extends JBPanel { } private static class RootPanel extends JPanel { - private static final int RIGHT_BORDER = 5; + private static final int RIGHT_BORDER = Math.max(UIUtil.getScrollBarWidth(), JBUI.scale(14)); @NotNull private final RectanglePainter myLabelPainter; @NotNull private String myText = ""; @NotNull private Color myColor = getCommitDetailsBackground(); @@ -620,14 +620,9 @@ class CommitPanel extends JBPanel { } else { Rectangle rect = scrollPane.getViewport().getViewRect(); - JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar(); width = rect.x + rect.width; - if (verticalScrollBar.isVisible()) { - width -= verticalScrollBar.getWidth(); - } } - getWidth(); - myLabelPainter.paint((Graphics2D)g, myText, width - painterSize.width - JBUI.scale(RIGHT_BORDER), 0, myColor); + myLabelPainter.paint((Graphics2D)g, myText, width - painterSize.width - RIGHT_BORDER, 0, myColor); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java index 02ceba3714e8..d96250b6b633 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointActionsPanel.java @@ -63,7 +63,11 @@ public class XBreakpointActionsPanel extends XBreakpointPropertiesSubPanel { JComponent logExpressionComponent = myLogExpressionComboBox.getComponent(); myLogExpressionPanel.add(logExpressionComponent, BorderLayout.CENTER); myLogExpressionComboBox.setEnabled(false); - myTemporaryCheckBox.setVisible(breakpoint instanceof XLineBreakpoint); + boolean isLineBreakpoint = breakpoint instanceof XLineBreakpoint; + myTemporaryCheckBox.setVisible(isLineBreakpoint); + if (isLineBreakpoint) { + myTemporaryCheckBox.addActionListener(e -> ((XLineBreakpoint)myBreakpoint).setTemporary(myTemporaryCheckBox.isSelected())); + } myLogExpressionCheckBox.addActionListener(listener); DebuggerUIUtil.focusEditorOnCheck(myLogExpressionCheckBox, myLogExpressionComboBox.getEditorComponent()); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java index 766e54644946..a5df84489251 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java @@ -143,12 +143,7 @@ public class XLightBreakpointPropertiesPanel implements XSuspendPolicyPanel.Dele JComponent conditionComponent = myConditionComboBox.getComponent(); conditionComponent.setBorder(JBUI.Borders.emptyRight(3)); myConditionExpressionPanel.add(conditionComponent, BorderLayout.CENTER); - myConditionEnabledCheckbox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - onCheckboxChanged(); - } - }); + myConditionEnabledCheckbox.addActionListener(e -> onCheckboxChanged()); DebuggerUIUtil.focusEditorOnCheck(myConditionEnabledCheckbox, myConditionComboBox.getEditorComponent()); } else { myConditionPanel.setVisible(false); @@ -214,12 +209,7 @@ public class XLightBreakpointPropertiesPanel implements XSuspendPolicyPanel.Dele } }); - myEnabledCheckbox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - myBreakpoint.setEnabled(myEnabledCheckbox.isSelected()); - } - }); + myEnabledCheckbox.addActionListener(e -> myBreakpoint.setEnabled(myEnabledCheckbox.isSelected())); } private void onCheckboxChanged() { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties index def3b314f69d..2f213319dd35 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties @@ -352,7 +352,7 @@ inner.class.field.hides.outer.ignore.option=Ignore outer fields not visible from inner.class.field.hides.outer.problem.descriptor=Inner class field #ref hides outer class field #loc local.variable.hides.member.variable.display.name=Local variable hides field local.variable.hides.member.variable.problem.descriptor=Local variable #ref hides field in class ''{0}'' #loc -local.variable.hides.member.variable.ignore.option=Ignore local variables in static methods +local.variable.hides.member.variable.ignore.option=Ignore local variables in a static context method.overloads.display.name=Method overloads method of superclass method.overloads.problem.descriptor=Method #ref() overloads a compatible method of a superclass, when overriding might have been intended #loc method.overloads.report.incompatible.option=Report even if parameter types are not compatible @@ -2194,4 +2194,6 @@ array.creation.without.new.keyword.name=Array creation without 'new' expression array.creation.without.new.keyword.quickfix=Add ''new {0}'' array.creation.without.new.keyword.family.quickfix=Add 'new' expression malformed.set.up.tear.down.display.name=Malformed 'setUp()' or 'tearDown()' -malformed.set.up.tear.down.problem.descriptor='#ref()' has incorrect signature #loc \ No newline at end of file +malformed.set.up.tear.down.problem.descriptor='#ref()' has incorrect signature #loc +method.missing.return.statement.display.name=Method contains logic but is missing a 'return' statement +method.missing.return.statement.problem.descriptor=Method #ref contains logic but is missing a 'return' statement \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/DelegatingFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/DelegatingFix.java index 36c3b1e2c5b5..809cb467cf8c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/DelegatingFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/DelegatingFix.java @@ -28,12 +28,6 @@ public class DelegatingFix extends InspectionGadgetsFix { this.delegate = delegate; } - @Override - @NotNull - public String getName() { - return delegate.getName(); - } - @Override @NotNull public String getFamilyName() { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java index 09705fc74f11..4c7da771eee7 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java @@ -66,15 +66,10 @@ public class OverlyStrongTypeCastInspection extends BaseInspection { } private static class OverlyStrongCastFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("overly.strong.type.cast.weaken.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/assignment/AssignmentUsedAsConditionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/assignment/AssignmentUsedAsConditionInspection.java index 087c6d5ff759..ab876907bc07 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/assignment/AssignmentUsedAsConditionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/assignment/AssignmentUsedAsConditionInspection.java @@ -48,14 +48,8 @@ public class AssignmentUsedAsConditionInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("assignment.used.as.condition.replace.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("assignment.used.as.condition.replace.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bitwise/PointlessBitwiseExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bitwise/PointlessBitwiseExpressionInspection.java index c124f27b1dbf..a9ef00bae3ec 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bitwise/PointlessBitwiseExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bitwise/PointlessBitwiseExpressionInspection.java @@ -176,15 +176,10 @@ public class PointlessBitwiseExpressionInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "pointless.bitwise.expression.simplify.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override public void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ClassNewInstanceInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ClassNewInstanceInspection.java index 32ea04579a19..3e47deccccfa 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ClassNewInstanceInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ClassNewInstanceInspection.java @@ -61,17 +61,11 @@ public class ClassNewInstanceInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "class.new.instance.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override protected void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement element = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/CollectionQueryUpdateCalledVisitor.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/CollectionQueryUpdateCalledVisitor.java index 6207f0a57c04..35f416784681 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/CollectionQueryUpdateCalledVisitor.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/CollectionQueryUpdateCalledVisitor.java @@ -26,7 +26,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashSet; -import java.util.List; import java.util.Set; class CollectionQueryUpdateCalledVisitor extends JavaRecursiveElementWalkingVisitor { @@ -160,13 +159,8 @@ class CollectionQueryUpdateCalledVisitor extends JavaRecursiveElementWalkingVisi if (aClass == null || LambdaHighlightingUtil.checkInterfaceFunctional(aClass) != null) { return; } - final List candidates = LambdaUtil.findFunctionCandidates(aClass); - if (candidates == null || candidates.size() != 1) { - return; - } - final HierarchicalMethodSignature signature = candidates.get(0); - final PsiMethod functionalMethod = signature.getMethod(); - if (PsiType.VOID.equals(functionalMethod.getReturnType())) { + PsiMethod functionalMethod = LambdaUtil.getFunctionalInterfaceMethod(aClass); + if (functionalMethod == null || PsiType.VOID.equals(functionalMethod.getReturnType())) { return; } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/EmptyInitializerInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/EmptyInitializerInspection.java index e9816051af24..446fe46228df 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/EmptyInitializerInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/EmptyInitializerInspection.java @@ -56,15 +56,10 @@ public class EmptyInitializerInspection extends BaseInspection { } private static class EmptyInitializerFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "empty.class.initializer.delete.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/InnerClassReferencedViaSubclassInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/InnerClassReferencedViaSubclassInspection.java index 36eac11d5106..bd54f9f22f99 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/InnerClassReferencedViaSubclassInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/InnerClassReferencedViaSubclassInspection.java @@ -55,15 +55,10 @@ public class InnerClassReferencedViaSubclassInspection extends BaseInspection { private static class InnerClassReferencedViaSubclassFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("inner.class.referenced.via.subclass.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("inner.class.referenced.via.subclass.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MathRandomCastToIntInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MathRandomCastToIntInspection.java index 3ae0b6e6038b..777bde140838 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MathRandomCastToIntInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MathRandomCastToIntInspection.java @@ -68,11 +68,6 @@ public class MathRandomCastToIntInspection extends BaseInspection { @Override @NotNull public String getFamilyName() { - return getName(); - } - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("math.random.cast.to.int.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java index 4f8851ca6918..3f91300595bd 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java @@ -63,15 +63,10 @@ public class NewStringBufferWithCharArgumentInspection extends BaseInspection { private static class NewStringBufferWithCharArgumentFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "new.string.buffer.with.char.argument.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java index 8299974dbd6d..5471960d3186 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/NonShortCircuitBooleanInspection.java @@ -60,14 +60,8 @@ public class NonShortCircuitBooleanInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("non.short.circuit.boolean.expression.replace.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("non.short.circuit.boolean.expression.replace.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticCallOnSubclassInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticCallOnSubclassInspection.java index 5844ebed3a48..67f405fc65a9 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticCallOnSubclassInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticCallOnSubclassInspection.java @@ -59,15 +59,10 @@ public class StaticCallOnSubclassInspection extends BaseInspection implements Cl private static class StaticCallOnSubclassFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("static.method.via.subclass.rationalize.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("static.method.via.subclass.rationalize.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticFieldReferenceOnSubclassInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticFieldReferenceOnSubclassInspection.java index 696df9bd2fb0..5238155ea345 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticFieldReferenceOnSubclassInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/StaticFieldReferenceOnSubclassInspection.java @@ -59,15 +59,10 @@ public class StaticFieldReferenceOnSubclassInspection } private static class StaticFieldOnSubclassFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "static.field.via.subclass.rationalize.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java index 74011bd85607..883ac1fd99dc 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java @@ -81,16 +81,10 @@ public class ClassInitializerInspection extends BaseInspection { private static class MoveToConstructorFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("class.initializer.move.code.to.constructor.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("class.initializer.move.code.to.constructor.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java index 4196bcb80785..32014028dcdc 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java @@ -77,15 +77,10 @@ public class ClassMayBeInterfaceInspection extends BaseInspection { private static class ClassMayBeInterfaceFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("class.may.be.interface.convert.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("class.may.be.interface.convert.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java index 84a44392d67f..cc73bb2cdaf5 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java @@ -30,8 +30,6 @@ import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.List; - /** * @author Bas Leijdekkers */ @@ -77,12 +75,8 @@ public class InterfaceMayBeAnnotatedFunctionalInspection extends BaseInspection if (LambdaHighlightingUtil.checkInterfaceFunctional(aClass) != null) { return; } - final List candidates = LambdaUtil.findFunctionCandidates(aClass); - if (candidates == null || candidates.size() != 1) { - return; - } - final MethodSignature signature = candidates.get(0); - if (signature.getTypeParameters().length > 0) { + MethodSignature signature = LambdaUtil.getFunction(aClass); + if (signature == null || signature.getTypeParameters().length > 0) { return; } registerClassError(aClass, aClass); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/UtilityClassCanBeEnumInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/UtilityClassCanBeEnumInspection.java index cfe033dd2498..764f2e7c3f21 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/UtilityClassCanBeEnumInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/UtilityClassCanBeEnumInspection.java @@ -57,16 +57,10 @@ public class UtilityClassCanBeEnumInspection extends BaseInspection { private static class UtilityClassCanBeEnumFix extends InspectionGadgetsFix { @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("utility.class.code.can.be.enum.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("utility.class.code.can.be.enum.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java index 9bf28d537da3..967c29059ec1 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java @@ -83,15 +83,10 @@ public class CloneDeclaresCloneNotSupportedInspection extends BaseInspection { private static class CloneDeclaresCloneNotSupportedInspectionFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("clone.doesnt.declare.clonenotsupportedexception.declare.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("clone.doesnt.declare.clonenotsupportedexception.declare.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneableImplementsCloneInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneableImplementsCloneInspection.java index 961e6b30bfc5..529925a515e3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneableImplementsCloneInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneableImplementsCloneInspection.java @@ -67,13 +67,8 @@ public class CloneableImplementsCloneInspection extends BaseInspection { private static class CreateCloneMethodFix extends InspectionGadgetsFix { @NotNull @Override - public String getName() { - return InspectionGadgetsBundle.message("cloneable.class.without.clone.quickfix"); - } - @Override - @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("cloneable.class.without.clone.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/BooleanExpressionMayBeConditionalInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/BooleanExpressionMayBeConditionalInspection.java index 2a26d9d31a54..4619be68c181 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/BooleanExpressionMayBeConditionalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/BooleanExpressionMayBeConditionalInspection.java @@ -62,14 +62,8 @@ public class BooleanExpressionMayBeConditionalInspection extends BaseInspection @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("if.may.be.conditional.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("if.may.be.conditional.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConfusingElseInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConfusingElseInspection.java index 11062a323953..85c6cd048c52 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConfusingElseInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConfusingElseInspection.java @@ -71,15 +71,10 @@ public class ConfusingElseInspection extends BaseInspection { } private static class ConfusingElseFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("confusing.else.unwrap.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantConditionalExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantConditionalExpressionInspection.java index d663d9138643..85646a38c8a6 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantConditionalExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantConditionalExpressionInspection.java @@ -77,17 +77,11 @@ public class ConstantConditionalExpressionInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantIfStatementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantIfStatementInspection.java index de7cd1053bfb..6838882fa068 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantIfStatementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConstantIfStatementInspection.java @@ -65,15 +65,10 @@ public class ConstantIfStatementInspection extends BaseInspection { } private static class ConstantIfStatementFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/DoubleNegationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/DoubleNegationInspection.java index c0a149e74f57..e0c5a602ed8c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/DoubleNegationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/DoubleNegationInspection.java @@ -56,15 +56,10 @@ public class DoubleNegationInspection extends BaseInspection { private static class DoubleNegationFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("double.negation.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("double.negation.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/FallthruInSwitchStatementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/FallthruInSwitchStatementInspection.java index 07f90b9dc5ef..adafc7e372a2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/FallthruInSwitchStatementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/FallthruInSwitchStatementInspection.java @@ -61,15 +61,10 @@ public class FallthruInSwitchStatementInspection extends BaseInspection { } private static class FallthruInSwitchStatementFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("fallthru.in.switch.statement.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ForLoopReplaceableByWhileInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ForLoopReplaceableByWhileInspection.java index 5d010437d62b..f589c97d4755 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ForLoopReplaceableByWhileInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ForLoopReplaceableByWhileInspection.java @@ -73,17 +73,11 @@ public class ForLoopReplaceableByWhileInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "for.loop.replaceable.by.while.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java index 349ca0c23db6..2c4712b3d99f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java @@ -70,17 +70,11 @@ public class IfMayBeConditionalInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "if.may.be.conditional.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement element = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java index 814fee1e2edb..dd4b9963d12e 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java @@ -65,17 +65,11 @@ public class IfStatementWithIdenticalBranchesInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "if.statement.with.identical.branches.collapse.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(@NotNull Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopWithImplicitTerminationConditionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopWithImplicitTerminationConditionInspection.java index 438975bf33b6..a6c95b2e37c4 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopWithImplicitTerminationConditionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/LoopWithImplicitTerminationConditionInspection.java @@ -60,15 +60,10 @@ public class LoopWithImplicitTerminationConditionInspection private static class LoopWithImplicitTerminationConditionFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "loop.with.implicit.termination.condition.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalExpressionInspection.java index 726253c79056..23c874d0e83c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalExpressionInspection.java @@ -56,16 +56,10 @@ public class NegatedConditionalExpressionInspection extends BaseInspection imple private static class NegatedConditionalExpressionFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("negated.conditional.expression.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("negated.conditional.expression.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalInspection.java index f51c23404d2d..2dfb12982846 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedConditionalInspection.java @@ -77,15 +77,10 @@ public class NegatedConditionalInspection extends BaseInspection { } private static class NegatedConditionalFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("negated.conditional.invert.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedEqualityExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedEqualityExpressionInspection.java index 2adfc0f0dc4b..a45ad60f162a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedEqualityExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedEqualityExpressionInspection.java @@ -52,16 +52,10 @@ public class NegatedEqualityExpressionInspection extends BaseInspection { private static class NegatedEqualityExpressionFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("negated.equality.expression.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("negated.equality.expression.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedIfElseInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedIfElseInspection.java index 5e1135ed2a05..ed2e4de9319d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedIfElseInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/NegatedIfElseInspection.java @@ -77,15 +77,9 @@ public class NegatedIfElseInspection extends BaseInspection { private static class NegatedIfElseFix extends InspectionGadgetsFix { - @NotNull @Override + @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("negated.if.else.invert.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java index a88a9475c06d..b0788d06e057 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java @@ -265,15 +265,10 @@ public class PointlessBooleanExpressionInspection extends BaseInspection { } private class PointlessBooleanExpressionFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("constant.conditional.expression.simplify.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableBooleanExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableBooleanExpressionInspection.java index 1e130ded05bf..c32a65b737fa 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableBooleanExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableBooleanExpressionInspection.java @@ -68,18 +68,11 @@ public class SimplifiableBooleanExpressionInspection extends BaseInspection impl private static class SimplifiableBooleanExpressionFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("constant.conditional.expression.simplify.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("constant.conditional.expression.simplify.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableConditionalExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableConditionalExpressionInspection.java index 52641d327aec..d057fd03caae 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableConditionalExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/SimplifiableConditionalExpressionInspection.java @@ -62,14 +62,8 @@ public class SimplifiableConditionalExpressionInspection extends BaseInspection @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("constant.conditional.expression.simplify.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("constant.conditional.expression.simplify.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/TrivialIfInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/TrivialIfInspection.java index a791c1fcedde..af68394f1a7d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/TrivialIfInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/TrivialIfInspection.java @@ -68,15 +68,10 @@ public class TrivialIfInspection extends BaseInspection implements CleanupLocalI } private static class TrivialIfFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryConditionalExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryConditionalExpressionInspection.java index aeb9d6f8b468..846946029562 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryConditionalExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryConditionalExpressionInspection.java @@ -86,15 +86,10 @@ public class UnnecessaryConditionalExpressionInspection extends BaseInspection i private static class UnnecessaryConditionalFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnBreakStatementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnBreakStatementInspection.java index 4d3bca412e6d..62aa090de16a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnBreakStatementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnBreakStatementInspection.java @@ -55,15 +55,10 @@ public class UnnecessaryLabelOnBreakStatementInspection private static class UnnecessaryLabelOnBreakStatementFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.label.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnContinueStatementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnContinueStatementInspection.java index 4c422d1f89c1..514abe1b710d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnContinueStatementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/UnnecessaryLabelOnContinueStatementInspection.java @@ -55,15 +55,10 @@ public class UnnecessaryLabelOnContinueStatementInspection private static class UnnecessaryLabelOnContinueStatementFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.label.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyCatchBlockInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyCatchBlockInspectionBase.java index 68a1c4a0bbea..c290c569e3dd 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyCatchBlockInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyCatchBlockInspectionBase.java @@ -79,15 +79,10 @@ public class EmptyCatchBlockInspectionBase extends BaseInspection { } private static class EmptyCatchBlockFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("rename.catch.parameter.to.ignored"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyFinallyBlockInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyFinallyBlockInspection.java index 048b9ec89582..e33f8e34d916 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyFinallyBlockInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/EmptyFinallyBlockInspection.java @@ -58,15 +58,10 @@ public class EmptyFinallyBlockInspection extends BaseInspection { } private static class RemoveTryFinallyBlockFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("remove.try.finally.block.quickfix"); } @@ -101,15 +96,10 @@ public class EmptyFinallyBlockInspection extends BaseInspection { } private static class RemoveFinallyBlockFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("remove.finally.block.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/NullThrownInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/NullThrownInspection.java index c7be1761e72c..eb1c61e2e1dd 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/NullThrownInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/NullThrownInspection.java @@ -49,15 +49,10 @@ public class NullThrownInspection extends BaseInspection { } private static class ThrowNullFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @NotNull @Override - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("null.thrown.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/finalization/FinalizeNotProtectedInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/finalization/FinalizeNotProtectedInspection.java index 5596f09d698f..fa26d00b3149 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/finalization/FinalizeNotProtectedInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/finalization/FinalizeNotProtectedInspection.java @@ -52,15 +52,10 @@ public class FinalizeNotProtectedInspection extends BaseInspection { } private static class ProtectedFinalizeFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("make.protected.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddSerialVersionUIDFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddSerialVersionUIDFix.java index e207bb613767..f62e5e15db96 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddSerialVersionUIDFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddSerialVersionUIDFix.java @@ -27,16 +27,10 @@ public class AddSerialVersionUIDFix extends InspectionGadgetsFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("add.serialversionuidfield.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddThisQualifierFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddThisQualifierFix.java index 3e83acf92c1b..f3fbd591fef0 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddThisQualifierFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/AddThisQualifierFix.java @@ -31,15 +31,10 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class AddThisQualifierFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("add.this.qualifier.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ConvertToVarargsMethodFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ConvertToVarargsMethodFix.java index fda54c935959..b92f3ed3411f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ConvertToVarargsMethodFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ConvertToVarargsMethodFix.java @@ -32,15 +32,9 @@ import java.util.Collection; */ public class ConvertToVarargsMethodFix extends InspectionGadgetsFix { - @Override @NotNull + @Override public String getFamilyName() { - return getName(); - } - - @NotNull - @Override - public String getName() { return InspectionGadgetsBundle.message("convert.to.variable.arity.method.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/DeleteImportFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/DeleteImportFix.java index 5499466eab92..69f03dc1162c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/DeleteImportFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/DeleteImportFix.java @@ -26,14 +26,8 @@ import org.jetbrains.annotations.NotNull; public class DeleteImportFix extends InspectionGadgetsFix { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("delete.import.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("delete.import.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/EqualityToEqualsFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/EqualityToEqualsFix.java index e9c4f86eb4ba..bf579daa3262 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/EqualityToEqualsFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/EqualityToEqualsFix.java @@ -35,12 +35,6 @@ public class EqualityToEqualsFix extends InspectionGadgetsFix { @Override @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message( "object.comparison.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java index 277d95359624..250451802ea4 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java @@ -34,17 +34,11 @@ public class ExtractParameterAsLocalVariableFix @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "extract.parameter.as.local.variable.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement element = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/MakeInitializerExplicitFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/MakeInitializerExplicitFix.java index 67dc8f532a5c..ad4fc475d8e5 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/MakeInitializerExplicitFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/MakeInitializerExplicitFix.java @@ -28,15 +28,10 @@ public class MakeInitializerExplicitFix extends InspectionGadgetsFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "make.initialization.explicit.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override public void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/NormalizeDeclarationFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/NormalizeDeclarationFix.java index b2a24d74ce7c..483e1a17558b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/NormalizeDeclarationFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/NormalizeDeclarationFix.java @@ -24,15 +24,10 @@ import com.siyeh.ig.InspectionGadgetsFix; import org.jetbrains.annotations.NotNull; public class NormalizeDeclarationFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("normalize.declaration.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/imports/StaticImportInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/imports/StaticImportInspectionBase.java index 3503e705ddb5..20ce712026bf 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/imports/StaticImportInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/imports/StaticImportInspectionBase.java @@ -73,15 +73,10 @@ public class StaticImportInspectionBase extends BaseInspection { private static class StaticImportFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("static.import.replace.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("static.import.replace.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java index 989500f172a8..c9117e286520 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java @@ -73,14 +73,8 @@ public class AbstractMethodOverridesAbstractMethodInspection extends BaseInspect @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("abstract.method.overrides.abstract.method.remove.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("abstract.method.overrides.abstract.method.remove.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java index 31c0bc143dab..89989ada5796 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java @@ -82,15 +82,10 @@ public class MissingOverrideAnnotationInspection extends BaseInspection implemen private static class MissingOverrideAnnotationFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("missing.override.annotation.add.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("missing.override.annotation.add.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java index fd2c77dd8b90..f78c94e8c9db 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java @@ -63,15 +63,10 @@ public class RedundantMethodOverrideInspection extends BaseInspection { private static class RedundantMethodOverrideFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "redundant.method.override.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/TypeParameterExtendsFinalClassInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/TypeParameterExtendsFinalClassInspection.java index 1016f732ee12..c02090567ee0 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/TypeParameterExtendsFinalClassInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/TypeParameterExtendsFinalClassInspection.java @@ -62,15 +62,10 @@ public class TypeParameterExtendsFinalClassInspection extends BaseInspection { } private static class TypeParameterExtendsFinalClassFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("type.parameter.extends.final.class.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/initialization/DoubleBraceInitializationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/initialization/DoubleBraceInitializationInspection.java index f2d08dd76fb5..524de529f773 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/initialization/DoubleBraceInitializationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/initialization/DoubleBraceInitializationInspection.java @@ -59,16 +59,10 @@ public class DoubleBraceInitializationInspection extends BaseInspection { private static class DoubleBraceInitializationFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("double.brace.initialization.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("double.brace.initialization.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/MultiplyOrDivideByPowerOfTwoInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/MultiplyOrDivideByPowerOfTwoInspection.java index d913e1c36837..8ada350f6dc3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/MultiplyOrDivideByPowerOfTwoInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/MultiplyOrDivideByPowerOfTwoInspection.java @@ -135,15 +135,10 @@ public class MultiplyOrDivideByPowerOfTwoInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "multiply.or.divide.by.power.of.two.replace.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override public void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SimplifiableIfStatementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SimplifiableIfStatementInspection.java index dc2bf4a1bc98..42c77ebc12d5 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SimplifiableIfStatementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SimplifiableIfStatementInspection.java @@ -210,15 +210,10 @@ public class SimplifiableIfStatementInspection extends BaseInspection { } private static class SimplifiableIfStatementFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("constant.conditional.expression.simplify.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SingleCharacterStartsWithInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SingleCharacterStartsWithInspection.java index 9d8e3c5716e0..8a72eea75051 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SingleCharacterStartsWithInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/j2me/SingleCharacterStartsWithInspection.java @@ -54,15 +54,10 @@ public class SingleCharacterStartsWithInspection extends BaseInspection { private static class SingleCharacterStartsWithFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "single.character.startswith.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java index ce338b554bf0..a6f79763be39 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java @@ -53,17 +53,11 @@ public class ClassWithoutConstructorInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "class.without.constructor.create.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/DanglingJavadocInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/DanglingJavadocInspection.java index 3a7584d4c0f7..451c8206085a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/DanglingJavadocInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/DanglingJavadocInspection.java @@ -64,16 +64,10 @@ public class DanglingJavadocInspection extends BaseInspection { private static class ConvertCommentFix extends InspectionGadgetsFix { @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("dangling.javadoc.convert.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("dangling.javadoc.convert.quickfix"); } @Override @@ -105,16 +99,10 @@ public class DanglingJavadocInspection extends BaseInspection { private static class DeleteCommentFix extends InspectionGadgetsFix { @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("dangling.javadoc.delete.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("dangling.javadoc.delete.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java index 079d0a96b2d6..1474e8b71623 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java @@ -63,15 +63,10 @@ public class HtmlTagCanBeJavadocTagInspection extends BaseInspection { private static class HtmlTagCanBeJavaDocTagFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("html.tag.can.be.javadoc.tag.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("html.tag.can.be.javadoc.tag.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/MissingDeprecatedAnnotationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/MissingDeprecatedAnnotationInspection.java index d5ae73b9cd0c..faec6ffd1409 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/MissingDeprecatedAnnotationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/MissingDeprecatedAnnotationInspection.java @@ -76,14 +76,8 @@ public class MissingDeprecatedAnnotationInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("missing.deprecated.annotation.add.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("missing.deprecated.annotation.add.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java index cbda63d70bf7..d5eabbae501b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java @@ -75,15 +75,10 @@ public class UnnecessaryInheritDocInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.inherit.doc.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override protected void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoBoxingInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoBoxingInspection.java index d639cfff6e76..6776fa0f79ab 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoBoxingInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoBoxingInspection.java @@ -109,14 +109,8 @@ public class AutoBoxingInspection extends BaseInspection { private static class AutoBoxingFix extends InspectionGadgetsFix { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("auto.boxing.make.boxing.explicit.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("auto.boxing.make.boxing.explicit.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoUnboxingInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoUnboxingInspection.java index aa97bb6949da..6e2ed1953db7 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoUnboxingInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/AutoUnboxingInspection.java @@ -120,15 +120,10 @@ public class AutoUnboxingInspection extends BaseInspection { private static class AutoUnboxingFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("auto.unboxing.make.unboxing.explicit.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("auto.unboxing.make.unboxing.explicit.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/ForeachStatementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/ForeachStatementInspection.java index d7625739b108..752bae754399 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/ForeachStatementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/ForeachStatementInspection.java @@ -51,15 +51,10 @@ public class ForeachStatementInspection extends BaseInspection { } private static class ForEachFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("extended.for.statement.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/VarargParameterInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/VarargParameterInspection.java index 6b037789e5b7..da461830d6ca 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/VarargParameterInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/jdk/VarargParameterInspection.java @@ -63,14 +63,8 @@ public class VarargParameterInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("variable.argument.method.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("variable.argument.method.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsCalledOnArrayInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsCalledOnArrayInspection.java index 99e8d006f773..29285d538995 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsCalledOnArrayInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsCalledOnArrayInspection.java @@ -53,14 +53,8 @@ public class AssertEqualsCalledOnArrayInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("assertequals.called.on.arrays.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("assertequals.called.on.arrays.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsMayBeAssertSameInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsMayBeAssertSameInspection.java index 32d1803a53c6..29d2ee010b0e 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsMayBeAssertSameInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/AssertEqualsMayBeAssertSameInspection.java @@ -51,14 +51,8 @@ public class AssertEqualsMayBeAssertSameInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("assertequals.may.be.assertsame.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("assertequals.may.be.assertsame.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MisorderedAssertEqualsArgumentsInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MisorderedAssertEqualsArgumentsInspectionBase.java index d9f3779709ee..cafd4282d979 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MisorderedAssertEqualsArgumentsInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MisorderedAssertEqualsArgumentsInspectionBase.java @@ -62,15 +62,10 @@ public abstract class MisorderedAssertEqualsArgumentsInspectionBase extends Base } private static class FlipArgumentsFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("misordered.assert.equals.arguments.flip.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MultipleExceptionsDeclaredOnTestMethodInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MultipleExceptionsDeclaredOnTestMethodInspection.java index 185025ca333a..c5c48866ed89 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MultipleExceptionsDeclaredOnTestMethodInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/MultipleExceptionsDeclaredOnTestMethodInspection.java @@ -58,17 +58,11 @@ public class MultipleExceptionsDeclaredOnTestMethodInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "multiple.exceptions.declared.on.test.method.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java index f5902d476bc6..f67d16ce0e98 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java @@ -52,14 +52,8 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("simplify.junit.assertion.simplify.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("simplify.junit.assertion.simplify.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java index 0415bcab5d19..62bb0b940c86 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspectionBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -152,6 +152,10 @@ public class TestMethodWithoutAssertionInspectionBase extends BaseInspection { @Override public void visitElement(@NotNull PsiElement element) { + if ((element instanceof PsiCompiledElement)) { + // assume no assertions in libraries (prevents assertion in recursive element walking visitor) + return; + } if (!containsAssertion) { super.visitElement(element); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/UseOfObsoleteAssertInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/UseOfObsoleteAssertInspection.java index 0c690e2b4f0e..4fb48ba885f9 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/UseOfObsoleteAssertInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/UseOfObsoleteAssertInspection.java @@ -222,15 +222,8 @@ public class UseOfObsoleteAssertInspection extends BaseInspection { @NotNull @Override - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("use.of.obsolete.assert.quickfix"); } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspectionBase.java index d1e8af34d6fd..e2a0f6fd356f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/LogStatementGuardedByLogConditionInspectionBase.java @@ -92,15 +92,9 @@ public class LogStatementGuardedByLogConditionInspectionBase extends BaseInspect private class LogStatementGuardedByLogConditionFix extends InspectionGadgetsFix { - @NotNull @Override + @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("log.statement.guarded.by.log.condition.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/StringConcatenationArgumentToLogCallInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/StringConcatenationArgumentToLogCallInspectionBase.java index 88648a5a4a06..f7c9812ea27b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/StringConcatenationArgumentToLogCallInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/logging/StringConcatenationArgumentToLogCallInspectionBase.java @@ -95,13 +95,8 @@ public class StringConcatenationArgumentToLogCallInspectionBase extends BaseInsp @NotNull @Override - public String getName() { - return InspectionGadgetsBundle.message("string.concatenation.argument.to.log.call.quickfix"); - } - @Override - @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("string.concatenation.argument.to.log.call.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java index a95ee77f49d7..d98d43328db5 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java @@ -62,12 +62,6 @@ public class InnerClassMayBeStaticInspection extends BaseInspection { @Override @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("make.static.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/BigDecimalLegacyMethodInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/BigDecimalLegacyMethodInspection.java index 77ec34bd822e..13c586c8e997 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/BigDecimalLegacyMethodInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/BigDecimalLegacyMethodInspection.java @@ -66,16 +66,10 @@ public class BigDecimalLegacyMethodInspection extends BaseInspection { private static class BigDecimalLegacyMethodFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("bigdecimal.legacy.method.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("bigdecimal.legacy.method.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java index 1e70b2030757..50952112d4d3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java @@ -81,16 +81,10 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection { } @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("equals.replaceable.by.objects.call.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("equals.replaceable.by.objects.call.quickfix"); } @Override @@ -265,18 +259,30 @@ public class EqualsReplaceableByObjectsCallInspection extends BaseInspection { if (expression instanceof PsiReferenceExpression) { final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)expression; final String referenceName = referenceExpression.getReferenceName(); - if (referenceName != null && referenceExpression.resolve() instanceof PsiVariable) { - final PsiExpression qualifierExpression = ParenthesesUtils.stripParentheses(referenceExpression.getQualifierExpression()); - if (qualifierExpression == null) { - return referenceName; + if (referenceName != null) { + final PsiElement resolved = referenceExpression.resolve(); + if (resolved instanceof PsiVariable || resolved instanceof PsiClass) { + final PsiExpression qualifierExpression = ParenthesesUtils.stripParentheses(referenceExpression.getQualifierExpression()); + if (qualifierExpression == null) { + return referenceName; + } + final String qualifierName = getQualifiedVariableName(qualifierExpression); + return qualifierName != null ? qualifierName + "." + referenceName : null; } - final String qualifierName = getQualifiedVariableName(qualifierExpression); - return qualifierName != null ? qualifierName + "." + referenceName : null; } } else if (expression instanceof PsiQualifiedExpression) { final PsiJavaCodeReferenceElement qualifier = ((PsiQualifiedExpression)expression).getQualifier(); - final String name = expression instanceof PsiThisExpression ? "this" : "super"; + final String name; + if (expression instanceof PsiThisExpression) { + name = "this"; + } + else if (expression instanceof PsiSuperExpression) { + name = "super"; + } + else { + return null; + } return qualifier != null ? qualifier.getQualifiedName() + "." + name : name; } return null; diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java index 2c2247e194b9..a1f2d339f39a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java @@ -148,15 +148,9 @@ public class IfCanBeSwitchInspection extends BaseInspection { public IfCanBeSwitchFix() {} - @NotNull @Override + @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("if.can.be.switch.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java index 273dd711fec8..632f3c940e5a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IndexOfReplaceableByContainsInspection.java @@ -115,17 +115,10 @@ public class IndexOfReplaceableByContainsInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "replace.indexof.with.contains.quickfix"); } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - } static String createContainsExpressionText( diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/StringBufferReplaceableByStringBuilderInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/StringBufferReplaceableByStringBuilderInspection.java index 1fd5a4e4bcfb..26e2694ab340 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/StringBufferReplaceableByStringBuilderInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/StringBufferReplaceableByStringBuilderInspection.java @@ -89,14 +89,8 @@ public class StringBufferReplaceableByStringBuilderInspection extends BaseInspec @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("string.buffer.replaceable.by.string.builder.replace.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("string.buffer.replaceable.by.string.builder.replace.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java index 2885d49f37a9..4a57fca99844 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java @@ -68,15 +68,10 @@ public class TryFinallyCanBeTryWithResourcesInspection extends BaseInspection { private static class TryFinallyCanBeTryWithResourcesFix extends InspectionGadgetsFix { public TryFinallyCanBeTryWithResourcesFix() {} - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("try.finally.can.be.try.with.resources.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java index 05b2ee3681ac..bbe0ea3aa2df 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java @@ -193,14 +193,8 @@ public class TryWithIdenticalCatchesInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("try.with.identical.catches.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("try.with.identical.catches.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java index fd47cfe2baa0..9539e480765b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java @@ -71,15 +71,10 @@ public class UnnecessaryBoxingInspection extends BaseInspection { } private static class UnnecessaryBoxingFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("unnecessary.boxing.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryUnboxingInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryUnboxingInspection.java index 717242777a3b..349feb5fb4ef 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryUnboxingInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryUnboxingInspection.java @@ -92,17 +92,11 @@ public class UnnecessaryUnboxingInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.unboxing.remove.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) { final PsiMethodCallExpression methodCall = (PsiMethodCallExpression)descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/BigDecimalEqualsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/BigDecimalEqualsInspection.java index 3b3b82ec2dec..ed36d6f24f99 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/BigDecimalEqualsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/BigDecimalEqualsInspection.java @@ -48,15 +48,10 @@ public class BigDecimalEqualsInspection extends BaseInspection { } private static class BigDecimalEqualsFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("big.decimal.equals.replace.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("big.decimal.equals.replace.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/CharUsedInArithmeticContextInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/CharUsedInArithmeticContextInspection.java index ab90e0d4a512..4dbc6336773d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/CharUsedInArithmeticContextInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/CharUsedInArithmeticContextInspection.java @@ -79,15 +79,10 @@ public class CharUsedInArithmeticContextInspection extends BaseInspection { } private static class CharUsedInArithmeticContentFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("char.used.in.arithmetic.context.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ComparisonToNaNInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ComparisonToNaNInspection.java index db4e97425837..31803457a003 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ComparisonToNaNInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ComparisonToNaNInspection.java @@ -62,15 +62,10 @@ public class ComparisonToNaNInspection extends BaseInspection { } private static class ComparisonToNaNFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("comparison.to.nan.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConfusingFloatingPointLiteralInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConfusingFloatingPointLiteralInspection.java index 1b32eb6ea865..1fdb8913a2c2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConfusingFloatingPointLiteralInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConfusingFloatingPointLiteralInspection.java @@ -76,12 +76,6 @@ public class ConfusingFloatingPointLiteralInspection extends BaseInspection { @Override @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("confusing.floating.point.literal.change.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConstantMathCallInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConstantMathCallInspection.java index 34befc99b31d..2483658b9a3f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConstantMathCallInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConstantMathCallInspection.java @@ -84,15 +84,10 @@ public class ConstantMathCallInspection extends BaseInspection { } private static class MakeStrictFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConvertOctalLiteralToDecimalFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConvertOctalLiteralToDecimalFix.java index ed3bb690a7ff..94456e1751f8 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConvertOctalLiteralToDecimalFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/ConvertOctalLiteralToDecimalFix.java @@ -27,15 +27,9 @@ import org.jetbrains.annotations.NotNull; class ConvertOctalLiteralToDecimalFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("convert.octal.literal.to.decimal.literal.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/LongLiteralsEndingWithLowercaseLInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/LongLiteralsEndingWithLowercaseLInspection.java index 80dab237ea7f..92a7e80442cb 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/LongLiteralsEndingWithLowercaseLInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/LongLiteralsEndingWithLowercaseLInspection.java @@ -65,15 +65,10 @@ public class LongLiteralsEndingWithLowercaseLInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "long.literals.ending.with.lowercase.l.replace.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override public void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/NonReproducibleMathCallInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/NonReproducibleMathCallInspection.java index cb340cabfb9e..464cb5da12e6 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/NonReproducibleMathCallInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/NonReproducibleMathCallInspection.java @@ -78,15 +78,10 @@ public class NonReproducibleMathCallInspection extends BaseInspection { } private static class MakeStrictFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "non.reproducible.math.call.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java index 0ab3178bd90f..3c6c4f8dbf7b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java @@ -166,15 +166,10 @@ public class PointlessArithmeticExpressionInspection } private class PointlessArithmeticFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/RemoveLeadingZeroFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/RemoveLeadingZeroFix.java index 91d78fb2559e..de772949bc7c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/RemoveLeadingZeroFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/RemoveLeadingZeroFix.java @@ -28,16 +28,10 @@ class RemoveLeadingZeroFix extends InspectionGadgetsFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("remove.leading.zero.to.make.decimal.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override protected void doFix(Project project, ProblemDescriptor descriptor) { final PsiLiteralExpression literal = (PsiLiteralExpression)descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/SuspiciousLiteralUnderscoreInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/SuspiciousLiteralUnderscoreInspection.java index ce00828c0a62..28f390c8e8ea 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/SuspiciousLiteralUnderscoreInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/SuspiciousLiteralUnderscoreInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -95,6 +95,10 @@ public class SuspiciousLiteralUnderscoreInspection extends BaseInspection { return; } } + if (digit == 0) { + // literal ends with underscore (which does not compile) + return; + } if (dot ? digit > 3 : digit != 3) { registerErrorAtOffset(expression, length - digit, digit); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnaryPlusInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnaryPlusInspection.java index 30f2a55254cb..38ef9846fa07 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnaryPlusInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnaryPlusInspection.java @@ -75,18 +75,11 @@ public class UnaryPlusInspection extends BaseInspection { private static class UnaryPlusFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("unary.plus.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("unary.plus.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java index a807194388c0..88ccc5a311a2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryExplicitNumericCastInspection.java @@ -73,15 +73,10 @@ public class UnnecessaryExplicitNumericCastInspection extends BaseInspection { } private static class UnnecessaryExplicitNumericCastFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @NotNull @Override - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("unnecessary.explicit.numeric.cast.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryUnaryMinusInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryUnaryMinusInspection.java index ce8a735c9662..b2ebdc383220 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryUnaryMinusInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/UnnecessaryUnaryMinusInspection.java @@ -51,15 +51,10 @@ public class UnnecessaryUnaryMinusInspection extends BaseInspection { private static class UnnecessaryUnaryMinusFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("unnecessary.unary.minus.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("unnecessary.unary.minus.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BooleanConstructorInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BooleanConstructorInspection.java index 882496df4484..d732ffca8582 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BooleanConstructorInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BooleanConstructorInspection.java @@ -72,14 +72,8 @@ public class BooleanConstructorInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("boolean.constructor.simplify.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("boolean.constructor.simplify.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BoxingBoxedValueInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BoxingBoxedValueInspection.java index a458c18ecc83..bd1d4e5df1b2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BoxingBoxedValueInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/BoxingBoxedValueInspection.java @@ -78,17 +78,11 @@ public class BoxingBoxedValueInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "boxing.boxed.value.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ConstantStringInternInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ConstantStringInternInspection.java index affd3944aeaa..30d7b583648b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ConstantStringInternInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ConstantStringInternInspection.java @@ -60,15 +60,10 @@ public class ConstantStringInternInspection extends BaseInspection { } private static class ConstantStringInternFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.string.intern.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/InstantiatingObjectToGetClassObjectInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/InstantiatingObjectToGetClassObjectInspection.java index 20d294066050..e71b65be8c7c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/InstantiatingObjectToGetClassObjectInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/InstantiatingObjectToGetClassObjectInspection.java @@ -60,17 +60,11 @@ public class InstantiatingObjectToGetClassObjectInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "instantiating.object.to.get.class.object.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java index 19e8afb264ff..ef5988e6242b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/KeySetIterationMayUseEntrySetInspection.java @@ -62,15 +62,10 @@ public class KeySetIterationMayUseEntrySetInspection extends BaseInspection { } private static class KeySetIterationMapUseEntrySetFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("key.set.iteration.may.use.entry.set.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringInIndexOfInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringInIndexOfInspection.java index 13324bd8aad0..e186ec7bf59e 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringInIndexOfInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringInIndexOfInspection.java @@ -68,15 +68,10 @@ public class LengthOneStringInIndexOfInspection private static class ReplaceStringsWithCharsFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "length.one.strings.in.concatenation.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringsInConcatenationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringsInConcatenationInspection.java index b3a0052002a1..611d696cca2d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringsInConcatenationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/LengthOneStringsInConcatenationInspection.java @@ -66,17 +66,11 @@ public class LengthOneStringsInConcatenationInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "length.one.strings.in.concatenation.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayCopyInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayCopyInspection.java index eec4d3f37c44..42e142489523 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayCopyInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayCopyInspection.java @@ -73,15 +73,10 @@ public class ManualArrayCopyInspection extends BaseInspection { this.decrement = decrement; } - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("manual.array.copy.replace.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("manual.array.copy.replace.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java index 8921621c0d89..23e1a408d785 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java @@ -119,17 +119,11 @@ public class ManualArrayToCollectionCopyInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "manual.array.to.collection.copy.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { @@ -243,8 +237,12 @@ public class ManualArrayToCollectionCopyInspection extends BaseInspection { final String arrayText = arrayExpression.getText(); final PsiExpression indexExpression = arrayAccessExpression.getIndexExpression(); + final String indexOffset = getIndexOffset(indexExpression, variable); + if (indexOffset == null) { + return null; + } final String fromOffsetText = - buildFromOffsetText(indexExpression, variable); + addIndexOffset(variable.getInitializer(), indexOffset, false); if (fromOffsetText == null) { return null; } @@ -257,9 +255,11 @@ public class ManualArrayToCollectionCopyInspection extends BaseInspection { else { limit = condition.getLOperand(); } - @NonNls final String toOffsetText = - buildToOffsetText(limit, tokenType == JavaTokenType.LE || - tokenType == JavaTokenType.GE); + + final String toOffsetText = + addIndexOffset(limit, indexOffset, + tokenType == JavaTokenType.LE || + tokenType == JavaTokenType.GE); if (toOffsetText == null) { return null; } @@ -326,28 +326,27 @@ public class ManualArrayToCollectionCopyInspection extends BaseInspection { } @Nullable - private static String buildFromOffsetText(PsiExpression expression, - PsiLocalVariable variable) - throws IncorrectOperationException { + private static String getIndexOffset(PsiExpression expression, + PsiLocalVariable variable) { expression = ParenthesesUtils.stripParentheses(expression); if (expression == null) { return null; } + if (ExpressionUtils.isZero(expression)) { + return "0"; + } final String expressionText = expression.getText(); final String variableName = variable.getName(); if (expressionText.equals(variableName)) { - final PsiExpression initialValue = variable.getInitializer(); - if (initialValue == null) { - return null; - } - return initialValue.getText(); + return "0"; } if (expression instanceof PsiBinaryExpression) { - final PsiBinaryExpression binaryExpression = + PsiBinaryExpression binaryExpression = (PsiBinaryExpression)expression; final PsiExpression lhs = binaryExpression.getLOperand(); final PsiExpression rhs = binaryExpression.getROperand(); - final String rhsText = buildFromOffsetText(rhs, variable); + + final String rhsText = getIndexOffset(rhs, variable); final PsiJavaToken sign = binaryExpression.getOperationSign(); final IElementType tokenType = sign.getTokenType(); if (ExpressionUtils.isZero(lhs)) { @@ -356,64 +355,112 @@ public class ManualArrayToCollectionCopyInspection extends BaseInspection { } return rhsText; } - final String lhsText = buildFromOffsetText(lhs, variable); + final String lhsText = getIndexOffset(lhs, variable); if (ExpressionUtils.isZero(rhs)) { return lhsText; } - return collapseConstant(lhsText + sign.getText() + rhsText, + return collapseConstant(lhsText + " " + sign.getText() + " " + rhsText, variable); } - return collapseConstant(expression.getText(), variable); + return collapseConstant(expressionText, variable); } - private static String buildToOffsetText(PsiExpression expression, - boolean plusOne) { - expression = ParenthesesUtils.stripParentheses(expression); + private static String addIndexOffset(PsiExpression expression, + String indexOffset, + boolean plusOne) { if (expression == null) { return null; } - if (!plusOne) { - return expression.getText(); + if (plusOne) { + indexOffset = collapseConstant("(" + indexOffset + ") + 1", expression); } + final String expressionText = expression.getText(); + if ("0".equals(indexOffset)) { + return expressionText; + } + if (expression instanceof PsiBinaryExpression) { final PsiBinaryExpression binaryExpression = (PsiBinaryExpression)expression; final IElementType tokenType = binaryExpression.getOperationTokenType(); + final PsiExpression lhs = binaryExpression.getLOperand(); + final PsiExpression rhs = binaryExpression.getROperand(); + + if (tokenType == JavaTokenType.PLUS) { + Object rhConstant = ExpressionUtils.computeConstantExpression(rhs); + if (rhConstant != null) { + final String rhText = collapseConstant( + rhConstant + " + (" + indexOffset + ")", expression); + if ("0".equals(rhText)) { + return lhs.getText(); + } + return lhs.getText() + getAddendum(rhText, expression); + } + } + if (tokenType == JavaTokenType.MINUS) { - final PsiExpression rhs = - binaryExpression.getROperand(); - if (ExpressionUtils.isOne(rhs)) { - return binaryExpression.getLOperand().getText(); + Object rhConstant = ExpressionUtils.computeConstantExpression(rhs); + if (rhConstant != null) { + final String rhText = collapseConstant( + "(" + indexOffset + ") - " + rhConstant, expression); + if ("0".equals(rhText)) { + return lhs.getText(); + } + return lhs.getText() + getAddendum(rhText, expression); + } + } + + if (rhs != null && + (tokenType == JavaTokenType.PLUS || + tokenType == JavaTokenType.MINUS)) { + Object lhConstant = ExpressionUtils.computeConstantExpression(lhs); + if (lhConstant != null) { + String lhText = collapseConstant( + lhConstant + " + (" + indexOffset + ")", expression); + if ("0".equals(lhText)) { + return tokenType == JavaTokenType.MINUS ? "-" + rhs.getText() : rhs.getText(); + } + return lhText + (tokenType == JavaTokenType.MINUS ? " - " : " + ") + rhs.getText(); } } } + + final String addendum = getAddendum(indexOffset, expression); final int precedence = ParenthesesUtils.getPrecedence(expression); - if (precedence > ParenthesesUtils.ADDITIVE_PRECEDENCE) { - return '(' + expression.getText() + ")+1"; - } - else { - return expression.getText() + "+1"; + final String text = precedence > ParenthesesUtils.ADDITIVE_PRECEDENCE + ? '(' + expressionText + ")" + addendum + : expressionText + addendum; + return collapseConstant(text, expression); + } + + private static String getAddendum(String expressionText, PsiElement context) { + if (expressionText.startsWith("-")) { + final String negatedExpressionText = expressionText.substring(1); + final Object lhConstant = computeConstant(negatedExpressionText, context); + if (lhConstant != null) { + return " - " + lhConstant.toString(); + } + return " + (" + expressionText + ")"; } + return " + " + expressionText; } private static String collapseConstant(String expressionText, PsiElement context) throws IncorrectOperationException { + final Object fromOffsetConstant = computeConstant(expressionText, context); + return fromOffsetConstant != null ? fromOffsetConstant.toString() : expressionText; + } + + private static Object computeConstant(String expressionText, + PsiElement context) { final Project project = context.getProject(); final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project); final PsiElementFactory factory = psiFacade.getElementFactory(); final PsiExpression fromOffsetExpression = factory.createExpressionFromText(expressionText, context); - final Object fromOffsetConstant = - ExpressionUtils.computeConstantExpression( - fromOffsetExpression); - if (fromOffsetConstant != null) { - return fromOffsetConstant.toString(); - } - else { - return expressionText; - } + return ExpressionUtils.computeConstantExpression(fromOffsetExpression); } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RandomDoubleForRandomIntegerInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RandomDoubleForRandomIntegerInspection.java index 8f5c30f59f04..5bdcf0392e22 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RandomDoubleForRandomIntegerInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RandomDoubleForRandomIntegerInspection.java @@ -63,17 +63,11 @@ public class RandomDoubleForRandomIntegerInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "random.double.for.random.integer.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java index 27c20f49f857..b73de0d927df 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java @@ -56,15 +56,10 @@ public class RedundantStringFormatCallInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "redundant.string.format.call.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override protected void doFix(Project project, ProblemDescriptor descriptor) { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringBufferToStringInConcatenationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringBufferToStringInConcatenationInspection.java index 3fd3b803ff39..12dcdf6e79ef 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringBufferToStringInConcatenationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringBufferToStringInConcatenationInspection.java @@ -56,15 +56,10 @@ public class StringBufferToStringInConcatenationInspection } private static class StringBufferToStringFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "string.buffer.to.string.in.concatenation.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringConcatenationInsideStringBufferAppendInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringConcatenationInsideStringBufferAppendInspection.java index 4c14757e881d..115c4947b65a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringConcatenationInsideStringBufferAppendInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringConcatenationInsideStringBufferAppendInspection.java @@ -64,15 +64,10 @@ public class StringConcatenationInsideStringBufferAppendInspection extends BaseI } private static class ReplaceWithChainedAppendFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "string.concatenation.inside.string.buffer.append.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringToStringInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringToStringInspection.java index 4556e1bee5b7..e3aaac1e5909 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringToStringInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/StringToStringInspection.java @@ -67,17 +67,11 @@ public class StringToStringInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/SubstringZeroInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/SubstringZeroInspection.java index 1d380634ebde..dfc25a797742 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/SubstringZeroInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/SubstringZeroInspection.java @@ -63,17 +63,11 @@ public class SubstringZeroInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "constant.conditional.expression.simplify.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java index c62628c774a6..0bdcde162261 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java @@ -71,17 +71,11 @@ public class TailRecursionInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "tail.recursion.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/redundancy/UnusedLabelInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/redundancy/UnusedLabelInspection.java index dcf0ba8d9b26..dd0ce0536f0d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/redundancy/UnusedLabelInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/redundancy/UnusedLabelInspection.java @@ -56,15 +56,10 @@ public class UnusedLabelInspection extends BaseInspection { } private static class UnusedLabelFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unused.label.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/AutoCloseableResourceInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/AutoCloseableResourceInspectionBase.java index a054d3cc1fdf..d1ed806227bc 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/AutoCloseableResourceInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/AutoCloseableResourceInspectionBase.java @@ -93,18 +93,11 @@ public class AutoCloseableResourceInspectionBase extends ResourceInspection { private class AutoCloseableResourceFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("auto.closeable.resource.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("auto.closeable.resource.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java index a9b44ac6cf47..a7fc27416c49 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java @@ -77,15 +77,10 @@ public class NonSerializableWithSerialVersionUIDFieldInspection extends BaseInsp } private static class RemoveSerialVersionUIDFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "non.serializable.with.serialversionuid.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/SerialVersionUIDNotStaticFinalInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/SerialVersionUIDNotStaticFinalInspection.java index 8edd14680b8a..404bafa1fcb3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/SerialVersionUIDNotStaticFinalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/SerialVersionUIDNotStaticFinalInspection.java @@ -62,15 +62,10 @@ public class SerialVersionUIDNotStaticFinalInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "serialversionuid.private.static.final.long.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override protected void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/TransientFieldInNonSerializableClassInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/TransientFieldInNonSerializableClassInspection.java index 6ed5a8281974..1af20dac5f04 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/TransientFieldInNonSerializableClassInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/TransientFieldInNonSerializableClassInspection.java @@ -56,15 +56,10 @@ public class TransientFieldInNonSerializableClassInspection private static class TransientFieldInNonSerializableClassFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "transient.field.in.non.serializable.class.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CStyleArrayDeclarationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CStyleArrayDeclarationInspection.java index fca66288aaef..4fcd7d8f31ff 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CStyleArrayDeclarationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CStyleArrayDeclarationInspection.java @@ -68,15 +68,10 @@ public class CStyleArrayDeclarationInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "c.style.array.declaration.replace.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override public void doFix(Project project, ProblemDescriptor descriptor) { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CallToStringConcatCanBeReplacedByOperatorInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CallToStringConcatCanBeReplacedByOperatorInspection.java index d82b02079616..f4ba8fe3c2b2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CallToStringConcatCanBeReplacedByOperatorInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/CallToStringConcatCanBeReplacedByOperatorInspection.java @@ -64,14 +64,8 @@ public class CallToStringConcatCanBeReplacedByOperatorInspection @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("call.to.string.concat.can.be.replaced.by.operator.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("call.to.string.concat.can.be.replaced.by.operator.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnLHSOfComparisonInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnLHSOfComparisonInspection.java index 5ea4718d1ded..1c4ff00ccd22 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnLHSOfComparisonInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnLHSOfComparisonInspection.java @@ -64,14 +64,8 @@ public class ConstantOnLHSOfComparisonInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("flip.comparison.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("flip.comparison.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnRHSOfComparisonInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnRHSOfComparisonInspection.java index fce3be449c00..61c07f3f64fa 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnRHSOfComparisonInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ConstantOnRHSOfComparisonInspection.java @@ -61,15 +61,10 @@ public class ConstantOnRHSOfComparisonInspection extends BaseInspection { } private static class SwapComparisonFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("flip.comparison.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/EqualsCalledOnEnumConstantInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/EqualsCalledOnEnumConstantInspection.java index 69ed8777cc2a..f11175d02b79 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/EqualsCalledOnEnumConstantInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/EqualsCalledOnEnumConstantInspection.java @@ -56,15 +56,10 @@ public class EqualsCalledOnEnumConstantInspection extends BaseInspection { } private static class EqualsCalledOnEnumValueFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("equals.called.on.enum.constant.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ExtendsObjectInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ExtendsObjectInspection.java index a87a6c84e2e8..f27227509646 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ExtendsObjectInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ExtendsObjectInspection.java @@ -57,15 +57,10 @@ public class ExtendsObjectInspection extends BaseInspection { } private static class ExtendsObjectFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "extends.object.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java index 03008aa0eb5d..2681f6f7d555 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java @@ -66,17 +66,11 @@ public class ImplicitCallToSuperInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "implicit.call.to.super.make.explicit.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement methodName = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java index 7bab0bdb9c32..9aa25183678c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/ListIndexOfReplaceableByContainsInspection.java @@ -74,11 +74,6 @@ public class ListIndexOfReplaceableByContainsInspection private static class IndexOfReplaceableByContainsFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override protected void doFix(Project project, ProblemDescriptor descriptor) @@ -108,7 +103,7 @@ public class ListIndexOfReplaceableByContainsInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "replace.indexof.with.contains.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/LiteralAsArgToStringEqualsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/LiteralAsArgToStringEqualsInspection.java index 94e9e6efbb87..91f9bfc43b4f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/LiteralAsArgToStringEqualsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/LiteralAsArgToStringEqualsInspection.java @@ -60,15 +60,10 @@ public class LiteralAsArgToStringEqualsInspection } private static class SwapEqualsFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "literal.as.arg.to.string.equals.flip.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/MissortedModifiersInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/MissortedModifiersInspection.java index f4c45799b570..f23b08fbba4f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/MissortedModifiersInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/MissortedModifiersInspection.java @@ -72,15 +72,10 @@ public class MissortedModifiersInspection extends BaseInspection implements Clea } private static class SortModifiersFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "missorted.modifiers.sort.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantFieldInitializationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantFieldInitializationInspection.java index c1ebb4f96b63..9e2a0e932c03 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantFieldInitializationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantFieldInitializationInspection.java @@ -66,14 +66,8 @@ public class RedundantFieldInitializationInspection extends BaseInspection imple @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("redundant.field.initialization.remove.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("redundant.field.initialization.remove.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantImplementsInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantImplementsInspection.java index 2020cff3a108..5fa1ac49db23 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantImplementsInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/RedundantImplementsInspection.java @@ -73,15 +73,10 @@ public class RedundantImplementsInspection extends BaseInspection implements Cle } private static class RedundantImplementsFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "redundant.implements.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java index f50a01d40f8e..fc3b253e3281 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SimplifiableAnnotationInspection.java @@ -65,16 +65,10 @@ public class SimplifiableAnnotationInspection extends BaseInspection implements public SimplifiableAnnotationFix() {} - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("simplifiable.annotation.quickfix"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("simplifiable.annotation.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SizeReplaceableByIsEmptyInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SizeReplaceableByIsEmptyInspectionBase.java index 5d7de8cb8da1..dcbc09a96100 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SizeReplaceableByIsEmptyInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/SizeReplaceableByIsEmptyInspectionBase.java @@ -60,15 +60,10 @@ public class SizeReplaceableByIsEmptyInspectionBase extends BaseInspection { protected static class SizeReplaceableByIsEmptyFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("size.replaceable.by.isempty.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/TypeParameterExtendsObjectInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/TypeParameterExtendsObjectInspection.java index b80a74a62902..45e9043b71c1 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/TypeParameterExtendsObjectInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/TypeParameterExtendsObjectInspection.java @@ -70,17 +70,11 @@ public class TypeParameterExtendsObjectInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "extends.object.remove.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(@NotNull Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnclearBinaryExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnclearBinaryExpressionInspection.java index a9a074aa668d..318c8f076d79 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnclearBinaryExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnclearBinaryExpressionInspection.java @@ -59,15 +59,10 @@ public class UnclearBinaryExpressionInspection extends BaseInspection { } private static class UnclearBinaryExpressionFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @NotNull @Override - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("unclear.binary.expression.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedInnerClassAccessInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedInnerClassAccessInspection.java index f760c1460306..e0e52e2e79f2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedInnerClassAccessInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedInnerClassAccessInspection.java @@ -70,15 +70,10 @@ public class UnnecessarilyQualifiedInnerClassAccessInspection extends BaseInspec private static class UnnecessarilyQualifiedInnerClassAccessFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessarily.qualified.inner.class.access.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticUsageInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticUsageInspection.java index 0eb7869de33e..8e671f1048d2 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticUsageInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticUsageInspection.java @@ -90,14 +90,8 @@ public class UnnecessarilyQualifiedStaticUsageInspection extends BaseInspection @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("unnecessary.qualifier.for.this.remove.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("unnecessary.qualifier.for.this.remove.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticallyImportedElementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticallyImportedElementInspection.java index 34e96c17d1f4..8202e3d4030d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticallyImportedElementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarilyQualifiedStaticallyImportedElementInspection.java @@ -55,14 +55,9 @@ public class UnnecessarilyQualifiedStaticallyImportedElementInspection extends B @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("unnecessarily.qualified.statically.imported.element.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override protected void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryBlockStatementInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryBlockStatementInspection.java index 85e8be01c4de..6ed27fe4ced9 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryBlockStatementInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryBlockStatementInspection.java @@ -75,17 +75,11 @@ public class UnnecessaryBlockStatementInspection extends BaseInspection implemen @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.code.block.unwrap.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement leftBrace = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryConstructorInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryConstructorInspection.java index 0d25ae472bda..87354fceb80d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryConstructorInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryConstructorInspection.java @@ -76,17 +76,11 @@ public class UnnecessaryConstructorInspection extends BaseInspection { extends InspectionGadgetsFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.constructor.remove.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryParenthesesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryParenthesesInspection.java index d9c69901e528..4bdc6f7238cd 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryParenthesesInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryParenthesesInspection.java @@ -69,15 +69,10 @@ public class UnnecessaryParenthesesInspection extends BaseInspection implements private class UnnecessaryParenthesesFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("unnecessary.parentheses.remove.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("unnecessary.parentheses.remove.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryQualifierForThisInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryQualifierForThisInspection.java index 34f6e9f6ac26..b0b02c798717 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryQualifierForThisInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryQualifierForThisInspection.java @@ -61,17 +61,11 @@ public class UnnecessaryQualifierForThisInspection extends BaseInspection implem @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.qualifier.for.this.remove.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement qualifier = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java index 60826bc3a4f5..0a056fe8272f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySemicolonInspection.java @@ -63,15 +63,10 @@ public class UnnecessarySemicolonInspection extends BaseInspection implements Cl } private static class UnnecessarySemicolonFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.semicolon.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperConstructorInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperConstructorInspection.java index 38d8bca7d3b1..97a3d8c34ee5 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperConstructorInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperConstructorInspection.java @@ -56,15 +56,10 @@ public class UnnecessarySuperConstructorInspection extends BaseInspection implem private static class UnnecessarySuperConstructorFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unnecessary.super.constructor.remove.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperQualifierInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperQualifierInspection.java index 10d4b639242d..856f1eaeeeb6 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperQualifierInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessarySuperQualifierInspection.java @@ -59,11 +59,6 @@ public class UnnecessarySuperQualifierInspection extends BaseInspection implemen @Override @NotNull public String getFamilyName() { - return getName(); - } - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message( "unnecessary.super.qualifier.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryThisInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryThisInspection.java index 8ca514b0cc09..d12933c8099b 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryThisInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryThisInspection.java @@ -69,14 +69,8 @@ public class UnnecessaryThisInspection extends BaseInspection implements Cleanup @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("unnecessary.this.remove.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("unnecessary.this.remove.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ConditionSignalInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ConditionSignalInspection.java index ea3e947ee795..706b15be810e 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ConditionSignalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ConditionSignalInspection.java @@ -63,17 +63,11 @@ public class ConditionSignalInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "condition.signal.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/MethodMayBeSynchronizedInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/MethodMayBeSynchronizedInspection.java index 191782a60d4b..c64cf7df780c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/MethodMayBeSynchronizedInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/MethodMayBeSynchronizedInspection.java @@ -59,17 +59,11 @@ public class MethodMayBeSynchronizedInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "method.may.be.synchronized.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override protected void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement identifier = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ObjectNotifyInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ObjectNotifyInspection.java index 5101f704eaec..2521e1ad3074 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ObjectNotifyInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ObjectNotifyInspection.java @@ -59,15 +59,10 @@ public class ObjectNotifyInspection extends BaseInspection { } private static class ObjectNotifyFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "object.notify.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java index 6c916b7e2a78..72d1d94cc107 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java @@ -82,15 +82,10 @@ public class SynchronizedMethodInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "synchronized.method.move.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override public void doFix(Project project, ProblemDescriptor descriptor) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ThreadRunInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ThreadRunInspection.java index 54dda1479554..9f03fa9179f7 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ThreadRunInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/ThreadRunInspection.java @@ -58,17 +58,11 @@ public class ThreadRunInspection extends BaseInspection { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "thread.run.replace.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(@NotNull Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousFieldAccessInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousFieldAccessInspection.java index 92b804874342..8b218a8d6883 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousFieldAccessInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousFieldAccessInspection.java @@ -65,14 +65,8 @@ public class AmbiguousFieldAccessInspection extends BaseInspection { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("ambiguous.field.access.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("ambiguous.field.access.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousMethodCallInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousMethodCallInspection.java index 3956c39f9178..1bff3ad40ba3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousMethodCallInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/AmbiguousMethodCallInspection.java @@ -52,15 +52,10 @@ public class AmbiguousMethodCallInspection extends BaseInspection { private static class AmbiguousMethodCallFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("ambiguous.method.call.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("ambiguous.method.call.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionBase.java index 77b63125eeec..c42154f455d0 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2016 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -77,11 +77,8 @@ public class LocalVariableHidingMemberVariableInspectionBase extends BaseInspect @Override public void visitLocalVariable(@NotNull PsiLocalVariable variable) { super.visitLocalVariable(variable); - if (m_ignoreStaticMethods) { - final PsiMember member = PsiTreeUtil.getParentOfType(variable, PsiMethod.class, PsiClassInitializer.class); - if (member != null && member.hasModifierProperty(PsiModifier.STATIC)) { - return; - } + if (m_ignoreStaticMethods && isContainedInStaticMethod(variable)) { + return; } final PsiClass aClass = checkFieldNames(variable); if (aClass == null) { @@ -97,11 +94,8 @@ public class LocalVariableHidingMemberVariableInspectionBase extends BaseInspect if (!(declarationScope instanceof PsiCatchSection) && !(declarationScope instanceof PsiForeachStatement)) { return; } - if (m_ignoreStaticMethods) { - final PsiMember member = PsiTreeUtil.getParentOfType(variable, PsiMethod.class, PsiClassInitializer.class); - if (member != null && member.hasModifierProperty(PsiModifier.STATIC)) { - return; - } + if (m_ignoreStaticMethods && isContainedInStaticMethod(variable)) { + return; } final PsiClass aClass = checkFieldNames(variable); if (aClass == null) { @@ -128,9 +122,22 @@ public class LocalVariableHidingMemberVariableInspectionBase extends BaseInspect return aClass; } } + if (m_ignoreStaticMethods) { + if (aClass.hasModifierProperty(PsiModifier.STATIC) || isContainedInStaticMethod(aClass)) { + return null; + } + } aClass = ClassUtils.getContainingClass(aClass); } return null; } + + private boolean isContainedInStaticMethod(PsiElement element) { + final PsiMember member = PsiTreeUtil.getParentOfType(element, PsiMethod.class, PsiClassInitializer.class, PsiClass.class); + if (member instanceof PsiClass) { + return false; + } + return member != null && member.hasModifierProperty(PsiModifier.STATIC); + } } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/StaticMethodOnlyUsedInOneClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/StaticMethodOnlyUsedInOneClassInspection.java index 8c688de04f62..5672aee28be2 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/StaticMethodOnlyUsedInOneClassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/StaticMethodOnlyUsedInOneClassInspection.java @@ -49,15 +49,10 @@ public class StaticMethodOnlyUsedInOneClassInspection extends StaticMethodOnlyUs this.usageClass = pointerManager.createSmartPsiElementPointer(usageClass); } - @Override - @NotNull - public String getName() { - return InspectionGadgetsBundle.message("static.method.only.used.in.one.class.quickfix"); - } @Override @NotNull public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("static.method.only.used.in.one.class.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/AssertionCanBeIfInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/AssertionCanBeIfInspection.java index 3d717a3eecb1..5c3e46886258 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/AssertionCanBeIfInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/AssertionCanBeIfInspection.java @@ -80,18 +80,11 @@ public class AssertionCanBeIfInspection extends BaseInspection { } private static class AssertToIfFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("assert.can.be.if.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("assert.can.be.if.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/IfCanBeAssertionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/IfCanBeAssertionInspection.java index fb52ea8e5a5f..062fa1cbc62e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/IfCanBeAssertionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/asserttoif/IfCanBeAssertionInspection.java @@ -128,18 +128,11 @@ public class IfCanBeAssertionInspection extends BaseInspection { } private static class IfToAssertionFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("if.can.be.assertion.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("if.can.be.assertion.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/ProtectedMemberInFinalClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/ProtectedMemberInFinalClassInspection.java index 99ab95b7cfe0..3e139596f0ab 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/ProtectedMemberInFinalClassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/ProtectedMemberInFinalClassInspection.java @@ -56,15 +56,10 @@ public class ProtectedMemberInFinalClassInspection extends ProtectedMemberInFina } private static class MakePrivateFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("make.private.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java index 29371f74c999..27c62c6cca8a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/PublicConstructorInspection.java @@ -46,16 +46,10 @@ public class PublicConstructorInspection extends PublicConstructorInspectionBase private static class ReplaceConstructorWithFactoryMethodFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("public.constructor.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("public.constructor.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/UtilityClassWithoutPrivateConstructorInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/UtilityClassWithoutPrivateConstructorInspection.java index dc356f99189c..9ea4c78ce4db 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/UtilityClassWithoutPrivateConstructorInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/UtilityClassWithoutPrivateConstructorInspection.java @@ -75,14 +75,8 @@ public class UtilityClassWithoutPrivateConstructorInspection extends UtilityClas @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("utility.class.without.private.constructor.create.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("utility.class.without.private.constructor.create.quickfix"); } @Override @@ -119,15 +113,10 @@ public class UtilityClassWithoutPrivateConstructorInspection extends UtilityClas } private static class MakeConstructorPrivateFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("utility.class.without.private.constructor.make.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/dataflow/ReuseOfLocalVariableInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/dataflow/ReuseOfLocalVariableInspection.java index 024c0df3f577..fca27bf22a5b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/dataflow/ReuseOfLocalVariableInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/dataflow/ReuseOfLocalVariableInspection.java @@ -47,17 +47,11 @@ public class ReuseOfLocalVariableInspection @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "reuse.of.local.variable.split.quickfix"); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/TooBroadCatchInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/TooBroadCatchInspection.java index 20c6ac5d5ab8..0df45cd4a217 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/TooBroadCatchInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/TooBroadCatchInspection.java @@ -70,16 +70,10 @@ public class TooBroadCatchInspection extends TooBroadCatchInspectionBase { } private static class ReplaceWithRuntimeExceptionFix extends InspectionGadgetsFix { - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("replace.with.catch.clause.for.runtime.exception.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("replace.with.catch.clause.for.runtime.exception.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UnnecessaryInitCauseInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UnnecessaryInitCauseInspection.java index 445adde99fb7..7b48522f50f2 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UnnecessaryInitCauseInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UnnecessaryInitCauseInspection.java @@ -41,18 +41,11 @@ public class UnnecessaryInitCauseInspection extends UnnecessaryInitCauseInspecti private static class UnnecessaryInitCauseFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("unnecessary.initcause.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("unnecessary.initcause.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/MultiCatchCanBeSplitInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/MultiCatchCanBeSplitInspection.java index a2407caa469f..4902441abe7a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/MultiCatchCanBeSplitInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/MultiCatchCanBeSplitInspection.java @@ -119,18 +119,11 @@ public class MultiCatchCanBeSplitInspection extends BaseInspection { } private static class SplitMultiCatchFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("multi.catch.can.be.split.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("multi.catch.can.be.split.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/TryStatementWithMultipleResourcesInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/TryStatementWithMultipleResourcesInspection.java index 1f6c41871dc3..d4cb5f697f14 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/TryStatementWithMultipleResourcesInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/exceptions/TryStatementWithMultipleResourcesInspection.java @@ -132,18 +132,11 @@ public class TryStatementWithMultipleResourcesInspection extends BaseInspection doFixImpl(descriptor.getPsiElement()); } - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("try.statement.with.multiple.resources.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("try.statement.with.multiple.resources.quickfix"); } } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractMethodFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractMethodFix.java index 683a24a105b8..edf38d065008 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractMethodFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractMethodFix.java @@ -31,14 +31,8 @@ public class ExtractMethodFix extends InspectionGadgetsFix { @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("extract.method.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("extract.method.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineCallFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineCallFix.java index 25b9e37946a0..8a63ae41d4fe 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineCallFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineCallFix.java @@ -44,12 +44,6 @@ public class InlineCallFix extends InspectionGadgetsFix { return myName; } - @Override - @NotNull - public String getName() { - return getFamilyName(); - } - @Override public void doFix(final Project project, ProblemDescriptor descriptor) { final PsiElement nameElement = descriptor.getPsiElement(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineVariableFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineVariableFix.java index 85d9c475d234..50e78f69a83b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineVariableFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/InlineVariableFix.java @@ -29,15 +29,10 @@ import java.util.ArrayList; import java.util.Collection; public class InlineVariableFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("inline.variable.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/IntroduceConstantFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/IntroduceConstantFix.java index 2950bd0d2357..42564cfd86b5 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/IntroduceConstantFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/IntroduceConstantFix.java @@ -27,15 +27,10 @@ import com.siyeh.ig.InspectionGadgetsFix; import org.jetbrains.annotations.NotNull; public class IntroduceConstantFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("introduce.constant.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/MoveClassFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/MoveClassFix.java index 0c5f84c66111..454cf5bc30b8 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/MoveClassFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/MoveClassFix.java @@ -28,15 +28,10 @@ import com.siyeh.ig.InspectionGadgetsFix; import org.jetbrains.annotations.NotNull; public class MoveClassFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("move.class.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ReplaceInheritanceWithDelegationFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ReplaceInheritanceWithDelegationFix.java index 46bc798bc0fb..bb7f800d511b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ReplaceInheritanceWithDelegationFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ReplaceInheritanceWithDelegationFix.java @@ -32,15 +32,10 @@ public class ReplaceInheritanceWithDelegationFix extends InspectionGadgetsFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "replace.inheritance.with.delegation.quickfix"); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override public void doFix(@NotNull final Project project, ProblemDescriptor descriptor) { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/SuppressForTestsScopeFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/SuppressForTestsScopeFix.java index 4ac9872585d2..fda4126917fe 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/SuppressForTestsScopeFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/SuppressForTestsScopeFix.java @@ -55,16 +55,10 @@ public class SuppressForTestsScopeFix extends InspectionGadgetsFix { return new SuppressForTestsScopeFix(inspection); } - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("suppress.for.tests.scope.quickfix"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("suppress.for.tests.scope.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java index a7ab62321b3e..4a32b70fe9ea 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java @@ -61,13 +61,6 @@ public class RefusedBequestInspection extends RefusedBequestInspectionBase { private static class RefusedBequestFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return "Insert call to super method"; - } - @Nls @NotNull @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/NonThreadSafeLazyInitializationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/NonThreadSafeLazyInitializationInspection.java index 8ed17c4ef829..6b8feef2e0b6 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/NonThreadSafeLazyInitializationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/NonThreadSafeLazyInitializationInspection.java @@ -200,14 +200,8 @@ public class NonThreadSafeLazyInitializationInspection extends NonThreadSafeLazy @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("introduce.holder.class.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("introduce.holder.class.quickfix"); } } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/MissingPackageInfoInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/MissingPackageInfoInspection.java index 2c498c207913..171738e02dec 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/MissingPackageInfoInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/MissingPackageInfoInspection.java @@ -50,16 +50,10 @@ public class MissingPackageInfoInspection extends MissingPackageInfoInspectionBa @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new InspectionGadgetsFix() { - @NotNull - @Override - public String getName() { - return "Create 'package-info.java'"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Create 'package-info.java'"; } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java index 4263d8663dc3..d9c271ec47fd 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java @@ -55,14 +55,8 @@ public class PackageDotHtmlMayBePackageInfoInspection extends PackageDotHtmlMayB @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.delete.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.delete.quickfix"); } @Override @@ -93,15 +87,10 @@ public class PackageDotHtmlMayBePackageInfoInspection extends PackageDotHtmlMayB public PackageDotHtmlMayBePackageInfoFix(String aPackage) { this.aPackage = aPackage; } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.convert.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/maturity/SuppressionAnnotationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/maturity/SuppressionAnnotationInspection.java index 347ea8484558..2a42fa12610a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/maturity/SuppressionAnnotationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/maturity/SuppressionAnnotationInspection.java @@ -71,12 +71,6 @@ public class SuppressionAnnotationInspection extends SuppressionAnnotationInspec } } - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/EnumerationCanBeIterationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/EnumerationCanBeIterationInspection.java index 4f50ea15851c..47145804926c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/EnumerationCanBeIterationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/EnumerationCanBeIterationInspection.java @@ -46,15 +46,10 @@ public class EnumerationCanBeIterationInspection extends EnumerationCanBeIterati private static class EnumerationCanBeIterationFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "enumeration.can.be.iteration.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java index a9a7e68143bf..bd2764b7bcd1 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java @@ -58,12 +58,6 @@ public class ForCanBeForeachInspection extends ForCanBeForeachInspectionBase { @Override @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("foreach.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/WhileCanBeForeachInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/WhileCanBeForeachInspection.java index 71474bc1c241..938c464637e9 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/WhileCanBeForeachInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/WhileCanBeForeachInspection.java @@ -39,15 +39,10 @@ public class WhileCanBeForeachInspection extends WhileCanBeForeachInspectionBase } private static class WhileCanBeForeachFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message("foreach.replace.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/MethodNameSameAsClassNameInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/MethodNameSameAsClassNameInspection.java index f165d88808ad..7383afe17bd4 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/MethodNameSameAsClassNameInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/MethodNameSameAsClassNameInspection.java @@ -48,14 +48,8 @@ public class MethodNameSameAsClassNameInspection extends MethodNameSameAsClassNa @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("make.method.ctr.quickfix"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("make.method.ctr.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/DynamicRegexReplaceableByCompiledPatternInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/DynamicRegexReplaceableByCompiledPatternInspection.java index 63b9ccdd7312..f6d38a0a16c6 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/DynamicRegexReplaceableByCompiledPatternInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/DynamicRegexReplaceableByCompiledPatternInspection.java @@ -33,15 +33,10 @@ public class DynamicRegexReplaceableByCompiledPatternInspection extends DynamicR } private static class DynamicRegexReplaceableByCompiledPatternFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "dynamic.regex.replaceable.by.compiled.pattern.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java index 62dcd5a7f003..a409f40347b2 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java @@ -38,15 +38,9 @@ public class ToArrayCallWithZeroLengthArrayArgumentInspection extends ToArrayCal private static class ToArrayCallWithZeroLengthArrayArgumentFix extends InspectionGadgetsFix { - @NotNull @Override + @NotNull public String getFamilyName() { - return getName(); - } - - @Override - @NotNull - public String getName() { return InspectionGadgetsBundle.message("to.array.call.with.zero.length.array.argument.quickfix"); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java index f632d2774774..893a33e8fb3b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ExternalizableWithoutPublicNoArgConstructorInspection.java @@ -50,14 +50,8 @@ public class ExternalizableWithoutPublicNoArgConstructorInspection extends Exter @Override @NotNull - public String getName() { - return InspectionGadgetsBundle.message("make.constructor.public"); - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("make.constructor.public"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/DiamondCanBeReplacedWithExplicitTypeArgumentsInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/DiamondCanBeReplacedWithExplicitTypeArgumentsInspection.java index 50e9cf0fb4f2..83387044f0e6 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/DiamondCanBeReplacedWithExplicitTypeArgumentsInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/DiamondCanBeReplacedWithExplicitTypeArgumentsInspection.java @@ -77,18 +77,11 @@ public class DiamondCanBeReplacedWithExplicitTypeArgumentsInspection extends Bas } private static class DiamondTypeFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("diamond.can.be.replaced.with.explicit.type.arguments.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("diamond.can.be.replaced.with.explicit.type.arguments.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaBodyCanBeCodeBlockInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaBodyCanBeCodeBlockInspection.java index f94f94c511cc..4f997e711c22 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaBodyCanBeCodeBlockInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaBodyCanBeCodeBlockInspection.java @@ -77,18 +77,11 @@ public class LambdaBodyCanBeCodeBlockInspection extends BaseInspection { } } - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("lambda.body.can.be.code.block.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("lambda.body.can.be.code.block.quickfix"); } } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaCanBeReplacedWithAnonymousInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaCanBeReplacedWithAnonymousInspection.java index decc3bfb1950..d10512d26278 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaCanBeReplacedWithAnonymousInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/LambdaCanBeReplacedWithAnonymousInspection.java @@ -236,18 +236,11 @@ public class LambdaCanBeReplacedWithAnonymousInspection extends BaseInspection { } private static class LambdaToAnonymousFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("lambda.can.be.replaced.with.anonymous.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("lambda.can.be.replaced.with.anonymous.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/MethodRefCanBeReplacedWithLambdaInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/MethodRefCanBeReplacedWithLambdaInspection.java index 38cab055b6fe..bb34d5cb9e9b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/MethodRefCanBeReplacedWithLambdaInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/MethodRefCanBeReplacedWithLambdaInspection.java @@ -104,18 +104,11 @@ public class MethodRefCanBeReplacedWithLambdaInspection extends BaseInspection { } private static class MethodRefToLambdaFix extends InspectionGadgetsFix { - @Nls - @NotNull - @Override - public String getName() { - return InspectionGadgetsBundle.message("method.ref.can.be.replaced.with.lambda.quickfix"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return InspectionGadgetsBundle.message("method.ref.can.be.replaced.with.lambda.quickfix"); } @Override diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnqualifiedInnerClassAccessInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnqualifiedInnerClassAccessInspection.java index eb153c7b9147..38b002d89553 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnqualifiedInnerClassAccessInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/UnqualifiedInnerClassAccessInspection.java @@ -46,15 +46,10 @@ public class UnqualifiedInnerClassAccessInspection extends UnqualifiedInnerClass } private static class UnqualifiedInnerClassAccessFix extends InspectionGadgetsFix { - @Override - @NotNull - public String getFamilyName() { - return getName(); - } @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionGadgetsBundle.message( "unqualified.inner.class.access.quickfix"); } diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/EqualsReplaceableByObjectsCall.html b/plugins/InspectionGadgets/src/inspectionDescriptions/EqualsReplaceableByObjectsCall.html index 5a55c5b308f7..80c33db1a5d0 100644 --- a/plugins/InspectionGadgets/src/inspectionDescriptions/EqualsReplaceableByObjectsCall.html +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/EqualsReplaceableByObjectsCall.html @@ -9,6 +9,6 @@ For example: still makes sense, but slightly changes the semantics. For the cases where only equivalent replacement is needed, there's the check box Report only null safe 'equals' calls to enforce that.

- This inspection only applies to projects and modules configured to use the language level of 7 or higher. + This inspection only applies to projects and modules configured to use a language level of 7 or higher. \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/LocalVariableHidingMemberVariable.html b/plugins/InspectionGadgets/src/inspectionDescriptions/LocalVariableHidingMemberVariable.html index feb6e0e9cab0..8760aa9b839d 100644 --- a/plugins/InspectionGadgets/src/inspectionDescriptions/LocalVariableHidingMemberVariable.html +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/LocalVariableHidingMemberVariable.html @@ -5,6 +5,10 @@ or surrounding classes if it is a local variable inside of an inner or anonymous Such a variable name may be confusing.

- +Use the first checkbox below to ignore local variables hiding a super class field which is not visible. +

+Use the second checkbox below to ignore local variables in a static context. +For example when the local variable is inside a static method +or inside a method which is inside an inner class which is static. \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.after.java new file mode 100644 index 000000000000..bd4d1d11287e --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.after.java @@ -0,0 +1,10 @@ +import java.util.Objects; + +class T { + static class A { + static String a; + } + static boolean same(String s) { + return Objects.equals(A.a, s); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.java new file mode 100644 index 000000000000..d428b7436327 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.java @@ -0,0 +1,8 @@ +class T { + static class A { + static String a; + } + static boolean same(String s) { + return A.a != null && A.a.equals(s); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.after.java new file mode 100644 index 000000000000..fbe7ed1be7de --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.after.java @@ -0,0 +1,10 @@ +import java.util.Objects; + +class T { + static class A { + static String a; + } + static boolean dfferent(String s) { + return !Objects.equals(A.a, s); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.java new file mode 100644 index 000000000000..fe486012d98d --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.java @@ -0,0 +1,8 @@ +class T { + static class A { + static String a; + } + static boolean dfferent(String s) { + return A.a != s && (A.a == null || !A.a.equals(s)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.after.java new file mode 100644 index 000000000000..1de123f54eab --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int a, int b) { + t.addAll(Arrays.asList(f).subList(a, b)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.java new file mode 100644 index 000000000000..19978a495229 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int a, int b) { + for (int i = a; i < b; i++) { + t.add(f[i]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.after.java new file mode 100644 index 000000000000..0b3aca0d143e --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int n, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(n / 2, args.length - n)); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.java new file mode 100644 index 000000000000..bceff5fb2cc8 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int n, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = n/2; i < args.length - n; ++i) { + values.add(args[i]); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.after.java new file mode 100644 index 000000000000..c9ac84eab0a2 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(2, args.length + 1)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.java new file mode 100644 index 000000000000..a9afb62fd885 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = 1; i <= args.length - 1; ++i) { + values.add(args[((i) - (-1))]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.after.java new file mode 100644 index 000000000000..268b1e8d2652 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(a, args.length - b + 2)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.java new file mode 100644 index 000000000000..ec252d8a9a59 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = a - 1; i <= args.length - b; ++i) { + values.add(args[i + 1]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.after.java new file mode 100644 index 000000000000..42eb60e25378 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(0, args.length - 4)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.java new file mode 100644 index 000000000000..7158605d64f9 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = 2; i < args.length - 2; ++i) { + values.add(args[i - 2]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.after.java new file mode 100644 index 000000000000..756889008702 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(a + 1, 4 - b)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.java new file mode 100644 index 000000000000..8ffa3edf98c5 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = a; i <= 2 - b; ++i) { + values.add(args[i + 1]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.after.java new file mode 100644 index 000000000000..4dbef2c1222f --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + t.addAll(Arrays.asList(f).subList(0, n * 2 + 1)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.java new file mode 100644 index 000000000000..cfc0f48fb62d --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + for (int i = -1; i < n * 2; i++) { + t.add(f[i+1]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.after.java new file mode 100644 index 000000000000..5aec54f00a64 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + t.addAll(Arrays.asList(f).subList(2, n * 2 + 2)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.java new file mode 100644 index 000000000000..6da92e5835d5 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + for (int i = 1; i <= n * 2; i++) { + t.add(f[i+1]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.after.java new file mode 100644 index 000000000000..d55606c441f2 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int n, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(n + 0 - n, args.length + n + 0 - n)); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.java new file mode 100644 index 000000000000..675e717454ec --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int n, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = n; i < args.length + n; ++i) { + values.add(args[i - n]); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.after.java new file mode 100644 index 000000000000..34c8215531c7 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + Collections.addAll(values, args); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.java new file mode 100644 index 000000000000..794378e068ee --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = 1; i <= args.length; ++i) { + values.add(args[i - 1]); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.after.java new file mode 100644 index 000000000000..f1c5926a8aab --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(a, b - 1)); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.java new file mode 100644 index 000000000000..e37b250a52c6 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = a + 1; i <= b - 1; ++i) { + values.add(args[i - 1]); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.after.java new file mode 100644 index 000000000000..34c8215531c7 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + Collections.addAll(values, args); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.java new file mode 100644 index 000000000000..d337b5cdb695 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = 2; i <= args.length + 1; ++i) { + values.add(args[i - 2]); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.after.java new file mode 100644 index 000000000000..bd877f9d6802 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.after.java @@ -0,0 +1,11 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + values.addAll(Arrays.asList(args).subList(a + 1, b)); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.java new file mode 100644 index 000000000000..7b29047a6646 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.java @@ -0,0 +1,13 @@ +import java.util.*; + +class Vector { + private final List values; + + public Vector(int a, int b, Number... args) { + values = new ArrayList<>(args.length + 1); + values.add(null); + for (int i = a + 2; i < 1 + b; ++i) { + values.add(args[i - 1]); + } + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.after.java new file mode 100644 index 000000000000..ec356616023b --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + t.addAll(Arrays.asList(f).subList(0, (n >> 1) + 1)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.java new file mode 100644 index 000000000000..148b72baaccf --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + for (int i = -1; i < n >> 1; i++) { + t.add(f[i+1]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.after.java new file mode 100644 index 000000000000..c6ef812ccb97 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + t.addAll(Arrays.asList(f).subList(0, (n >> 1) + 2)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.java new file mode 100644 index 000000000000..6dba9aa74a15 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + for (int i = -1; i <= n >> 1; i++) { + t.add(f[i+1]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.after.java new file mode 100644 index 000000000000..b57022681a81 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f) { + Collections.addAll(t, f); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.java new file mode 100644 index 000000000000..23271d98865d --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f) { + for (int i = 0; i < f.length; i++) { + t.add(f[i]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.after.java new file mode 100644 index 000000000000..b57022681a81 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f) { + Collections.addAll(t, f); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.java new file mode 100644 index 000000000000..5de07431925f --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f) { + for (String s : f) { + t.add(s); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.after.java new file mode 100644 index 000000000000..309a8e5ff8fa --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f) { + t.addAll(Arrays.asList(f).subList(2, f.length)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.java new file mode 100644 index 000000000000..d1b32480a598 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.java @@ -0,0 +1,10 @@ +import java.util.*; + +class T { + void f(Set t, String[] f) { + for (int i = 2; i < f.length; i++) { + String v = f[i]; + t.add(v); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.after.java new file mode 100644 index 000000000000..25e751a33d79 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + t.addAll(Arrays.asList(f).subList(1, -n + 3)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.java new file mode 100644 index 000000000000..da9a70be15f0 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + for (int i = -2; i < -n; i++) { + t.add(f[i+3]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.after.java new file mode 100644 index 000000000000..e62a752f26ff --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n, int k) { + t.addAll(Arrays.asList(f).subList(0 + 0 + -k, n + k + 0 + -k)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.java new file mode 100644 index 000000000000..187fdd935205 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n, int k) { + for (int i = 0; i < n + k; i++) { + t.add(f[i + -k]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.after.java new file mode 100644 index 000000000000..a3b3a4b14932 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.after.java @@ -0,0 +1,7 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + t.addAll(Arrays.asList(f).subList(1, -n + 4)); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.java new file mode 100644 index 000000000000..f0b5bfaa57ea --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.java @@ -0,0 +1,9 @@ +import java.util.*; + +class T { + void f(Set t, String[] f, int n) { + for (int i = -2; i <= -n; i++) { + t.add(f[i+3]); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java index 91f4f15b5320..6496a70b88e8 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCall.java @@ -49,4 +49,23 @@ class EqualsReplaceableByObjectsCall { return t != this && (t == null || !t.equals(this)); } } + + static class A { + static String b; + static class B { + static String c; + } + } + static boolean ab1(String s) { + return A.b.equals(s); + } + static boolean ab2(String s) { + return A.b != null && A.b.equals(s); + } + static boolean ab3(String s) { + return A.b == s || A.b != null && A.b.equals(s); + } + static boolean abc(String s) { + return A.B.c == s || A.B.c != null && A.B.c.equals(s); + } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java index 294169a942a3..f5f035af4a38 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/migration/equals_replaceable_by_objects_call/EqualsReplaceableByObjectsCallCheckNull.java @@ -49,4 +49,23 @@ class EqualsReplaceableByObjectsCall { return t != this && (t == null || !t.equals(this)); } } + + static class A { + static String b; + static class B { + static String c; + } + } + static boolean ab1(String s) { + return A.b.equals(s); + } + static boolean ab2(String s) { + return A.b != null && A.b.equals(s); + } + static boolean ab3(String s) { + return A.b == s || A.b != null && A.b.equals(s); + } + static boolean abc(String s) { + return A.B.c == s || A.B.c != null && A.B.c.equals(s); + } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/suspicious_literal_underscore/SuspiciousLiteralUnderscore.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/suspicious_literal_underscore/SuspiciousLiteralUnderscore.java index 55201d2a1b98..757da7defc50 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/suspicious_literal_underscore/SuspiciousLiteralUnderscore.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/numeric/suspicious_literal_underscore/SuspiciousLiteralUnderscore.java @@ -8,6 +8,7 @@ class SuspiciousLiteralUnderscore {{ int i = 1_000_00; int j = 1_000_0000; long k = 1_000_000L; + int l = 100_; double g = 12_34d; double h = 1.123_4567e3; diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable.java index 3012423ac2f1..e8fccdc356db 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable.java @@ -53,3 +53,55 @@ public class LocalVariableHidingMemberVariable extends DifferentPackageClass for (String m_barangus : list) {} } } +class Outer { + String field; + + void localHidesField() { + // "Local variable hides field" was designed to detect this + String field = "hello"; + System.out.println(field); + } + class Inner { + void innerLocalHidesOuterField() { + // "Local variable hides field" was designed to detect this + String field = "hello"; + System.out.println(field); + } + } + + static void localHidesOuterField() { + // "Ignore local variables in static methods" option toggles this warning + String field = "hello"; + System.out.println(field); + } + + static class InnerStatic { + void staticInnerLocalHidesOuterField() { + // Invalid warning, because inner class can't access instance method, even if it wanted to. + String field = "hello"; + System.out.println(field); + } + } + static void staticInnerLocalHidesOuterField() { + new Runnable() { + @Override public void run() { + // Invalid warning, because inner class can't access instance method, even if it wanted to. + String field = "hello"; + System.out.println(field); + } + }.run(); + } + + static void exceptionToTheRule(final Outer outer) { + // Of course there's an exception to "can't access instance method, even if it wanted to." + new Runnable() { + @Override public void run() { + // Invalid warning, because inner class has to go trough the passed-in named parameter. + // There's no name shadowing issue in this case, because of forced object access. + String field = "hello"; + System.out.println(field); + System.out.println(outer.field); + } + }.run(); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable2.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable2.java new file mode 100644 index 000000000000..2de497cb533a --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable2.java @@ -0,0 +1,52 @@ +class Outer { + String field; + + void localHidesField() { + // "Local variable hides field" was designed to detect this + String field = "hello"; + System.out.println(field); + } + class Inner { + void innerLocalHidesOuterField() { + // "Local variable hides field" was designed to detect this + String field = "hello"; + System.out.println(field); + } + } + + static void localHidesOuterField() { + // "Ignore local variables in static methods" option toggles this warning + String field = "hello"; + System.out.println(field); + } + + static class InnerStatic { + void staticInnerLocalHidesOuterField() { + // Invalid warning, because inner class can't access instance method, even if it wanted to. + String field = "hello"; + System.out.println(field); + } + } + static void staticInnerLocalHidesOuterField() { + new Runnable() { + @Override public void run() { + // Invalid warning, because inner class can't access instance method, even if it wanted to. + String field = "hello"; + System.out.println(field); + } + }.run(); + } + + static void exceptionToTheRule(final Outer outer) { + // Of course there's an exception to "can't access instance method, even if it wanted to." + new Runnable() { + @Override public void run() { + // Invalid warning, because inner class has to go trough the passed-in named parameter. + // There's no name shadowing issue in this case, because of forced object access. + String field = "hello"; + System.out.println(field); + System.out.println(outer.field); + } + }.run(); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/EqualsReplaceableByObjectsCallFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/EqualsReplaceableByObjectsCallFixTest.java index 9a4afb0acd87..83fb59dad662 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/EqualsReplaceableByObjectsCallFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/EqualsReplaceableByObjectsCallFixTest.java @@ -48,6 +48,9 @@ public class EqualsReplaceableByObjectsCallFixTest extends IGQuickFixesTestCase public void testQualifiedThisNotEqual() { doTest(); } public void testQualifiedSuperEqual() { doTest(); } + public void testStaticField() { doTest(); } + public void testStaticField2() { doTest(); } + @Override protected void tuneFixture(JavaModuleFixtureBuilder builder) throws Exception { builder.addJdk(IdeaTestUtil.getMockJdk18Path().getPath()) diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/ManualArrayToCollectionCopyFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/ManualArrayToCollectionCopyFixTest.java new file mode 100644 index 000000000000..5f9a15c63ec3 --- /dev/null +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/ManualArrayToCollectionCopyFixTest.java @@ -0,0 +1,63 @@ +/* + * Copyright 2000-2016 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.siyeh.ig.fixes.performance; + +import com.siyeh.InspectionGadgetsBundle; +import com.siyeh.ig.IGQuickFixesTestCase; +import com.siyeh.ig.performance.ManualArrayToCollectionCopyInspection; + +/** + * @author Pavel.Dolgov + */ +public class ManualArrayToCollectionCopyFixTest extends IGQuickFixesTestCase { + + @Override + protected void setUp() throws Exception { + super.setUp(); + myFixture.enableInspections(new ManualArrayToCollectionCopyInspection()); + myRelativePath = "performance/replace_with_add_all"; + myDefaultHint = InspectionGadgetsBundle.message("manual.array.to.collection.copy.replace.quickfix"); + } + + public void testSimpleFor() { doTest(); } + public void testSimpleForeach() { doTest(); } + public void testTempVarFor() { doTest(); } + + public void testPlusOne() { doTest(); } + public void testPlusTwo() { doTest(); } + + public void testMinusOne() { doTest(); } + public void testMinusTwo() { doTest(); } + + public void testMultiply() { doTest(); } + public void testMultiplyLE() { doTest(); } + + public void testShift() { doTest(); } + public void testShiftLE() { doTest(); } + + public void testUnary() { doTest(); } + public void testUnary2() { doTest(); } + public void testUnaryLE() { doTest(); } + + public void testForAtoB() { doTest(); } + public void testPlusOneAtoB() { doTest(); } + public void testPlusTwoAtoB() { doTest(); } + public void testMinusOneAtoB() { doTest(); } + public void testMinusTwoAtoB() { doTest(); } + + public void testPlusN() { doTest(); } + public void testMinusN() { doTest(); } +} diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionTest.java index 35a8f50e5f0b..24ed32149035 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/visibility/LocalVariableHidingMemberVariableInspectionTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -25,6 +25,13 @@ public class LocalVariableHidingMemberVariableInspectionTest extends LightInspec doTest(); } + public void testLocalVariableHidingMemberVariable2() { + final LocalVariableHidingMemberVariableInspection inspection = new LocalVariableHidingMemberVariableInspection(); + inspection.m_ignoreStaticMethods = false; + myFixture.enableInspections(inspection); + doTest(); + } + @Nullable @Override protected InspectionProfileEntry getInspection() { diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/PatternValidator.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/PatternValidator.java index 80836010e75d..0fbb6de4bb90 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/PatternValidator.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/PatternValidator.java @@ -286,16 +286,10 @@ public class PatternValidator extends LocalInspectionTool { public IntroduceVariableFix() {} - @Override - @NotNull - public String getName() { - return "Introduce variable"; - } - @Override @NotNull public String getFamilyName() { - return getName(); + return "Introduce variable"; } @Override diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/util/AnnotateFix.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/util/AnnotateFix.java index ed2cf4179ea0..f53e953d2887 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/util/AnnotateFix.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/util/AnnotateFix.java @@ -43,14 +43,9 @@ public class AnnotateFix implements LocalQuickFix { myArgList = argList; } - @NotNull - public String getName() { - return "Annotate with @" + StringUtil.getShortName(myAnnotationName); - } - @NotNull public String getFamilyName() { - return getName(); + return "Annotate with @" + StringUtil.getShortName(myAnnotationName); } public boolean canApply() { diff --git a/plugins/devkit/src/inspections/PluginXmlDomInspection.java b/plugins/devkit/src/inspections/PluginXmlDomInspection.java index 222318281eb0..1f78c0379fe9 100644 --- a/plugins/devkit/src/inspections/PluginXmlDomInspection.java +++ b/plugins/devkit/src/inspections/PluginXmlDomInspection.java @@ -324,18 +324,11 @@ public class PluginXmlDomInspection extends BasicDomElementsInspection tag"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Add tag"; } @Override diff --git a/plugins/devkit/src/inspections/quickfix/CreateConstructorFix.java b/plugins/devkit/src/inspections/quickfix/CreateConstructorFix.java index d0d53902c30f..e444f5c5a8fa 100644 --- a/plugins/devkit/src/inspections/quickfix/CreateConstructorFix.java +++ b/plugins/devkit/src/inspections/quickfix/CreateConstructorFix.java @@ -30,14 +30,9 @@ public class CreateConstructorFix extends BaseFix { super(createPointer(aClass), isOnTheFly); } - @NotNull - public String getName() { - return DevKitBundle.message("inspections.registration.problems.quickfix.create.constructor"); - } - @NotNull public String getFamilyName() { - return getName(); + return DevKitBundle.message("inspections.registration.problems.quickfix.create.constructor"); } protected void doFix(Project project, ProblemDescriptor descriptor, boolean external) throws IncorrectOperationException { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/inspections/SecondUnsafeCallQuickFix.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/inspections/SecondUnsafeCallQuickFix.java index 705f3ea1ef8c..a7bfa68af6f4 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/inspections/SecondUnsafeCallQuickFix.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/inspections/SecondUnsafeCallQuickFix.java @@ -31,12 +31,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrRefere */ public class SecondUnsafeCallQuickFix implements LocalQuickFix { - @Override - @NotNull - public String getName() { - return GroovyInspectionBundle.message("second.unsafe.call"); - } - @Override @NotNull public String getFamilyName() { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrPackageInspection.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrPackageInspection.java index 4463ab5edee2..2f72013d7091 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrPackageInspection.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrPackageInspection.java @@ -138,12 +138,6 @@ public class GrPackageInspection extends BaseInspection { myNewPackageName = newPackageName; } - @NotNull - @Override - public String getName() { - return GroovyBundle.message("fix.package.name"); - } - @Override @NotNull public String getFamilyName() { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrUnusedIncDecInspection.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrUnusedIncDecInspection.java index 0e595ac6bba4..45d63594dee2 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrUnusedIncDecInspection.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/confusing/GrUnusedIncDecInspection.java @@ -148,12 +148,6 @@ public class GrUnusedIncDecInspection extends BaseInspection { myMessage = GroovyInspectionBundle.message("remove.0", expression.getOperationToken().getText()); } - @NotNull - @Override - public String getName() { - return myMessage; - } - @NotNull @Override public String getFamilyName() { @@ -176,12 +170,6 @@ public class GrUnusedIncDecInspection extends BaseInspection { myMessage = GroovyInspectionBundle.message("replace.postfix.0.with.prefix.0", expression.getOperationToken().getText()); } - @NotNull - @Override - public String getName() { - return myMessage; - } - @NotNull @Override public String getFamilyName() { @@ -208,12 +196,6 @@ public class GrUnusedIncDecInspection extends BaseInspection { myMessage = GroovyInspectionBundle.message("replace.0.with.1", opToken, opToken.substring(0, 1)); } - @NotNull - @Override - public String getName() { - return myMessage; - } - @NotNull @Override public String getFamilyName() { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/style/GrUnnecessarySemicolonInspection.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/style/GrUnnecessarySemicolonInspection.java index c9018492bb44..4e0cd22042f7 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/style/GrUnnecessarySemicolonInspection.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/style/GrUnnecessarySemicolonInspection.java @@ -43,18 +43,11 @@ public class GrUnnecessarySemicolonInspection extends GroovySuppressableInspecti private static final LocalQuickFix FIX = new LocalQuickFix() { - @Nls - @NotNull - @Override - public String getName() { - return "Remove semicolon"; - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return "Remove semicolon"; } @Override diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java index f1366287218f..85d8faf5a5be 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/SuspiciousLocalesLanguagesInspection.java @@ -140,13 +140,6 @@ public class SuspiciousLocalesLanguagesInspection extends BaseLocalInspectionToo myResourceBundle = bundle; } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java index fdaa448cf92b..fa3c286464e4 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/duplicateStringLiteral/DuplicateStringLiteralInspection.java @@ -300,7 +300,7 @@ public class DuplicateStringLiteralInspection extends BaseLocalInspectionTool { @Override @NotNull - public String getName() { + public String getFamilyName() { return InspectionsBundle.message("introduce.constant.across.the.project"); } @@ -341,12 +341,6 @@ public class DuplicateStringLiteralInspection extends BaseLocalInspectionTool { handler.invoke(project, expressionArray); }); } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } private static class ReplaceFix extends LocalQuickFixAndIntentionActionOnPsiElement { diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java index 3a670f77ffca..01e66540a132 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java @@ -433,7 +433,7 @@ public class I18nInspection extends BaseLocalInspectionTool { return new LocalQuickFix() { @Override @NotNull - public String getName() { + public String getFamilyName() { return IntroduceConstantHandler.REFACTORING_NAME; } @@ -448,12 +448,6 @@ public class I18nInspection extends BaseLocalInspectionTool { new IntroduceConstantHandler().invoke(project, expressions); }, project.getDisposed()); } - - @Override - @NotNull - public String getFamilyName() { - return getName(); - } }; } diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java index ecff94af69c5..926999f376b0 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java @@ -58,16 +58,10 @@ public class I18nizeQuickFix implements LocalQuickFix, I18nQuickFixHandler { return false; } - @Override - @NotNull - public String getName() { - return CodeInsightBundle.message("inspection.i18n.quickfix"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return CodeInsightBundle.message("inspection.i18n.quickfix"); } @Override diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxUnusedImportsInspection.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxUnusedImportsInspection.java index a25db235d72e..7c1f91b3d678 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxUnusedImportsInspection.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/inspections/JavaFxUnusedImportsInspection.java @@ -93,11 +93,6 @@ public class JavaFxUnusedImportsInspection extends XmlSuppressableInspectionTool } private static class JavaFxOptimizeImportsFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return QuickFixBundle.message("optimize.imports.fix"); - } @Override @NotNull diff --git a/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java b/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java index 1a61f10b61e9..a5991e77efb4 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java @@ -87,7 +87,7 @@ public class TestClassFilter implements ClassFilter.ClassFilterWithScope { @Override public PsiClass compute() { if (JUnitUtil.isJUnit5(module != null ? GlobalSearchScope.moduleRuntimeScope(module, true) - : sourceScope.getGlobalSearchScope(), + : sourceScope.getLibrariesScope(), sourceScope.getProject())) { return null; } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestPackage.java b/plugins/junit/src/com/intellij/execution/junit/TestPackage.java index dea96fd8adde..d613568956bf 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestPackage.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestPackage.java @@ -63,7 +63,7 @@ public class TestPackage extends TestObject { protected void search() { myClasses.clear(); SourceScope sourceScope = getSourceScope(); - if (sourceScope != null && !ReadAction.compute(() -> JUnitUtil.isJUnit5(sourceScope.getGlobalSearchScope(), myProject))) { + if (sourceScope != null && !ReadAction.compute(() -> JUnitUtil.isJUnit5(sourceScope.getLibrariesScope(), myProject))) { try { final TestClassFilter classFilter = getClassFilter(data); LOG.assertTrue(classFilter.getBase() != null); diff --git a/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java b/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java index 98a8f3bd5c65..8bab77726491 100644 --- a/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java +++ b/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java @@ -16,17 +16,24 @@ package com.intellij.execution.junit; import com.intellij.execution.Location; +import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.actions.RunConfigurationProducer; import com.intellij.execution.junit2.PsiMemberParameterizedLocation; import com.intellij.execution.junit2.info.MethodLocation; import com.intellij.execution.testframework.JavaTestLocator; import com.intellij.execution.testframework.sm.runner.SMTestProxy; +import com.intellij.idea.IdeaTestApplication; +import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.testFramework.TestDataProvider; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; +import org.jetbrains.annotations.NonNls; @SuppressWarnings({"JUnitTestClassNamingConvention", "JUnitTestCaseWithNoTests"}) public class JUnitRerunFailedTestsTest extends LightCodeInsightFixtureTestCase { @@ -166,4 +173,27 @@ public class JUnitRerunFailedTestsTest extends LightCodeInsightFixtureTestCase PsiElement element = location.getPsiElement(); assertEquals(aClass, element); } -} + + public void testMultipleClassesInOneFile() throws Exception { + myFixture.configureByText("a.java", "public class Test1 {} public class Test2 {}"); + + final IdeaTestApplication testApplication = IdeaTestApplication.getInstance(); + try { + testApplication.setDataProvider(new TestDataProvider(myFixture.getProject()) { + @Override + public Object getData(@NonNls String dataId) { + if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { + return new VirtualFile[] {myFixture.getFile().getVirtualFile()}; + } + return super.getData(dataId); + } + }); + final PsiElement psiElement = myFixture.getFile().findElementAt(getEditor().getCaretModel().getOffset()); + final PatternConfigurationProducer configurationProducer = RunConfigurationProducer.getInstance(PatternConfigurationProducer.class); + assertFalse(configurationProducer.isMultipleElementsSelected(new ConfigurationContext(psiElement))); + } + finally { + testApplication.setDataProvider(null); + } + } +} \ No newline at end of file diff --git a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java index a2e705888e46..92e295bd355f 100644 --- a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java +++ b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java @@ -485,7 +485,7 @@ public class JUnitTreeByDescriptionHierarchyTest { final String startMessage = "##teamcity[enteredTheMatrix]\n\n" + "##teamcity[testFailed name='A.a' "; - assertEquals(startMessage, StringUtil.convertLineSeparators(output.substring(0, startMessage.length() + 1))); + assertEquals(startMessage, StringUtil.convertLineSeparators(output.toString()).substring(0, startMessage.length())); } @Test diff --git a/plugins/junit5_rt/src/com/intellij/junit5/JUnit5TestExecutionListener.java b/plugins/junit5_rt/src/com/intellij/junit5/JUnit5TestExecutionListener.java index bc58333a3951..574c9ce2ce22 100644 --- a/plugins/junit5_rt/src/com/intellij/junit5/JUnit5TestExecutionListener.java +++ b/plugins/junit5_rt/src/com/intellij/junit5/JUnit5TestExecutionListener.java @@ -148,10 +148,19 @@ public class JUnit5TestExecutionListener implements TestExecutionListener { messageName = MapSerializerUtil.TEST_IGNORED; } if (messageName != null && myFinishCount == 0) { - for (TestIdentifier childIdentifier : myTestPlan.getDescendants(testIdentifier)) { - testStarted(childIdentifier); - testFailure(childIdentifier, messageName, throwableOptional, 0, reason, true); - testFinished(childIdentifier, 0); + final Set descendants = myTestPlan.getDescendants(testIdentifier); + if (!descendants.isEmpty()) { + for (TestIdentifier childIdentifier : descendants) { + testStarted(childIdentifier); + testFailure(childIdentifier, messageName, throwableOptional, 0, reason, true); + testFinished(childIdentifier, 0); + } + } + else { + testStarted(testIdentifier); + testFailure(testIdentifier, messageName, throwableOptional, 0, reason, true); + testFinished(testIdentifier, 0); + myFinishCount++; } } myPrintStream.println("##teamcity[testSuiteFinished " + idAndName(testIdentifier, displayName) + "\']"); diff --git a/plugins/junit5_rt_tests/test/com/intellij/junit5/JUnit5EventsTest.java b/plugins/junit5_rt_tests/test/com/intellij/junit5/JUnit5EventsTest.java index ee2fc8e0f1f0..3a281ead15f6 100644 --- a/plugins/junit5_rt_tests/test/com/intellij/junit5/JUnit5EventsTest.java +++ b/plugins/junit5_rt_tests/test/com/intellij/junit5/JUnit5EventsTest.java @@ -15,29 +15,37 @@ */ package com.intellij.junit5; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; +import com.intellij.openapi.util.text.StringUtil; +import org.junit.jupiter.api.*; +import org.junit.jupiter.engine.descriptor.ClassTestDescriptor; import org.junit.jupiter.engine.descriptor.MethodTestDescriptor; +import org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor; import org.junit.platform.engine.TestDescriptor; import org.junit.platform.engine.TestExecutionResult; import org.junit.platform.engine.UniqueId; import org.junit.platform.launcher.TestIdentifier; +import org.junit.platform.launcher.TestPlan; import org.opentest4j.AssertionFailedError; import org.opentest4j.MultipleFailuresError; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; +import java.util.Collections; +import java.util.stream.Stream; class JUnit5EventsTest { - @Test - void multipleFailures() throws Exception { - StringBuffer buf = new StringBuffer(); - JUnit5TestExecutionListener executionListener = new JUnit5TestExecutionListener(new PrintStream(new OutputStream() { + private JUnit5TestExecutionListener myExecutionListener; + private StringBuffer myBuf; + + @BeforeEach + void setUp() { + myBuf = new StringBuffer(); + myExecutionListener = new JUnit5TestExecutionListener(new PrintStream(new OutputStream() { @Override public void write(int b) throws IOException { - buf.append(new String(new byte[]{(byte)b})); + myBuf.append(new String(new byte[]{(byte)b})); } })) { @Override @@ -50,14 +58,24 @@ class JUnit5EventsTest { return "TRACE"; } }; + } + + @AfterEach + void tearDown() { + myBuf = null; + } + + @Test + void multipleFailures() throws Exception { + TestDescriptor testDescriptor = new MethodTestDescriptor(UniqueId.forEngine("engine"), TestClass.class, TestClass.class.getDeclaredMethod("test1")); TestIdentifier identifier = TestIdentifier.from(testDescriptor); - executionListener.executionStarted(identifier); + myExecutionListener.executionStarted(identifier); MultipleFailuresError multipleFailuresError = new MultipleFailuresError("2 errors"); multipleFailuresError.addFailure(new AssertionFailedError("message1", "expected1", "actual1")); multipleFailuresError.addFailure(new AssertionFailedError("message2", "expected2", "actual2")); - executionListener.executionFinished(identifier, TestExecutionResult.failed(multipleFailuresError)); + myExecutionListener.executionFinished(identifier, TestExecutionResult.failed(multipleFailuresError)); Assertions.assertEquals("##teamcity[enteredTheMatrix]\n" + @@ -70,12 +88,40 @@ class JUnit5EventsTest { "\n" + "##teamcity[testFailed name='test1()' details='TRACE' id='|[engine:engine|]' message='2 errors (2 failures)|n\tmessage1|n\tmessage2']\n" + "\n" + - "##teamcity[testFinished id='[engine:engine]' name='test1()']\n", buf.toString()); + "##teamcity[testFinished id='[engine:engine]' name='test1()']\n", StringUtil.convertLineSeparators(myBuf.toString())); + } + + @Test + void containerFailure() throws Exception { + ClassTestDescriptor classTestDescriptor = new ClassTestDescriptor(UniqueId.forEngine("engine"), TestClass.class); + TestDescriptor testDescriptor = new TestFactoryTestDescriptor(UniqueId.forEngine("engine1"), TestClass.class, + TestClass.class.getDeclaredMethod("brokenStream")); + TestIdentifier identifier = TestIdentifier.from(testDescriptor); + final TestPlan testPlan = TestPlan.from(Collections.singleton(classTestDescriptor)); + myExecutionListener.sendTree(testPlan, ""); + myExecutionListener.executionStarted(identifier); + myExecutionListener.executionFinished(identifier, TestExecutionResult.failed(new IllegalStateException())); + + Assertions.assertEquals("##teamcity[enteredTheMatrix]\n" + + "##teamcity[treeEnded]\n" + + "##teamcity[testSuiteStarted id='[engine:engine1]' name='brokenStream()']\n" + + "\n" + + "##teamcity[testStarted id='[engine:engine1]' name='brokenStream()']\n" + + "\n" + + "##teamcity[testFailed name='brokenStream()' details='TRACE' id='|[engine:engine1|]' error='true' message='']\n" + + "\n" + + "##teamcity[testFinished id='[engine:engine1]' name='brokenStream()']\n" + + "##teamcity[testSuiteFinished id='[engine:engine1]' name='brokenStream()']\n", StringUtil.convertLineSeparators(myBuf.toString())); } private static class TestClass { @Test void test1() { } + + @TestFactory + Stream brokenStream() { + return Stream.generate(() -> { throw new IllegalStateException(); }); + } } } diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java index 9f236746edc8..4628f74a76c6 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java @@ -16,11 +16,10 @@ package com.intellij.junit4; import com.intellij.junit3.TestRunnerUtil; +import junit.framework.TestCase; import org.junit.Ignore; -import org.junit.internal.builders.AllDefaultPossibilitiesBuilder; -import org.junit.internal.builders.AnnotatedBuilder; -import org.junit.internal.builders.IgnoredBuilder; -import org.junit.internal.builders.JUnit4Builder; +import org.junit.Test; +import org.junit.internal.builders.*; import org.junit.internal.requests.ClassRequest; import org.junit.runner.Description; import org.junit.runner.Request; @@ -243,6 +242,12 @@ public class JUnit4TestRunnerUtil { final Class runnerClass = clazzAnnotation.value(); if (Parameterized.class.isAssignableFrom(runnerClass)) { try { + if (methodName != null) { + final Method method = clazz.getMethod(methodName, new Class[0]); + if (method != null && !method.isAnnotationPresent(Test.class) && TestCase.class.isAssignableFrom(clazz)) { + return Request.runner(createIgnoreAnnotationAndJUnit4ClassRunner(clazz)); + } + } Class.forName("org.junit.runners.BlockJUnit4ClassRunner"); //ignore for junit4.4 and < final Constructor runnerConstructor = runnerClass.getConstructor(new Class[]{Class.class}); return Request.runner((Runner)runnerConstructor.newInstance(new Object[] {clazz})).filterWith(new Filter() { @@ -280,6 +285,26 @@ public class JUnit4TestRunnerUtil { return null; } + private static Runner createIgnoreAnnotationAndJUnit4ClassRunner(Class clazz) throws Throwable { + return new AllDefaultPossibilitiesBuilder(true) { + protected AnnotatedBuilder annotatedBuilder() { + return new AnnotatedBuilder(this) { + public Runner runnerForClass(Class testClass) throws Exception { + return null; + } + }; + } + + protected JUnit4Builder junit4Builder() { + return new JUnit4Builder() { + public Runner runnerForClass(Class testClass) throws Throwable { + return null; + } + }; + } + }.runnerForClass(clazz); + } + private static Request createIgnoreIgnoredClassRequest(final Class clazz, final boolean recursively) throws ClassNotFoundException { Class.forName("org.junit.runners.BlockJUnit4ClassRunner"); //ignore IgnoreIgnored for junit4.4 and < return new ClassRequest(clazz) { diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/PropertiesInspectionSuppressor.java b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/PropertiesInspectionSuppressor.java index 7a3c60511e39..29069f581a24 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/PropertiesInspectionSuppressor.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/PropertiesInspectionSuppressor.java @@ -88,13 +88,6 @@ public class PropertiesInspectionSuppressor implements InspectionSuppressor { this.shortName = shortName; } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Override @NotNull public String getFamilyName() { @@ -140,12 +133,6 @@ public class PropertiesInspectionSuppressor implements InspectionSuppressor { private SuppressForFile(String shortName) { this.shortName = shortName; } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } @Override @NotNull diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/TrailingSpacesInPropertyInspection.java b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/TrailingSpacesInPropertyInspection.java index fe1c9e39473b..73cad8c40c1f 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/TrailingSpacesInPropertyInspection.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/TrailingSpacesInPropertyInspection.java @@ -119,14 +119,9 @@ public class TrailingSpacesInPropertyInspection extends PropertiesInspectionBase myIgnoreVisibleSpaces = ignoreVisibleSpaces; } - @NotNull - public String getName() { - return "Remove Trailing Spaces"; - } - @NotNull public String getFamilyName() { - return getName(); + return "Remove Trailing Spaces"; } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unsorted/AlphaUnsortedPropertiesFileInspection.java b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unsorted/AlphaUnsortedPropertiesFileInspection.java index 0e21a1cd9232..0ed86dfac63f 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unsorted/AlphaUnsortedPropertiesFileInspection.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unsorted/AlphaUnsortedPropertiesFileInspection.java @@ -95,13 +95,6 @@ public class AlphaUnsortedPropertiesFileInspection extends LocalInspectionTool { myFilesToSort = toSort; } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @NotNull @Override public String getFamilyName() { diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unused/UnusedPropertyInspection.java b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unused/UnusedPropertyInspection.java index f8bb3d992e31..7070817b7e37 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unused/UnusedPropertyInspection.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/codeInspection/unused/UnusedPropertyInspection.java @@ -206,13 +206,6 @@ public class UnusedPropertyInspection extends PropertiesInspectionBase implement myRepresentativePointer = SmartPointerManager.getInstance(property.getProject()).createSmartPsiElementPointer(property); } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/RemovePropertyLocalFix.java b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/RemovePropertyLocalFix.java index 8b5a583c5900..64f01245ab45 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/RemovePropertyLocalFix.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/RemovePropertyLocalFix.java @@ -33,7 +33,7 @@ public class RemovePropertyLocalFix implements LocalQuickFix { public static final RemovePropertyLocalFix INSTANCE = new RemovePropertyLocalFix(); @NotNull - public String getName() { + public String getFamilyName() { return PropertiesBundle.message("remove.property.quick.fix.name"); } @@ -48,9 +48,4 @@ public class RemovePropertyLocalFix implements LocalQuickFix { LOG.error(e); } } - - @NotNull - public String getFamilyName() { - return getName(); - } } diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/inspections/incomplete/IncompletePropertyInspection.java b/plugins/properties/src/com/intellij/lang/properties/editor/inspections/incomplete/IncompletePropertyInspection.java index b6080d33701a..a4db0894f308 100644 --- a/plugins/properties/src/com/intellij/lang/properties/editor/inspections/incomplete/IncompletePropertyInspection.java +++ b/plugins/properties/src/com/intellij/lang/properties/editor/inspections/incomplete/IncompletePropertyInspection.java @@ -105,13 +105,6 @@ public class IncompletePropertyInspection extends LocalInspectionTool implements myResourceBundle = bundle; } - @Nls - @NotNull - @Override - public String getName() { - return getFamilyName(); - } - @Nls @NotNull @Override diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java index 01397f147755..cad2daae6f8e 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalPanel.java @@ -69,6 +69,7 @@ public class JBTerminalPanel extends TerminalPanel implements FocusListener, Ter "ActivateStructureToolWindow", "ActivateHierarchyToolWindow", "ActivateVersionControlToolWindow", + "HideAllWindows", "ShowBookmarks", "GotoBookmark0", diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalSystemSettingsProvider.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalSystemSettingsProvider.java index d524d4f8cfe4..c1cb26720339 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalSystemSettingsProvider.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/JBTerminalSystemSettingsProvider.java @@ -326,7 +326,7 @@ public class JBTerminalSystemSettingsProvider extends DefaultTabbedSettingsProvi } @Override - public void setAttributes(TextAttributesKey key, TextAttributes attributes) { + public void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes) { myOwnAttributes.put(key, attributes); } diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java index f96e3468aa98..a4c6f5846b1e 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java @@ -164,13 +164,14 @@ public class LocalTerminalDirectRunner extends AbstractTerminalRunner command = Lists.newArrayList(shellPath.split(" ")); - String shellName = command.size() > 0 ? getShellName(command.get(0)) : null; + String shellCommand = command.get(0); + String shellName = command.size() > 0 ? getShellName(shellCommand) : null; if (shellName != null) { command.remove(0); - List result = Lists.newArrayList(shellName); + List result = Lists.newArrayList(shellCommand); String rcFilePath = findRCFile(shellName); diff --git a/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertAnnotationInspection.java b/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertAnnotationInspection.java index 0465c72ea664..03b8dc0352c2 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertAnnotationInspection.java +++ b/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertAnnotationInspection.java @@ -70,11 +70,6 @@ public class ConvertAnnotationInspection extends BaseJavaLocalInspectionTool { private static class ConvertAnnotationQuickFix implements LocalQuickFix { private static final Logger LOG = Logger.getInstance("#" + ConvertAnnotationQuickFix.class.getName()); - @NotNull - public String getName() { - return DISPLAY_NAME; - } - @NotNull public String getFamilyName() { return DISPLAY_NAME; diff --git a/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertJavadocInspection.java b/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertJavadocInspection.java index c732c5f0ba0d..838c27cec1e1 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertJavadocInspection.java +++ b/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertJavadocInspection.java @@ -75,11 +75,6 @@ public class ConvertJavadocInspection extends BaseJavaLocalInspectionTool { private static class ConvertJavadocQuickfix implements LocalQuickFix { private static final Logger LOG = Logger.getInstance("#" + ConvertJavadocQuickfix.class.getName()); - @NotNull - public String getName() { - return DISPLAY_NAME; - } - @NotNull public String getFamilyName() { return DISPLAY_NAME; diff --git a/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertOldAnnotationInspection.java b/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertOldAnnotationInspection.java index 9cdffbb0012a..10e7fe2a26b3 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertOldAnnotationInspection.java +++ b/plugins/testng/src/com/theoryinpractice/testng/inspection/ConvertOldAnnotationInspection.java @@ -77,14 +77,9 @@ public class ConvertOldAnnotationInspection extends BaseJavaLocalInspectionTool private static class ConvertOldAnnotationsQuickfix implements LocalQuickFix { private static final Logger LOG = Logger.getInstance("#" + ConvertOldAnnotationsQuickfix.class.getName()); - @NotNull - public String getName() { - return DISPLAY_NAME; - } - @NotNull public String getFamilyName() { - return getName(); + return DISPLAY_NAME; } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/plugins/testng/src/com/theoryinpractice/testng/inspection/JUnitConvertTool.java b/plugins/testng/src/com/theoryinpractice/testng/inspection/JUnitConvertTool.java index ee909e5b006f..7e20e3969def 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/inspection/JUnitConvertTool.java +++ b/plugins/testng/src/com/theoryinpractice/testng/inspection/JUnitConvertTool.java @@ -92,13 +92,8 @@ public class JUnitConvertTool extends BaseJavaLocalInspectionTool { public static class JUnitConverterQuickFix implements LocalQuickFix { @NotNull - public String getName() { - return QUICKFIX_NAME; - } - - @NotNull public String getFamilyName() { - return getName(); + return QUICKFIX_NAME; } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java b/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java index 0ce0a314753f..5c91b753f465 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java +++ b/plugins/testng/src/com/theoryinpractice/testng/inspection/UndeclaredTestInspection.java @@ -189,11 +189,6 @@ public class UndeclaredTestInspection extends BaseJavaLocalInspectionTool { } private static class CreateTestngFix implements LocalQuickFix { - @NotNull - public String getName() { - return getFamilyName(); - } - @NotNull public String getFamilyName() { return "Create suite"; diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/quickfix/DownloadResourceFix.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/quickfix/DownloadResourceFix.java index fb8452ff1821..fef83e127a57 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/quickfix/DownloadResourceFix.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/quickfix/DownloadResourceFix.java @@ -40,14 +40,8 @@ public class DownloadResourceFix implements LocalQuickFix { } @NotNull - public String getName() { - return "Download External Resource"; - } - - @NotNull - @Override public String getFamilyName() { - return getName(); + return "Download External Resource"; } @Override diff --git a/python/educational-python/student-python/src/com/jetbrains/edu/learning/PyStudyInterpreterInspection.java b/python/educational-python/student-python/src/com/jetbrains/edu/learning/PyStudyInterpreterInspection.java index 1622e5ea3ff3..5d8d2458c9db 100644 --- a/python/educational-python/student-python/src/com/jetbrains/edu/learning/PyStudyInterpreterInspection.java +++ b/python/educational-python/student-python/src/com/jetbrains/edu/learning/PyStudyInterpreterInspection.java @@ -106,11 +106,6 @@ public class PyStudyInterpreterInspection extends PyInspection { } private static class ConfigureInterpreterFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return "Configure Python Interpreter"; - } @NotNull @Override diff --git a/python/openapi/src/com/jetbrains/python/templateLanguages/ConfigureTemplateDirectoriesAction.java b/python/openapi/src/com/jetbrains/python/templateLanguages/ConfigureTemplateDirectoriesAction.java index e813bf0d740c..8d1cafb39877 100644 --- a/python/openapi/src/com/jetbrains/python/templateLanguages/ConfigureTemplateDirectoriesAction.java +++ b/python/openapi/src/com/jetbrains/python/templateLanguages/ConfigureTemplateDirectoriesAction.java @@ -26,16 +26,10 @@ import org.jetbrains.annotations.NotNull; * @author yole */ public class ConfigureTemplateDirectoriesAction implements LocalQuickFix, LowPriorityAction { - @NotNull - @Override - public String getName() { - return "Configure template directories"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Configure template directories"; } @Override diff --git a/python/psi-api/src/com/jetbrains/python/PyNames.java b/python/psi-api/src/com/jetbrains/python/PyNames.java index f3f787a39390..651e67039aeb 100644 --- a/python/psi-api/src/com/jetbrains/python/PyNames.java +++ b/python/psi-api/src/com/jetbrains/python/PyNames.java @@ -170,6 +170,7 @@ public class PyNames { public static final String AENTER = "__aenter__"; public static final String AEXIT = "__aexit__"; public static final String SIZEOF = "__sizeof__"; + public static final String INIT_SUBCLASS = "__init_subclass__"; public static final String NAME = "__name__"; public static final String ENTER = "__enter__"; @@ -434,7 +435,7 @@ public class PyNames { public static final ImmutableMap PY36_BUILTIN_METHODS = ImmutableMap.builder() .putAll(PY35_BUILTIN_METHODS) - .put("__init_subclass__", new BuiltinDescription("(cls, **kwargs)")) + .put(INIT_SUBCLASS, new BuiltinDescription("(cls, **kwargs)")) .put("__set_name__", new BuiltinDescription("(self, owner, name)")) .build(); diff --git a/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java b/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java index c60178052609..c97941077f4f 100644 --- a/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java +++ b/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java @@ -19,13 +19,13 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileSystemItem; import com.intellij.psi.util.QualifiedName; -import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.python.psi.*; import org.jetbrains.annotations.NotNull; @@ -160,17 +160,20 @@ public class ImportCandidateHolder implements Comparable return sb.toString(); } - public int compareTo(@NotNull ImportCandidateHolder rhs) { + public int compareTo(@NotNull ImportCandidateHolder other) { final int lRelevance = getRelevance(); - final int rRelevance = rhs.getRelevance(); + final int rRelevance = other.getRelevance(); if (rRelevance != lRelevance) { return rRelevance - lRelevance; } - // prefer shorter paths - if (myPath != null && rhs.myPath != null) { - return myPath.getComponentCount() - rhs.myPath.getComponentCount(); + if (myPath != null && other.myPath != null) { + // prefer shorter paths + final int lengthDiff = myPath.getComponentCount() - other.myPath.getComponentCount(); + if (lengthDiff != 0) { + return lengthDiff; + } } - return 0; + return Comparing.compare(myPath, other.myPath); } int getRelevance() { diff --git a/python/src/com/jetbrains/python/codeInsight/imports/OptimizeImportsQuickFix.java b/python/src/com/jetbrains/python/codeInsight/imports/OptimizeImportsQuickFix.java index a2767373861a..b687210ae7ea 100644 --- a/python/src/com/jetbrains/python/codeInsight/imports/OptimizeImportsQuickFix.java +++ b/python/src/com/jetbrains/python/codeInsight/imports/OptimizeImportsQuickFix.java @@ -33,10 +33,6 @@ import org.jetbrains.annotations.NotNull; * @author yole */ public class OptimizeImportsQuickFix implements LocalQuickFix, IntentionAction, HighPriorityAction { - @NotNull - public String getName() { - return "Optimize imports"; - } @NotNull @Override diff --git a/python/src/com/jetbrains/python/inspections/PyChainedComparisonsInspection.java b/python/src/com/jetbrains/python/inspections/PyChainedComparisonsInspection.java index ca1fef15947c..26e1412a4c66 100644 --- a/python/src/com/jetbrains/python/inspections/PyChainedComparisonsInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyChainedComparisonsInspection.java @@ -242,13 +242,6 @@ public class PyChainedComparisonsInspection extends PyInspection { private static class DontSimplifyStatementsWithConstantInTheMiddleQuickFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return ourIgnoreConstantOptionText; - } - @Nls @NotNull @Override diff --git a/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java b/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java index 42ecb02ab090..0f29353a0f0a 100644 --- a/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyInterpreterInspection.java @@ -80,11 +80,6 @@ public class PyInterpreterInspection extends PyInspection { } private static class ConfigureInterpreterFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return "Configure Python Interpreter"; - } @NotNull @Override diff --git a/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java b/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java index 86b763820513..e60ba1dbee4c 100644 --- a/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyMethodParametersInspection.java @@ -205,7 +205,9 @@ public class PyMethodParametersInspection extends PyInspection { ); } } - else if (flags.isClassMethod() || PyNames.NEW.equals(methodName)) { + else if (flags.isClassMethod() || + PyNames.NEW.equals(methodName) || + PyNames.INIT_SUBCLASS.equals(methodName) && LanguageLevel.forElement(node).isAtLeast(LanguageLevel.PYTHON36)) { if (!CLS.equals(pname)) { registerProblem( PyUtil.sure(params[0].getNode()).getPsi(), diff --git a/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java b/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java index dfa4609f8ad0..1ef59b9e7e99 100644 --- a/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java @@ -269,12 +269,6 @@ public class PyPackageRequirementsInspection extends PyInspection { myUnsatisfied = unsatisfied; } - @NotNull - @Override - public String getName() { - return myName; - } - @NotNull @Override public String getFamilyName() { @@ -359,11 +353,6 @@ public class PyPackageRequirementsInspection extends PyInspection { mySdk = PythonSdkType.findPythonSdk(myModule); } - @NotNull - public String getName() { - return "Install and import package " + myPackageName; - } - @NotNull public String getFamilyName() { return "Install and import package " + myPackageName; @@ -418,17 +407,11 @@ public class PyPackageRequirementsInspection extends PyInspection { @NotNull @Override - public String getName() { + public String getFamilyName() { final boolean plural = myPackageNames.size() > 1; return String.format("Ignore requirement%s", plural ? "s" : ""); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { final PsiElement element = descriptor.getPsiElement(); @@ -463,16 +446,10 @@ public class PyPackageRequirementsInspection extends PyInspection { myLanguageLevel = languageLevel; } - @NotNull - @Override - public String getName() { - return String.format("Add requirement '%s' to %s", myPackageName, calculateTarget()); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return String.format("Add requirement '%s' to %s", myPackageName, calculateTarget()); } @Override diff --git a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java index 67d4f4d684da..38f91972e63a 100644 --- a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java @@ -274,16 +274,10 @@ public class PyPep8NamingInspection extends PyInspection { } } - @NotNull - @Override - public String getName() { - return "Ignore method names for descendants of class"; - } - @NotNull @Override public String getFamilyName() { - return getName(); + return "Ignore method names for descendants of class"; } @Override @@ -323,13 +317,6 @@ public class PyPep8NamingInspection extends PyInspection { myCode = code; } - @Nls - @NotNull - @Override - public String getName() { - return myText; - } - @Nls @NotNull @Override diff --git a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java index acca073da2fe..0ac9e3b6e3e6 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java +++ b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java @@ -406,7 +406,7 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor { private static class ReplaceWithWildCard implements LocalQuickFix { @NotNull - public String getName() { + public String getFamilyName() { return PyBundle.message("INSP.unused.locals.replace.with.wildcard"); } @@ -428,10 +428,5 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor { } }), getName(), null); } - - @NotNull - public String getFamilyName() { - return getName(); - } } } diff --git a/python/src/com/jetbrains/python/inspections/quickfix/AddCallSuperQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/AddCallSuperQuickFix.java index efd0ac4cdfaa..f7e6a16f00a1 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/AddCallSuperQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/AddCallSuperQuickFix.java @@ -45,15 +45,9 @@ import java.util.*; */ public class AddCallSuperQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.add.super"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.add.super"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/AddEncodingQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/AddEncodingQuickFix.java index 3e3e55028abe..0f887dcef321 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/AddEncodingQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/AddEncodingQuickFix.java @@ -52,15 +52,9 @@ public class AddEncodingQuickFix implements LocalQuickFix { myEncodingFormatIndex = encodingFormatIndex; } - @NotNull - public String getName() { - return PyBundle.message("QFIX.add.encoding"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.add.encoding"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/AddGlobalQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/AddGlobalQuickFix.java index 5bb8e0be25c2..209b6abf19be 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/AddGlobalQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/AddGlobalQuickFix.java @@ -31,15 +31,9 @@ import org.jetbrains.annotations.NotNull; * @author oleg */ public class AddGlobalQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.add.global"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.add.global"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/AugmentedAssignmentQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/AugmentedAssignmentQuickFix.java index 639b98bbed52..5e413765f977 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/AugmentedAssignmentQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/AugmentedAssignmentQuickFix.java @@ -35,14 +35,9 @@ import java.util.List; * for instance, i = i + 1 --> i +=1 */ public class AugmentedAssignmentQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.augment.assignment"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.augment.assignment"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ChainedComparisonsQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ChainedComparisonsQuickFix.java index 5a83d158a1e7..a5527860d303 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ChainedComparisonsQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ChainedComparisonsQuickFix.java @@ -56,14 +56,9 @@ public class ChainedComparisonsQuickFix implements LocalQuickFix { myUseRightChildOfLeft = useRightChildOfLeft; } - @NotNull - public String getName() { - return PyBundle.message("QFIX.chained.comparison"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.chained.comparison"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ComparisonWithNoneQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ComparisonWithNoneQuickFix.java index 17dc83cf3af9..5117bb70154a 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ComparisonWithNoneQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ComparisonWithNoneQuickFix.java @@ -34,14 +34,9 @@ import org.jetbrains.annotations.NotNull; * Time: 22:00:49 */ public class ComparisonWithNoneQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.replace.equality"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.replace.equality"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/CompatibilityPrintCallQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/CompatibilityPrintCallQuickFix.java index 11214e8b5c66..41cb9786150f 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/CompatibilityPrintCallQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/CompatibilityPrintCallQuickFix.java @@ -32,14 +32,9 @@ import org.jetbrains.annotations.NotNull; * QuickFix to replace statement that has no effect with function call */ public class CompatibilityPrintCallQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.statement.effect"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.statement.effect"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ConvertDocstringQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ConvertDocstringQuickFix.java index f921ed00aa41..dd33f9878797 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ConvertDocstringQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ConvertDocstringQuickFix.java @@ -35,14 +35,9 @@ import org.jetbrains.annotations.NotNull; * For consistency, always use """triple double quotes""" around docstrings. */ public class ConvertDocstringQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.convert.single.quoted.docstring"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.convert.single.quoted.docstring"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/DictCreationQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/DictCreationQuickFix.java index 28589a660c3d..8a9e10b31bf9 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/DictCreationQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/DictCreationQuickFix.java @@ -43,16 +43,10 @@ public class DictCreationQuickFix implements LocalQuickFix { myStatement = statement; } - @Override - @NotNull - public String getName() { - return PyBundle.message("QFIX.dict.creation"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.dict.creation"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ListCreationQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ListCreationQuickFix.java index 322a50214e1f..057316c35e98 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ListCreationQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ListCreationQuickFix.java @@ -40,14 +40,9 @@ public class ListCreationQuickFix implements LocalQuickFix { myStatements.add(statement); } - @NotNull - public String getName() { - return PyBundle.message("QFIX.list.creation"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.list.creation"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/MoveFromFutureImportQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/MoveFromFutureImportQuickFix.java index d88008b08163..2b46474c39a7 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/MoveFromFutureImportQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/MoveFromFutureImportQuickFix.java @@ -30,16 +30,10 @@ import org.jetbrains.annotations.NotNull; * @author Alexey.Ivanov */ public class MoveFromFutureImportQuickFix implements LocalQuickFix { - @Override - @NotNull - public String getName() { - return PyBundle.message("QFIX.move.from.future.import"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.move.from.future.import"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyAddExceptionSuperClassQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyAddExceptionSuperClassQuickFix.java index 856b2b47bf50..fb80b2801226 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyAddExceptionSuperClassQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyAddExceptionSuperClassQuickFix.java @@ -27,14 +27,9 @@ import org.jetbrains.annotations.NotNull; public class PyAddExceptionSuperClassQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.add.exception.base"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.add.exception.base"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyAddImportFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyAddImportFix.java index 04326eb9a25e..24178916cd2b 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyAddImportFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyAddImportFix.java @@ -47,16 +47,10 @@ public class PyAddImportFix implements LocalQuickFix { myFile = file; } - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.add.import.add.import", myImportToAdd); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.add.import.add.import", myImportToAdd); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyAddPropertyForFieldQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyAddPropertyForFieldQuickFix.java index fa41be13a8d5..dc3f4e976935 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyAddPropertyForFieldQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyAddPropertyForFieldQuickFix.java @@ -35,15 +35,9 @@ public class PyAddPropertyForFieldQuickFix implements LocalQuickFix { myName = name; } - @NotNull - public String getName() { - return myName; - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return myName; } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyAddSpecifierToFormatQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyAddSpecifierToFormatQuickFix.java index 1bae82b80173..1b62a1ef23e4 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyAddSpecifierToFormatQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyAddSpecifierToFormatQuickFix.java @@ -40,15 +40,9 @@ import static com.jetbrains.python.inspections.PyStringFormatParser.filterSubsti import static com.jetbrains.python.inspections.PyStringFormatParser.parsePercentFormat; public class PyAddSpecifierToFormatQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.add.specifier"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.add.specifier"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyChangeBaseClassQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyChangeBaseClassQuickFix.java index 5073ed66b716..9a7e6b978644 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyChangeBaseClassQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyChangeBaseClassQuickFix.java @@ -33,16 +33,10 @@ import com.jetbrains.python.psi.PyExpression; import org.jetbrains.annotations.NotNull; public class PyChangeBaseClassQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.change.base.class"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.change.base.class"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyChangeSignatureQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyChangeSignatureQuickFix.java index bb0159a4e799..1acbd0d2bcd0 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyChangeSignatureQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyChangeSignatureQuickFix.java @@ -41,15 +41,9 @@ public class PyChangeSignatureQuickFix implements LocalQuickFix { myOverridenMethod = overriddenMethod; } - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.change.signature"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.change.signature"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyConvertToNewStyleQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyConvertToNewStyleQuickFix.java index 82c68d007013..ff72521ef671 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyConvertToNewStyleQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyConvertToNewStyleQuickFix.java @@ -26,16 +26,10 @@ import com.jetbrains.python.psi.*; import org.jetbrains.annotations.NotNull; public class PyConvertToNewStyleQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.convert.to.new.style"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.convert.to.new.style"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyCreatePropertyQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyCreatePropertyQuickFix.java index 92825625f156..90240309f910 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyCreatePropertyQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyCreatePropertyQuickFix.java @@ -34,15 +34,9 @@ public class PyCreatePropertyQuickFix implements LocalQuickFix { myAccessDirection = dir; } - @NotNull - public String getName() { - return PyBundle.message("QFIX.create.property"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.create.property"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java index 22afdff6bbc1..6e7a53581bd3 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java @@ -38,16 +38,10 @@ import org.jetbrains.annotations.NotNull; */ public class PyDefaultArgumentQuickFix implements LocalQuickFix { - @Override - @NotNull - public String getName() { - return PyBundle.message("QFIX.default.argument"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.default.argument"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java index c3cbe6535e4a..2a2563e939f4 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java @@ -44,15 +44,9 @@ public class PyMakeFunctionFromMethodQuickFix implements LocalQuickFix { public PyMakeFunctionFromMethodQuickFix() { } - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.make.function"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.make.function"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyMakeMethodStaticQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyMakeMethodStaticQuickFix.java index 2958606e4d03..4517445faa93 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyMakeMethodStaticQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyMakeMethodStaticQuickFix.java @@ -38,15 +38,9 @@ public class PyMakeMethodStaticQuickFix implements LocalQuickFix { public PyMakeMethodStaticQuickFix() { } - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.make.static"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.make.static"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyMakePublicQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyMakePublicQuickFix.java index b6c7507bc6f5..64e21614737b 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyMakePublicQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyMakePublicQuickFix.java @@ -29,11 +29,6 @@ import com.jetbrains.python.psi.PyTargetExpression; import org.jetbrains.annotations.NotNull; public class PyMakePublicQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.make.public"); - } @NotNull @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java index acae846e72d0..a421f4bc5047 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java @@ -35,15 +35,9 @@ public class PyMoveAttributeToInitQuickFix implements LocalQuickFix { public PyMoveAttributeToInitQuickFix() { } - @NotNull - public String getName() { - return PyBundle.message("QFIX.move.attribute"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.move.attribute"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyMoveExceptQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyMoveExceptQuickFix.java index e2ccf89327de..e2f8ad5d7ed7 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyMoveExceptQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyMoveExceptQuickFix.java @@ -31,15 +31,9 @@ import java.util.ArrayList; public class PyMoveExceptQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.move.except.up"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.move.except.up"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveArgumentQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveArgumentQuickFix.java index 5beb35dc4b3d..a44394d0410d 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveArgumentQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveArgumentQuickFix.java @@ -30,15 +30,9 @@ import org.jetbrains.annotations.NotNull; //TODO: Remove pydoc aswell public class PyRemoveArgumentQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.remove.argument"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.remove.argument"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveAssignmentQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveAssignmentQuickFix.java index 30408260943a..3a04e27a2628 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveAssignmentQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveAssignmentQuickFix.java @@ -27,13 +27,8 @@ import org.jetbrains.annotations.NotNull; public class PyRemoveAssignmentQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("QFIX.NAME.remove.assignment"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.remove.assignment"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveCallQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveCallQuickFix.java index 6b096b8cb83e..2861e0b383df 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveCallQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveCallQuickFix.java @@ -28,13 +28,8 @@ import org.jetbrains.annotations.NotNull; public class PyRemoveCallQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("QFIX.NAME.remove.call"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.remove.call"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveDictKeyQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveDictKeyQuickFix.java index 799041ee55c1..2e406a66221b 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveDictKeyQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveDictKeyQuickFix.java @@ -29,15 +29,9 @@ import org.jetbrains.annotations.NotNull; public class PyRemoveDictKeyQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.remove.dict.key"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.remove.dict.key"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveParameterQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveParameterQuickFix.java index 48e14a14206f..3e4bb0aea3a1 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveParameterQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveParameterQuickFix.java @@ -34,15 +34,9 @@ import java.util.Map; public class PyRemoveParameterQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.NAME.remove.parameter"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.remove.parameter"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveStatementQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveStatementQuickFix.java index 45eb84bf6fbb..aea00be800fa 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveStatementQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveStatementQuickFix.java @@ -26,13 +26,8 @@ import org.jetbrains.annotations.NotNull; public class PyRemoveStatementQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("QFIX.NAME.remove.statement"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.remove.statement"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveUnderscoresInNumericLiteralsQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveUnderscoresInNumericLiteralsQuickFix.java index 87507788d251..4e0c1f18ae6a 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveUnderscoresInNumericLiteralsQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRemoveUnderscoresInNumericLiteralsQuickFix.java @@ -28,18 +28,11 @@ import org.jetbrains.annotations.NotNull; public class PyRemoveUnderscoresInNumericLiteralsQuickFix implements LocalQuickFix { - @Nls - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.NAME.remove.underscores.in.numeric"); - } - @Nls @NotNull @Override public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.remove.underscores.in.numeric"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRenameArgumentQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRenameArgumentQuickFix.java index aa84afdd559f..154f55d4f2ac 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRenameArgumentQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRenameArgumentQuickFix.java @@ -30,16 +30,10 @@ import com.jetbrains.python.PyBundle; import org.jetbrains.annotations.NotNull; public class PyRenameArgumentQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.NAME.rename.argument"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.rename.argument"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRenameElementQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRenameElementQuickFix.java index c3db44d3cf6b..103b404bec70 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRenameElementQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRenameElementQuickFix.java @@ -45,11 +45,6 @@ import org.jetbrains.annotations.Nullable; * User: ktisha */ public class PyRenameElementQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return "Rename element"; - } @NotNull @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyRenameUnresolvedRefQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyRenameUnresolvedRefQuickFix.java index b577bf07cbd1..6cd8a220e6a6 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyRenameUnresolvedRefQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyRenameUnresolvedRefQuickFix.java @@ -49,12 +49,6 @@ import java.util.*; */ public class PyRenameUnresolvedRefQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.rename.unresolved.reference"); - } - @Override @NotNull public String getFamilyName() { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyReplaceTupleWithListQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyReplaceTupleWithListQuickFix.java index 53254e72e2e7..d7bc17215ab9 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyReplaceTupleWithListQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyReplaceTupleWithListQuickFix.java @@ -26,16 +26,10 @@ import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; public class PyReplaceTupleWithListQuickFix implements LocalQuickFix { - @NotNull - @Override - public String getName() { - return PyBundle.message("QFIX.NAME.make.list"); - } - @NotNull @Override public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.make.list"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyUpdatePropertySignatureQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyUpdatePropertySignatureQuickFix.java index c737e16df572..a10696dabb34 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyUpdatePropertySignatureQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyUpdatePropertySignatureQuickFix.java @@ -34,13 +34,8 @@ public class PyUpdatePropertySignatureQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("QFIX.NAME.update.parameters"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.update.parameters"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyWrapInExceptionQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyWrapInExceptionQuickFix.java index 9bee9d4fc2c6..66decca76263 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyWrapInExceptionQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyWrapInExceptionQuickFix.java @@ -26,13 +26,8 @@ import org.jetbrains.annotations.NotNull; public class PyWrapInExceptionQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("QFIX.NAME.wrap.in.exception"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.NAME.wrap.in.exception"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/RedundantParenthesesQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/RedundantParenthesesQuickFix.java index bee68f6a7f70..17b4f80c7f2d 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/RedundantParenthesesQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/RedundantParenthesesQuickFix.java @@ -33,14 +33,9 @@ import org.jetbrains.annotations.NotNull; public class RedundantParenthesesQuickFix implements LocalQuickFix { private static final Logger LOG = Logger.getInstance(RedundantParenthesesQuickFix.class); - @NotNull - public String getName() { - return PyBundle.message("QFIX.redundant.parentheses"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.redundant.parentheses"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReformatFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReformatFix.java index 4512df62002e..acb7551f4b36 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReformatFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReformatFix.java @@ -37,12 +37,6 @@ public class ReformatFix implements IntentionAction, LocalQuickFix, HighPriority return "Reformat file"; } - @NotNull - @Override - public String getName() { - return getText(); - } - @NotNull @Override public String getFamilyName() { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/RemoveArgumentEqualDefaultQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/RemoveArgumentEqualDefaultQuickFix.java index 3ad27b7f046d..599e8352c635 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/RemoveArgumentEqualDefaultQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/RemoveArgumentEqualDefaultQuickFix.java @@ -40,14 +40,9 @@ public class RemoveArgumentEqualDefaultQuickFix implements LocalQuickFix { myProblemElements = problemElements; } - @NotNull - public String getName() { - return PyBundle.message("QFIX.remove.argument.equal.default"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.remove.argument.equal.default"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/RemoveDecoratorQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/RemoveDecoratorQuickFix.java index 0521c2ec2d77..aa75ac621914 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/RemoveDecoratorQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/RemoveDecoratorQuickFix.java @@ -28,14 +28,9 @@ import org.jetbrains.annotations.NotNull; * QuickFix to remove redundant decorator */ public class RemoveDecoratorQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.remove.decorator"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.remove.decorator"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingBlankLinesFix.java b/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingBlankLinesFix.java index b9d3eb27b57e..a37423225e10 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingBlankLinesFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingBlankLinesFix.java @@ -52,12 +52,6 @@ public class RemoveTrailingBlankLinesFix implements LocalQuickFix, IntentionActi return true; } - @NotNull - @Override - public String getName() { - return getText(); - } - @NotNull @Override public String getFamilyName() { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingLQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingLQuickFix.java index 0f8ca51790f9..95163a3ac9a1 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingLQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingLQuickFix.java @@ -33,13 +33,8 @@ import org.jetbrains.annotations.NotNull; public class RemoveTrailingLQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("INTN.remove.trailing.l"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("INTN.remove.trailing.l"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingSemicolonQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingSemicolonQuickFix.java index 844f4bfbe3ff..1b71b7dfc494 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingSemicolonQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/RemoveTrailingSemicolonQuickFix.java @@ -30,14 +30,9 @@ import org.jetbrains.annotations.NotNull; * Time: 2:57:42 PM */ public class RemoveTrailingSemicolonQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.remove.trailing.semicolon"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.remove.trailing.semicolon"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/RemoveUnnecessaryBackslashQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/RemoveUnnecessaryBackslashQuickFix.java index a69a85626659..a9640c86087d 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/RemoveUnnecessaryBackslashQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/RemoveUnnecessaryBackslashQuickFix.java @@ -33,14 +33,9 @@ import org.jetbrains.annotations.NotNull; * QuickFix to remove all unnecessary backslashes in expression */ public class RemoveUnnecessaryBackslashQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.remove.unnecessary.backslash"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.remove.unnecessary.backslash"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceBackquoteExpressionQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceBackquoteExpressionQuickFix.java index 4df61b21c95d..a9db6782b02d 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceBackquoteExpressionQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceBackquoteExpressionQuickFix.java @@ -33,13 +33,8 @@ import org.jetbrains.annotations.NotNull; public class ReplaceBackquoteExpressionQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("INTN.replace.backquote.expression"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("INTN.replace.backquote.expression"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceExceptPartQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceExceptPartQuickFix.java index 6edb1b629660..11e06095ca7a 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceExceptPartQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceExceptPartQuickFix.java @@ -35,13 +35,8 @@ import org.jetbrains.annotations.NotNull; public class ReplaceExceptPartQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("INTN.convert.except.to"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("INTN.convert.except.to"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceFunctionWithSetLiteralQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceFunctionWithSetLiteralQuickFix.java index 09b55c38b4fa..929d47e5bb1f 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceFunctionWithSetLiteralQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceFunctionWithSetLiteralQuickFix.java @@ -30,16 +30,10 @@ import org.jetbrains.annotations.NotNull; * set literal if applicable */ public class ReplaceFunctionWithSetLiteralQuickFix implements LocalQuickFix { - @Override - @NotNull - public String getName() { - return PyBundle.message("QFIX.replace.function.set.with.literal"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.replace.function.set.with.literal"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceListComprehensionsQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceListComprehensionsQuickFix.java index eff4e0e4eb57..9ff93766de22 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceListComprehensionsQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceListComprehensionsQuickFix.java @@ -35,13 +35,8 @@ import org.jetbrains.annotations.NotNull; public class ReplaceListComprehensionsQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("INTN.replace.list.comprehensions"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("INTN.replace.list.comprehensions"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceNotEqOperatorQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceNotEqOperatorQuickFix.java index 803fe2d1ab88..b2dc4db4e9bc 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceNotEqOperatorQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceNotEqOperatorQuickFix.java @@ -35,13 +35,8 @@ import org.jetbrains.annotations.NotNull; public class ReplaceNotEqOperatorQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("INTN.replace.noteq.operator"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("INTN.replace.noteq.operator"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceOctalNumericLiteralQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceOctalNumericLiteralQuickFix.java index 41e5e16d5d27..04ff81822179 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceOctalNumericLiteralQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceOctalNumericLiteralQuickFix.java @@ -33,13 +33,8 @@ import org.jetbrains.annotations.NotNull; public class ReplaceOctalNumericLiteralQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("INTN.replace.octal.numeric.literal"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("INTN.replace.octal.numeric.literal"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceRaiseStatementQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceRaiseStatementQuickFix.java index c406d332114c..de631a6a5897 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/ReplaceRaiseStatementQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/ReplaceRaiseStatementQuickFix.java @@ -32,13 +32,8 @@ import org.jetbrains.annotations.NotNull; public class ReplaceRaiseStatementQuickFix implements LocalQuickFix { @NotNull @Override - public String getName() { - return PyBundle.message("INTN.replace.raise.statement"); - } - - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("INTN.replace.raise.statement"); } @Override diff --git a/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java index ac65f6e01879..4129fb30a8dc 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java @@ -35,14 +35,9 @@ import org.jetbrains.annotations.Nullable; * QuickFix to replace statement that has no effect with function call */ public class StatementEffectFunctionCallQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.statement.effect"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.statement.effect"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectIntroduceVariableQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectIntroduceVariableQuickFix.java index 1c84c54d322c..d091ea20fd3e 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectIntroduceVariableQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectIntroduceVariableQuickFix.java @@ -34,15 +34,9 @@ import org.jetbrains.annotations.NotNull; * Quickfix to introduce variable if statement seems to have no effect */ public class StatementEffectIntroduceVariableQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.introduce.variable"); - } - - @NonNls @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.introduce.variable"); } public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/TransformClassicClassQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/TransformClassicClassQuickFix.java index 159d97372e36..3aa88d5323d6 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/TransformClassicClassQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/TransformClassicClassQuickFix.java @@ -35,14 +35,9 @@ import org.jetbrains.annotations.NotNull; * Time: 16:49:59 */ public class TransformClassicClassQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.classic.class.transform"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.classic.class.transform"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefAddFutureImportQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefAddFutureImportQuickFix.java index baafe4c1d8cc..82b74fbc9634 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefAddFutureImportQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefAddFutureImportQuickFix.java @@ -33,14 +33,9 @@ import org.jetbrains.annotations.NotNull; * QuickFix to add 'from __future__ import with_statement'' if python version is less than 2.6 */ public class UnresolvedRefAddFutureImportQuickFix implements LocalQuickFix { - @NotNull - public String getName() { - return PyBundle.message("QFIX.unresolved.reference.add.future"); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.unresolved.reference.add.future"); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefCreateFunctionQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefCreateFunctionQuickFix.java index d67f584b7314..862b6f939419 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefCreateFunctionQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/UnresolvedRefCreateFunctionQuickFix.java @@ -46,14 +46,9 @@ public class UnresolvedRefCreateFunctionQuickFix implements LocalQuickFix { myReference = reference; } - @NotNull - public String getName() { - return PyBundle.message("QFIX.unresolved.reference.create.function.$0", myReference.getText()); - } - @NotNull public String getFamilyName() { - return getName(); + return PyBundle.message("QFIX.unresolved.reference.create.function.$0", myReference.getText()); } public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { diff --git a/python/testData/inspections/PyMethodParametersInspectionInitSubclass/test.py b/python/testData/inspections/PyMethodParametersInspectionInitSubclass/test.py new file mode 100644 index 000000000000..794d1177cae6 --- /dev/null +++ b/python/testData/inspections/PyMethodParametersInspectionInitSubclass/test.py @@ -0,0 +1,10 @@ +class QuestBase: + def __init_subclass__(cls, swallow, **kwargs): + cls.swallow = swallow + super().__init_subclass__(**kwargs) + + +class QuestBase: + def __init_subclass__(self, swallow, **kwargs): + self.swallow = swallow + super().__init_subclass__(**kwargs) \ No newline at end of file diff --git a/python/testData/quickFixes/AddImportQuickFixTest/canonicalNamesFromHigherLevelPackage/main_after.py b/python/testData/quickFixes/AddImportQuickFixTest/canonicalNamesFromHigherLevelPackage/main_after.py index 8683c5a7c50e..5670fc2b31a3 100644 --- a/python/testData/quickFixes/AddImportQuickFixTest/canonicalNamesFromHigherLevelPackage/main_after.py +++ b/python/testData/quickFixes/AddImportQuickFixTest/canonicalNamesFromHigherLevelPackage/main_after.py @@ -1,3 +1,3 @@ -from foo import MyClass +from bar import MyClass MyClass() \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java b/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java index da69bbbdfa4d..76130c106c11 100644 --- a/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java +++ b/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java @@ -69,6 +69,10 @@ public class PythonInspectionsTest extends PyTestCase { myFixture.checkHighlighting(true, false, true); } + public void testPyMethodParametersInspectionInitSubclass() { + doHighlightingTest(PyMethodParametersInspection.class, LanguageLevel.PYTHON36); + } + public void testPyNestedDecoratorsInspection() { LocalInspectionTool inspection = new PyNestedDecoratorsInspection(); doTest(getTestName(false), inspection); diff --git a/python/testSrc/com/jetbrains/python/intentions/PyAnnotateTypesIntentionTest.java b/python/testSrc/com/jetbrains/python/intentions/PyAnnotateTypesIntentionTest.java index 2af8ccece36c..e441c27c649e 100644 --- a/python/testSrc/com/jetbrains/python/intentions/PyAnnotateTypesIntentionTest.java +++ b/python/testSrc/com/jetbrains/python/intentions/PyAnnotateTypesIntentionTest.java @@ -15,16 +15,10 @@ */ package com.jetbrains.python.intentions; -import com.intellij.codeInsight.intention.IntentionAction; import com.jetbrains.python.PyBundle; -import com.jetbrains.python.debugger.PySignature; -import com.jetbrains.python.debugger.PySignatureCacheManager; -import com.jetbrains.python.debugger.PySignatureCacheManagerImpl; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.psi.impl.PythonLanguageLevelPusher; -import java.io.IOException; - /** * @author traff */ @@ -51,30 +45,6 @@ public class PyAnnotateTypesIntentionTest extends PyIntentionTestCase { public void testTypeComment() { doTest(PyBundle.message("INTN.annotate.types"), LanguageLevel.PYTHON27); } - - public void testImportDict() throws IOException { - PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), LanguageLevel.PYTHON30); - try { - final String testFileName = getTestName(true); - myFixture.configureByFile(testFileName + ".py"); - - String signature = PySignatureCacheManager.signatureToString( - new PySignature(myFixture.getFile().getVirtualFile().getCanonicalPath(), "get_dict").addReturnType("Dict[int, str]")); - PySignatureCacheManagerImpl.CALL_SIGNATURES_ATTRIBUTE.writeAttributeBytes(myFixture.getFile().getVirtualFile(), - signature.getBytes()); - - final IntentionAction intentionAction = myFixture.findSingleIntention(PyBundle.message("INTN.annotate.types")); - assertNotNull(intentionAction); - myFixture.launchAction(intentionAction); - myFixture.checkResultByFile(testFileName + "_after.py", true); - } - finally { - PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), null); - } - - doTest(); - } - private void doTest() { doTest(PyBundle.message("INTN.annotate.types"), LanguageLevel.PYTHON30); diff --git a/python/testSrc/com/jetbrains/python/quickFixes/AddImportQuickFixTest.java b/python/testSrc/com/jetbrains/python/quickFixes/AddImportQuickFixTest.java index 7eef13fc19a5..a24591f86951 100644 --- a/python/testSrc/com/jetbrains/python/quickFixes/AddImportQuickFixTest.java +++ b/python/testSrc/com/jetbrains/python/quickFixes/AddImportQuickFixTest.java @@ -52,7 +52,7 @@ public class AddImportQuickFixTest extends PyQuickFixTestCase { doMultiFileAutoImportTest("Import", fix -> { final List candidates = fix.getCandidates(); final List names = ContainerUtil.map(candidates, c -> c.getPresentableText("MyClass")); - assertSameElements(names, "foo.MyClass", "bar.MyClass"); + assertOrderedEquals(names, "bar.MyClass", "foo.MyClass"); return true; }); } diff --git a/spellchecker/src/com/intellij/spellchecker/quickfixes/ChangeTo.java b/spellchecker/src/com/intellij/spellchecker/quickfixes/ChangeTo.java index 9067b33aaffa..dac0adc22bfb 100644 --- a/spellchecker/src/com/intellij/spellchecker/quickfixes/ChangeTo.java +++ b/spellchecker/src/com/intellij/spellchecker/quickfixes/ChangeTo.java @@ -40,11 +40,6 @@ public class ChangeTo extends ShowSuggestions implements SpellCheckerQuickFix { } - @NotNull - public String getName() { - return SpellCheckerBundle.message("change.to"); - } - @NotNull public String getFamilyName() { return SpellCheckerBundle.message("change.to"); diff --git a/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java b/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java index f9c6c01f3a64..b56daf97e3ac 100644 --- a/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java +++ b/spellchecker/src/com/intellij/spellchecker/quickfixes/RenameTo.java @@ -46,11 +46,6 @@ public class RenameTo extends ShowSuggestions implements SpellCheckerQuickFix { super(wordWithTypo); } - @NotNull - public String getName() { - return SpellCheckerBundle.message("rename.to"); - } - @NotNull public String getFamilyName() { return SpellCheckerBundle.message("rename.to"); diff --git a/xml/dom-tests/tests/com/intellij/util/xml/DomVirtualFileEventsTest.java b/xml/dom-tests/tests/com/intellij/util/xml/DomVirtualFileEventsTest.java index de842adf169e..de5e504d014a 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/DomVirtualFileEventsTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/DomVirtualFileEventsTest.java @@ -90,7 +90,7 @@ public class DomVirtualFileEventsTest extends DomHardCoreTestCase{ final VirtualFile data = dir.createChildData(this, "abc.xml"); setFileText(data, ""); PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); - final DomFileElementImpl fileElement = getFileElement(data); + DomFileElementImpl fileElement = getFileElement(data); assertEventCount(0); assertResultsAndClear(); @@ -100,6 +100,7 @@ public class DomVirtualFileEventsTest extends DomHardCoreTestCase{ assertResultsAndClear(); assertEquals(fileElement, getFileElement(data)); assertTrue(fileElement.isValid()); + fileElement = getFileElement(data); data.rename(this, "fff.xml"); assertEventCount(1); diff --git a/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java b/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java index 8ea857c672eb..e930c6add807 100644 --- a/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java +++ b/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java @@ -112,12 +112,6 @@ public class CreateNSDeclarationIntentionFix implements HintAction, LocalQuickFi return XmlNamespaceHelper.getHelper(getFile()); } - @Override - @NotNull - public String getName() { - return getFamilyName(); - } - @Override @NotNull public String getFamilyName() { diff --git a/xml/impl/src/com/intellij/xml/util/AddDtdDeclarationFix.java b/xml/impl/src/com/intellij/xml/util/AddDtdDeclarationFix.java index 0daaa84385be..bf9f67517609 100644 --- a/xml/impl/src/com/intellij/xml/util/AddDtdDeclarationFix.java +++ b/xml/impl/src/com/intellij/xml/util/AddDtdDeclarationFix.java @@ -49,16 +49,10 @@ public class AddDtdDeclarationFix implements LocalQuickFix { myReference = reference.getCanonicalText(); } - @Override - @NotNull - public String getName() { - return XmlBundle.message(myMessageKey, myReference); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return XmlBundle.message(myMessageKey, myReference); } @Override diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/inspections/UnusedDefineInspection.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/inspections/UnusedDefineInspection.java index 0f646b810e5a..a0cd8ee4c2a4 100644 --- a/xml/relaxng/src/org/intellij/plugins/relaxNG/inspections/UnusedDefineInspection.java +++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/inspections/UnusedDefineInspection.java @@ -210,16 +210,10 @@ public class UnusedDefineInspection extends BaseInspection { myTag = tag; } - @Override - @NotNull - public String getName() { - return "Remove define"; - } - @Override @NotNull public String getFamilyName() { - return getName(); + return "Remove define"; } @Override diff --git a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/RemoveExtraClosingTagIntentionAction.java b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/RemoveExtraClosingTagIntentionAction.java index 7fee99d0f51c..ac80199dbbf8 100644 --- a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/RemoveExtraClosingTagIntentionAction.java +++ b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/RemoveExtraClosingTagIntentionAction.java @@ -47,12 +47,6 @@ public class RemoveExtraClosingTagIntentionAction implements LocalQuickFix, Inte return XmlErrorMessages.message("remove.extra.closing.tag.quickfix"); } - @Override - @NotNull - public String getName() { - return XmlErrorMessages.message("remove.extra.closing.tag.quickfix"); - } - @Override @NotNull diff --git a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/SwitchToHtml5Action.java b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/SwitchToHtml5Action.java index c779fb8cf1dd..d62c4947c951 100644 --- a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/SwitchToHtml5Action.java +++ b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/SwitchToHtml5Action.java @@ -35,7 +35,7 @@ public class SwitchToHtml5Action implements LocalQuickFix, IntentionAction { @NotNull @Override - public String getName() { + public String getFamilyName() { return XmlErrorMessages.message("switch.to.html5.quickfix.text"); } @@ -45,12 +45,6 @@ public class SwitchToHtml5Action implements LocalQuickFix, IntentionAction { return getFamilyName(); } - @NotNull - @Override - public String getFamilyName() { - return getName(); - } - @Override public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { return true; diff --git a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/XmlWrongRootElementInspection.java b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/XmlWrongRootElementInspection.java index 89809c4cc3f0..9bfd92d369b6 100644 --- a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/XmlWrongRootElementInspection.java +++ b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/XmlWrongRootElementInspection.java @@ -139,16 +139,10 @@ public class XmlWrongRootElementInspection extends HtmlLocalInspectionTool { myText = text; } - @Override - @NotNull - public String getName() { - return XmlBundle.message("change.root.element.to", myText); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return XmlBundle.message("change.root.element.to", myText); } @Override diff --git a/xml/xml-analysis-impl/src/com/intellij/xml/util/CheckEmptyTagInspection.java b/xml/xml-analysis-impl/src/com/intellij/xml/util/CheckEmptyTagInspection.java index c89427b404fc..7871c57b16c7 100644 --- a/xml/xml-analysis-impl/src/com/intellij/xml/util/CheckEmptyTagInspection.java +++ b/xml/xml-analysis-impl/src/com/intellij/xml/util/CheckEmptyTagInspection.java @@ -109,7 +109,7 @@ public class CheckEmptyTagInspection extends XmlSuppressableInspectionTool { private static class MyLocalQuickFix implements LocalQuickFix { @Override @NotNull - public String getName() { + public String getFamilyName() { return XmlBundle.message("html.inspections.check.empty.script.tag.fix.message"); } @@ -129,12 +129,5 @@ public class CheckEmptyTagInspection extends XmlSuppressableInspectionTool { LOG.error(e); } } - - //to appear in "Apply Fix" statement when multiple Quick Fixes exist - @Override - @NotNull - public String getFamilyName() { - return getName(); - } } } diff --git a/xml/xml-analysis-impl/src/com/intellij/xml/util/CollapseTagIntention.java b/xml/xml-analysis-impl/src/com/intellij/xml/util/CollapseTagIntention.java index ff02d250298c..5942af7b89cf 100644 --- a/xml/xml-analysis-impl/src/com/intellij/xml/util/CollapseTagIntention.java +++ b/xml/xml-analysis-impl/src/com/intellij/xml/util/CollapseTagIntention.java @@ -48,7 +48,7 @@ public class CollapseTagIntention implements LocalQuickFix, IntentionAction { @Override @NotNull - public String getName() { + public String getFamilyName() { return XmlBundle.message("xml.inspections.replace.tag.empty.body.with.empty.end"); } @@ -59,12 +59,6 @@ public class CollapseTagIntention implements LocalQuickFix, IntentionAction { return getName(); } - @Override - @NotNull - public String getFamilyName() { - return getName(); - } - @Override public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { applyFix(project, descriptor.getPsiElement()); diff --git a/xml/xml-analysis-impl/src/com/intellij/xml/util/XmlDeclareIdInCommentAction.java b/xml/xml-analysis-impl/src/com/intellij/xml/util/XmlDeclareIdInCommentAction.java index 1ff53926d036..64695010cc0e 100644 --- a/xml/xml-analysis-impl/src/com/intellij/xml/util/XmlDeclareIdInCommentAction.java +++ b/xml/xml-analysis-impl/src/com/intellij/xml/util/XmlDeclareIdInCommentAction.java @@ -44,16 +44,10 @@ public class XmlDeclareIdInCommentAction implements LocalQuickFix { myId = id; } - @Override - @NotNull - public String getName() { - return XmlErrorMessages.message("declare.id.in.comment.quickfix"); - } - @Override @NotNull public String getFamilyName() { - return getName(); + return XmlErrorMessages.message("declare.id.in.comment.quickfix"); } @Nullable