From d1841d6e987233e4be9e74fff71f0b678c8852c3 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 28 Sep 2016 10:41:50 +0200 Subject: [PATCH 01/69] [java] module graph builder API optimization --- .../impl/analysis/JavaModuleGraphBuilder.java | 137 ------------------ .../impl/analysis/JavaModuleGraphUtil.java | 115 +++++++++++++++ .../impl/analysis/ModuleHighlightUtil.java | 16 +- 3 files changed, 121 insertions(+), 147 deletions(-) delete mode 100644 java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphBuilder.java create mode 100644 java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java 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..8c77bb0e7540 --- /dev/null +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java @@ -0,0 +1,115 @@ +/* + * 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.*; +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)); + } + + // 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 moduleDeclaration : projectModules) { + for (PsiRequiresStatement statement : psiTraverser().children(moduleDeclaration).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(moduleDeclaration, 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(); + } + + 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(); + } + } +} \ No newline at end of file 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..75b3e8a0b15f 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; @@ -198,15 +197,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(); } } } From 43cc6f5519ffd534c09ece37ca5793e31ed4b187 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Wed, 28 Sep 2016 15:02:17 +0200 Subject: [PATCH 02/69] Add printenv for linux (PY-15085) --- bin/linux/printenv.py | 18 ++++++++++++++++++ .../src/com/intellij/util/EnvironmentUtil.java | 8 +++++--- 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100755 bin/linux/printenv.py diff --git a/bin/linux/printenv.py b/bin/linux/printenv.py new file mode 100755 index 000000000000..a60959ca82eb --- /dev/null +++ b/bin/linux/printenv.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python + +# Dumps environment variables into specified file. +# Format: zero-separated "name=value" pairs in platform encoding. + +import os +import sys + +if len(sys.argv) != 2: + raise Exception('Exactly one argument expected') + +f = open(sys.argv[1], 'wb') +try: + for key, value in os.environ.items(): + s = '%s=%s\0' % (key, value) + f.write(s.encode('utf-8')) +finally: + f.close() 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(); From d5f416528336683cd70d353980a528c9f6bc962f Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Wed, 28 Sep 2016 17:59:01 +0200 Subject: [PATCH 03/69] Pass full shell path (IDEA-161309) --- .../plugins/terminal/LocalTerminalDirectRunner.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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); From 27543fe191430ed05646523e2a5f487c57390815 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Wed, 28 Sep 2016 19:39:41 +0300 Subject: [PATCH 04/69] PY-20946 Fixed: False positive: `__init_subclass__` method first parameter should be named "self" Update PyMethodParametersInspection to correctly handle Python 3.6 __init_subclass__ method. This method is implicitly a @classmethod --- python/psi-api/src/com/jetbrains/python/PyNames.java | 3 ++- .../inspections/PyMethodParametersInspection.java | 4 +++- .../PyMethodParametersInspectionInitSubclass/test.py | 10 ++++++++++ .../com/jetbrains/python/PythonInspectionsTest.java | 4 ++++ 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 python/testData/inspections/PyMethodParametersInspectionInitSubclass/test.py 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/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/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/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); From abbffc933ff652660146eeb4731818eeeb340ddb Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 28 Sep 2016 18:36:31 +0200 Subject: [PATCH 05/69] disallow calling ModalityState.current() from non-EDT --- .../openapi/application/impl/LaterInvocator.java | 1 + .../application/impl/LaterInvocatorTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) 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-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")); + } + } } From 0bf164da7eaf9dca7addc88680be5f755fcbadf7 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 28 Sep 2016 18:44:23 +0200 Subject: [PATCH 06/69] java call completion: remove untouched argument placeholders in a command --- .../codeInsight/completion/JavaMethodCallElement.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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())); } }); } From 530085e0b286e85e90a0e3ad324b66175c60f89c Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Wed, 28 Sep 2016 19:45:22 +0300 Subject: [PATCH 07/69] IDEA-158500: wheel rotation may be zero during precise scrolling java.awt.event.MouseWheelEvent#getWheelRotation --- .../images/editor/impl/ImageEditorUI.java | 6 +- .../documentation/DocumentationComponent.java | 6 +- .../openapi/actionSystem/MouseShortcut.java | 2 +- .../com/intellij/openapi/ui/JBPopupMenu.java | 4 +- .../src/com/intellij/ui/PortField.java | 4 +- .../com/intellij/ui/tabs/impl/JBTabsImpl.java | 13 ++--- .../openapi/editor/ex/util/EditorUtil.java | 1 + .../editor/impl/EditorMarkupModelImpl.java | 8 +-- .../src/com/intellij/ui/SlideComponent.java | 25 ++++---- .../intellij/util/ui/table/JBListTable.java | 3 +- .../util/ui/table/MouseSuppressor.java | 58 ------------------- .../intellij/util/ui/MouseEventAdapter.java | 6 +- .../intellij/util/ui/MouseEventHandler.java | 11 +++- 13 files changed, 54 insertions(+), 93 deletions(-) delete mode 100644 platform/platform-impl/src/com/intellij/util/ui/table/MouseSuppressor.java 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/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/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/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/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/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/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/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/util/src/com/intellij/util/ui/MouseEventAdapter.java b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java index 5b7b03a3a68b..be9fe2bdad1d 100644 --- a/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java +++ b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java @@ -17,13 +17,15 @@ 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 MouseListener, MouseInputListener, + MouseMotionListener, MouseWheelListener { private final T myAdapter; public MouseEventAdapter(T adapter) { @@ -119,6 +121,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..92aa467b364e 100644 --- a/platform/util/src/com/intellij/util/ui/MouseEventHandler.java +++ b/platform/util/src/com/intellij/util/ui/MouseEventHandler.java @@ -15,12 +15,14 @@ */ 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 MouseListener, MouseInputListener, + MouseMotionListener, MouseWheelListener { protected abstract void handle(MouseEvent event); @Override @@ -62,4 +64,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(); + } + }; } From 78a7a9a95fa167ca15e0c5bb142c3b05c655afb3 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 28 Sep 2016 18:48:54 +0200 Subject: [PATCH 08/69] switch highlight level to warning in tests if default was INFORMATION --- .../src/com/siyeh/ig/LightInspectionTestCase.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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(); From 01f8d3e1ccfc53532be7bd84ed8d0a1c25020fd7 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 28 Sep 2016 19:46:54 +0300 Subject: [PATCH 09/69] use LinkedList instead of Stack --- .../debugger/actions/JavaSmartStepIntoHandler.java | 11 ++++++----- .../com/intellij/debugger/jdi/LocalVariablesUtil.java | 4 +--- 2 files changed, 7 insertions(+), 8 deletions(-) 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) { From f99d56daeb9acf8ffe7acf50b3a56778cd8c9021 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 28 Sep 2016 19:05:00 +0200 Subject: [PATCH 10/69] IG: detect static contexts correctly in "Local variable hides field" inspection (IDEA-161697) --- .../siyeh/InspectionGadgetsBundle.properties | 6 ++- ...bleHidingMemberVariableInspectionBase.java | 29 +++++++---- .../LocalVariableHidingMemberVariable.html | 6 ++- .../LocalVariableHidingMemberVariable.java | 52 +++++++++++++++++++ .../LocalVariableHidingMemberVariable2.java | 52 +++++++++++++++++++ ...bleHidingMemberVariableInspectionTest.java | 9 +++- 6 files changed, 139 insertions(+), 15 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/visibility/local_variable_hiding_member_variable/LocalVariableHidingMemberVariable2.java 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/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/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/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/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() { From 1ada8ba1b3a78462acc25160b43d16573ab80419 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 28 Sep 2016 20:29:12 +0300 Subject: [PATCH 11/69] remove redundant getName-s for QuickFix inheritors --- .../AnonymousCanBeLambdaInspection.java | 8 +------- .../AnonymousCanBeMethodReferenceInspection.java | 10 ++-------- .../ExplicitTypeCanBeDiamondInspection.java | 8 +------- .../LambdaCanBeMethodReferenceInspection.java | 8 +------- .../PossibleHeapPollutionVarargsInspection.java | 16 ++-------------- .../RedundantLambdaCodeBlockInspection.java | 8 +------- .../codeInspection/RemoveAnnotationQuickFix.java | 8 +------- .../canBeFinal/CanBeFinalInspection.java | 8 +------- .../dataFlow/DataFlowInspectionBase.java | 8 +------- .../localCanBeFinal/LocalCanBeFinal.java | 8 +------- .../RedundantTypeArgsInspection.java | 16 ++-------------- .../nullable/ChangeNullableDefaultsFix.java | 8 +------- .../redundantCast/RedundantCastInspection.java | 8 +------- .../UnnecessaryModuleDependencyInspection.java | 8 +------- .../unneededThrows/RedundantThrows.java | 8 +------- .../UnusedLibrariesInspection.java | 8 +------- .../DefaultAnnotationParamInspection.java | 9 +-------- .../codeInspection/RemoveInitializerFix.java | 8 +------- .../deadCode/UnusedParametersInspection.java | 8 +------- .../DefaultFileTemplateUsageInspection.java | 8 +------- .../ReplaceWithFileTemplateFix.java | 8 +------- .../emptyMethod/EmptyMethodInspection.java | 8 +------- .../equalsAndHashcode/EqualsAndHashcode.java | 8 +------- .../javaDoc/JavaDocReferenceInspection.java | 8 +------- .../magicConstant/MagicConstantInspection.java | 8 +------- .../RedundantArrayForVarargsCallInspection.java | 6 ------ .../SillyAssignmentInspection.java | 9 +-------- .../unusedReturnValue/UnusedReturnValue.java | 8 +------- .../BaseConvertToLocalQuickFix.java | 8 +------- .../JsonStandardComplianceInspection.java | 8 +------- .../codeInspection/LossyEncodingInspection.java | 8 +------- .../ProblematicWhitespaceInspection.java | 8 +------- .../OverlyStrongTypeCastInspection.java | 7 +------ .../AssignmentUsedAsConditionInspection.java | 8 +------- .../PointlessBitwiseExpressionInspection.java | 7 +------ .../ig/bugs/ClassNewInstanceInspection.java | 8 +------- .../ig/bugs/EmptyInitializerInspection.java | 7 +------ ...nnerClassReferencedViaSubclassInspection.java | 7 +------ .../ig/bugs/MathRandomCastToIntInspection.java | 5 ----- ...ewStringBufferWithCharArgumentInspection.java | 7 +------ .../bugs/NonShortCircuitBooleanInspection.java | 8 +------- .../ig/bugs/StaticCallOnSubclassInspection.java | 7 +------ ...StaticFieldReferenceOnSubclassInspection.java | 7 +------ .../classlayout/ClassInitializerInspection.java | 8 +------- .../ClassMayBeInterfaceInspection.java | 7 +------ .../UtilityClassCanBeEnumInspection.java | 8 +------- ...CloneDeclaresCloneNotSupportedInspection.java | 7 +------ .../CloneableImplementsCloneInspection.java | 7 +------ ...leanExpressionMayBeConditionalInspection.java | 8 +------- .../ig/controlflow/ConfusingElseInspection.java | 7 +------ .../ConstantConditionalExpressionInspection.java | 8 +------- .../ConstantIfStatementInspection.java | 7 +------ .../ig/controlflow/DoubleNegationInspection.java | 7 +------ .../FallthruInSwitchStatementInspection.java | 7 +------ .../ForLoopReplaceableByWhileInspection.java | 8 +------- .../IfMayBeConditionalInspection.java | 8 +------- ...StatementWithIdenticalBranchesInspection.java | 8 +------- ...thImplicitTerminationConditionInspection.java | 7 +------ .../NegatedConditionalExpressionInspection.java | 8 +------- .../NegatedConditionalInspection.java | 7 +------ .../NegatedEqualityExpressionInspection.java | 8 +------- .../ig/controlflow/NegatedIfElseInspection.java | 8 +------- .../PointlessBooleanExpressionInspection.java | 7 +------ .../SimplifiableBooleanExpressionInspection.java | 9 +-------- ...plifiableConditionalExpressionInspection.java | 8 +------- .../ig/controlflow/TrivialIfInspection.java | 7 +------ ...necessaryConditionalExpressionInspection.java | 7 +------ ...necessaryLabelOnBreakStatementInspection.java | 7 +------ ...essaryLabelOnContinueStatementInspection.java | 7 +------ .../EmptyCatchBlockInspectionBase.java | 7 +------ .../EmptyFinallyBlockInspection.java | 14 ++------------ .../ig/errorhandling/NullThrownInspection.java | 7 +------ .../FinalizeNotProtectedInspection.java | 7 +------ .../siyeh/ig/fixes/AddSerialVersionUIDFix.java | 8 +------- .../com/siyeh/ig/fixes/AddThisQualifierFix.java | 7 +------ .../ig/fixes/ConvertToVarargsMethodFix.java | 8 +------- .../src/com/siyeh/ig/fixes/DeleteImportFix.java | 8 +------- .../com/siyeh/ig/fixes/EqualityToEqualsFix.java | 6 ------ .../ExtractParameterAsLocalVariableFix.java | 8 +------- .../ig/fixes/MakeInitializerExplicitFix.java | 7 +------ .../siyeh/ig/fixes/NormalizeDeclarationFix.java | 7 +------ .../ig/imports/StaticImportInspectionBase.java | 7 +------ ...tMethodOverridesAbstractMethodInspection.java | 8 +------- .../MissingOverrideAnnotationInspection.java | 7 +------ .../RedundantMethodOverrideInspection.java | 7 +------ ...TypeParameterExtendsFinalClassInspection.java | 7 +------ .../DoubleBraceInitializationInspection.java | 8 +------- .../MultiplyOrDivideByPowerOfTwoInspection.java | 7 +------ .../j2me/SimplifiableIfStatementInspection.java | 7 +------ .../SingleCharacterStartsWithInspection.java | 7 +------ .../ClassWithoutConstructorInspection.java | 8 +------- .../ig/javadoc/DanglingJavadocInspection.java | 16 ++-------------- .../HtmlTagCanBeJavadocTagInspection.java | 7 +------ .../MissingDeprecatedAnnotationInspection.java | 8 +------- .../javadoc/UnnecessaryInheritDocInspection.java | 7 +------ .../com/siyeh/ig/jdk/AutoBoxingInspection.java | 8 +------- .../com/siyeh/ig/jdk/AutoUnboxingInspection.java | 7 +------ .../siyeh/ig/jdk/ForeachStatementInspection.java | 7 +------ .../siyeh/ig/jdk/VarargParameterInspection.java | 8 +------- .../AssertEqualsCalledOnArrayInspection.java | 8 +------- .../AssertEqualsMayBeAssertSameInspection.java | 8 +------- ...deredAssertEqualsArgumentsInspectionBase.java | 7 +------ ...ExceptionsDeclaredOnTestMethodInspection.java | 8 +------- .../SimplifiableJUnitAssertionInspection.java | 8 +------- .../ig/junit/UseOfObsoleteAssertInspection.java | 9 +-------- ...ementGuardedByLogConditionInspectionBase.java | 8 +------- ...atenationArgumentToLogCallInspectionBase.java | 7 +------ .../memory/InnerClassMayBeStaticInspection.java | 6 ------ .../BigDecimalLegacyMethodInspection.java | 8 +------- ...EqualsReplaceableByObjectsCallInspection.java | 8 +------- .../ig/migration/IfCanBeSwitchInspection.java | 8 +------- .../IndexOfReplaceableByContainsInspection.java | 9 +-------- ...fferReplaceableByStringBuilderInspection.java | 8 +------- ...ryFinallyCanBeTryWithResourcesInspection.java | 7 +------ .../TryWithIdenticalCatchesInspection.java | 8 +------- .../migration/UnnecessaryBoxingInspection.java | 7 +------ .../migration/UnnecessaryUnboxingInspection.java | 8 +------- .../ig/numeric/BigDecimalEqualsInspection.java | 7 +------ .../CharUsedInArithmeticContextInspection.java | 7 +------ .../ig/numeric/ComparisonToNaNInspection.java | 7 +------ .../ConfusingFloatingPointLiteralInspection.java | 6 ------ .../ig/numeric/ConstantMathCallInspection.java | 7 +------ .../numeric/ConvertOctalLiteralToDecimalFix.java | 8 +------- ...ngLiteralsEndingWithLowercaseLInspection.java | 7 +------ .../NonReproducibleMathCallInspection.java | 7 +------ .../PointlessArithmeticExpressionInspection.java | 7 +------ .../siyeh/ig/numeric/RemoveLeadingZeroFix.java | 8 +------- .../siyeh/ig/numeric/UnaryPlusInspection.java | 9 +-------- ...UnnecessaryExplicitNumericCastInspection.java | 7 +------ .../numeric/UnnecessaryUnaryMinusInspection.java | 7 +------ .../BooleanConstructorInspection.java | 8 +------- .../performance/BoxingBoxedValueInspection.java | 8 +------- .../ConstantStringInternInspection.java | 7 +------ ...ntiatingObjectToGetClassObjectInspection.java | 8 +------- .../KeySetIterationMayUseEntrySetInspection.java | 7 +------ .../LengthOneStringInIndexOfInspection.java | 7 +------ ...engthOneStringsInConcatenationInspection.java | 8 +------- .../performance/ManualArrayCopyInspection.java | 7 +------ .../ManualArrayToCollectionCopyInspection.java | 8 +------- .../RandomDoubleForRandomIntegerInspection.java | 8 +------- .../RedundantStringFormatCallInspection.java | 7 +------ ...gBufferToStringInConcatenationInspection.java | 7 +------ ...nationInsideStringBufferAppendInspection.java | 7 +------ .../ig/performance/StringToStringInspection.java | 8 +------- .../ig/performance/SubstringZeroInspection.java | 8 +------- .../ig/performance/TailRecursionInspection.java | 8 +------- .../ig/redundancy/UnusedLabelInspection.java | 7 +------ .../AutoCloseableResourceInspectionBase.java | 9 +-------- ...zableWithSerialVersionUIDFieldInspection.java | 7 +------ ...SerialVersionUIDNotStaticFinalInspection.java | 7 +------ ...entFieldInNonSerializableClassInspection.java | 7 +------ .../style/CStyleArrayDeclarationInspection.java | 7 +------ ...gConcatCanBeReplacedByOperatorInspection.java | 8 +------- .../ConstantOnLHSOfComparisonInspection.java | 8 +------- .../ConstantOnRHSOfComparisonInspection.java | 7 +------ .../EqualsCalledOnEnumConstantInspection.java | 7 +------ .../siyeh/ig/style/ExtendsObjectInspection.java | 7 +------ .../ig/style/ImplicitCallToSuperInspection.java | 8 +------- ...stIndexOfReplaceableByContainsInspection.java | 7 +------ .../LiteralAsArgToStringEqualsInspection.java | 7 +------ .../ig/style/MissortedModifiersInspection.java | 7 +------ .../RedundantFieldInitializationInspection.java | 8 +------- .../ig/style/RedundantImplementsInspection.java | 7 +------ .../style/SimplifiableAnnotationInspection.java | 8 +------- .../SizeReplaceableByIsEmptyInspectionBase.java | 7 +------ .../TypeParameterExtendsObjectInspection.java | 8 +------- .../style/UnclearBinaryExpressionInspection.java | 7 +------ ...arilyQualifiedInnerClassAccessInspection.java | 7 +------ ...ecessarilyQualifiedStaticUsageInspection.java | 8 +------- ...ifiedStaticallyImportedElementInspection.java | 7 +------ .../UnnecessaryBlockStatementInspection.java | 8 +------- .../style/UnnecessaryConstructorInspection.java | 8 +------- .../style/UnnecessaryParenthesesInspection.java | 7 +------ .../UnnecessaryQualifierForThisInspection.java | 8 +------- .../ig/style/UnnecessarySemicolonInspection.java | 7 +------ .../UnnecessarySuperConstructorInspection.java | 7 +------ .../UnnecessarySuperQualifierInspection.java | 5 ----- .../ig/style/UnnecessaryThisInspection.java | 8 +------- .../ig/threading/ConditionSignalInspection.java | 8 +------- .../MethodMayBeSynchronizedInspection.java | 8 +------- .../ig/threading/ObjectNotifyInspection.java | 7 +------ .../threading/SynchronizedMethodInspection.java | 7 +------ .../siyeh/ig/threading/ThreadRunInspection.java | 8 +------- .../AmbiguousFieldAccessInspection.java | 8 +------- .../AmbiguousMethodCallInspection.java | 7 +------ ...StaticMethodOnlyUsedInOneClassInspection.java | 7 +------ .../asserttoif/AssertionCanBeIfInspection.java | 9 +-------- .../asserttoif/IfCanBeAssertionInspection.java | 9 +-------- .../ProtectedMemberInFinalClassInspection.java | 7 +------ .../classlayout/PublicConstructorInspection.java | 8 +------- ...ClassWithoutPrivateConstructorInspection.java | 15 ++------------- .../dataflow/ReuseOfLocalVariableInspection.java | 8 +------- .../errorhandling/TooBroadCatchInspection.java | 8 +------- .../UnnecessaryInitCauseInspection.java | 9 +-------- .../MultiCatchCanBeSplitInspection.java | 9 +-------- ...StatementWithMultipleResourcesInspection.java | 9 +-------- .../src/com/siyeh/ig/fixes/ExtractMethodFix.java | 8 +------- .../com/siyeh/ig/fixes/InlineVariableFix.java | 7 +------ .../com/siyeh/ig/fixes/IntroduceConstantFix.java | 7 +------ .../src/com/siyeh/ig/fixes/MoveClassFix.java | 7 +------ .../ReplaceInheritanceWithDelegationFix.java | 7 +------ .../siyeh/ig/fixes/SuppressForTestsScopeFix.java | 8 +------- ...onThreadSafeLazyInitializationInspection.java | 8 +------- .../ig/javadoc/MissingPackageInfoInspection.java | 8 +------- ...PackageDotHtmlMayBePackageInfoInspection.java | 15 ++------------- .../EnumerationCanBeIterationInspection.java | 7 +------ .../ig/migration/ForCanBeForeachInspection.java | 6 ------ .../migration/WhileCanBeForeachInspection.java | 7 +------ .../MethodNameSameAsClassNameInspection.java | 8 +------- ...exReplaceableByCompiledPatternInspection.java | 7 +------ ...allWithZeroLengthArrayArgumentInspection.java | 8 +------- ...eWithoutPublicNoArgConstructorInspection.java | 8 +------- ...lacedWithExplicitTypeArgumentsInspection.java | 9 +-------- .../LambdaBodyCanBeCodeBlockInspection.java | 9 +-------- ...mbdaCanBeReplacedWithAnonymousInspection.java | 9 +-------- ...thodRefCanBeReplacedWithLambdaInspection.java | 9 +-------- .../UnqualifiedInnerClassAccessInspection.java | 7 +------ .../intelliLang/pattern/PatternValidator.java | 8 +------- .../plugins/intelliLang/util/AnnotateFix.java | 7 +------ .../src/inspections/PluginXmlDomInspection.java | 9 +-------- .../src/inspections/quickfix/AddWithTagFix.java | 8 +------- .../quickfix/CreateConstructorFix.java | 7 +------ .../style/GrUnnecessarySemicolonInspection.java | 9 +-------- .../DuplicateStringLiteralInspection.java | 8 +------- .../codeInspection/i18n/I18nInspection.java | 8 +------- .../codeInspection/i18n/I18nizeQuickFix.java | 8 +------- .../TrailingSpacesInPropertyInspection.java | 7 +------ .../lang/properties/RemovePropertyLocalFix.java | 7 +------ .../ConvertOldAnnotationInspection.java | 7 +------ .../testng/inspection/JUnitConvertTool.java | 7 +------ .../xpath/xslt/quickfix/DownloadResourceFix.java | 8 +------- .../ConfigureTemplateDirectoriesAction.java | 8 +------- .../PyPackageRequirementsInspection.java | 16 ++-------------- .../inspections/PyPep8NamingInspection.java | 8 +------- .../PyUnusedLocalInspectionVisitor.java | 7 +------ .../quickfix/AddCallSuperQuickFix.java | 8 +------- .../quickfix/AddEncodingQuickFix.java | 8 +------- .../inspections/quickfix/AddGlobalQuickFix.java | 8 +------- .../quickfix/AugmentedAssignmentQuickFix.java | 7 +------ .../quickfix/ChainedComparisonsQuickFix.java | 7 +------ .../quickfix/ComparisonWithNoneQuickFix.java | 7 +------ .../quickfix/CompatibilityPrintCallQuickFix.java | 7 +------ .../quickfix/ConvertDocstringQuickFix.java | 7 +------ .../quickfix/DictCreationQuickFix.java | 8 +------- .../quickfix/ListCreationQuickFix.java | 7 +------ .../quickfix/MoveFromFutureImportQuickFix.java | 8 +------- .../PyAddExceptionSuperClassQuickFix.java | 7 +------ .../inspections/quickfix/PyAddImportFix.java | 8 +------- .../quickfix/PyAddPropertyForFieldQuickFix.java | 8 +------- .../quickfix/PyAddSpecifierToFormatQuickFix.java | 8 +------- .../quickfix/PyChangeBaseClassQuickFix.java | 8 +------- .../quickfix/PyChangeSignatureQuickFix.java | 8 +------- .../quickfix/PyConvertToNewStyleQuickFix.java | 8 +------- .../quickfix/PyCreatePropertyQuickFix.java | 8 +------- .../quickfix/PyDefaultArgumentQuickFix.java | 8 +------- .../PyMakeFunctionFromMethodQuickFix.java | 8 +------- .../quickfix/PyMakeMethodStaticQuickFix.java | 8 +------- .../quickfix/PyMoveAttributeToInitQuickFix.java | 8 +------- .../quickfix/PyMoveExceptQuickFix.java | 8 +------- .../quickfix/PyRemoveArgumentQuickFix.java | 8 +------- .../quickfix/PyRemoveAssignmentQuickFix.java | 7 +------ .../quickfix/PyRemoveCallQuickFix.java | 7 +------ .../quickfix/PyRemoveDictKeyQuickFix.java | 8 +------- .../quickfix/PyRemoveParameterQuickFix.java | 8 +------- .../quickfix/PyRemoveStatementQuickFix.java | 7 +------ ...moveUnderscoresInNumericLiteralsQuickFix.java | 9 +-------- .../quickfix/PyRenameArgumentQuickFix.java | 8 +------- .../quickfix/PyReplaceTupleWithListQuickFix.java | 8 +------- .../PyUpdatePropertySignatureQuickFix.java | 7 +------ .../quickfix/PyWrapInExceptionQuickFix.java | 7 +------ .../quickfix/RedundantParenthesesQuickFix.java | 7 +------ .../RemoveArgumentEqualDefaultQuickFix.java | 7 +------ .../quickfix/RemoveDecoratorQuickFix.java | 7 +------ .../quickfix/RemoveTrailingLQuickFix.java | 7 +------ .../RemoveTrailingSemicolonQuickFix.java | 7 +------ .../RemoveUnnecessaryBackslashQuickFix.java | 7 +------ .../ReplaceBackquoteExpressionQuickFix.java | 7 +------ .../quickfix/ReplaceExceptPartQuickFix.java | 7 +------ .../ReplaceFunctionWithSetLiteralQuickFix.java | 8 +------- .../ReplaceListComprehensionsQuickFix.java | 7 +------ .../quickfix/ReplaceNotEqOperatorQuickFix.java | 7 +------ .../ReplaceOctalNumericLiteralQuickFix.java | 7 +------ .../quickfix/ReplaceRaiseStatementQuickFix.java | 7 +------ .../StatementEffectFunctionCallQuickFix.java | 7 +------ ...StatementEffectIntroduceVariableQuickFix.java | 8 +------- .../quickfix/TransformClassicClassQuickFix.java | 7 +------ .../UnresolvedRefAddFutureImportQuickFix.java | 7 +------ .../UnresolvedRefCreateFunctionQuickFix.java | 7 +------ .../intellij/xml/util/AddDtdDeclarationFix.java | 8 +------- .../inspections/UnusedDefineInspection.java | 8 +------- .../htmlInspections/SwitchToHtml5Action.java | 8 +------- .../XmlWrongRootElementInspection.java | 8 +------- .../xml/util/CheckEmptyTagInspection.java | 9 +-------- .../intellij/xml/util/CollapseTagIntention.java | 8 +------- .../xml/util/XmlDeclareIdInCommentAction.java | 8 +------- 295 files changed, 296 insertions(+), 1997 deletions(-) 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/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/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/dataFlow/DataFlowInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java index 548e0dea874a..6ca88c6ea678 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(); - } } 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/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/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..1a1cd17b857b 100644 --- a/java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java @@ -352,7 +352,7 @@ public class EmptyMethodInspection extends GlobalJavaBatchInspectionTool { @Override @NotNull - public String getName() { + public String getFamilyName() { return QUICK_FIX_NAME; } @@ -361,12 +361,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/javaDoc/JavaDocReferenceInspection.java b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspection.java index 816a191b3a6b..4860cfa1949c 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 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/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/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/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/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/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/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..9da2221ffc54 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 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/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..39b6209e6444 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 { 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/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/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/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/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/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/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/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/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/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/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/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/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/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java b/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java index dfa4609f8ad0..8e1023e8c84b 100644 --- a/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java @@ -418,17 +418,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 +457,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..678a3cbca9c6 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 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/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/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/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/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/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/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 From 59c29e8ac1fe1091f6c1c4de3e142257aef5605f Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Wed, 28 Sep 2016 19:12:56 +0300 Subject: [PATCH 12/69] PY-18788 Remove redundant test as we first need to improve annotation parsing Specifically, we need to be able to parse annotations in text form and recognize those names that require additional import from "typing" module. Current implementation of PyTypeParser is not capable of that, since it omits types which names cannot be resolved in the context surrounding the type hint. This test was added preemptively, but it's going to take longer than expected to fix the problem, because we want to implement the aforementioned improvement in PyTypeParser as part of storing type annotations in stub files (see PY-18816). --- .../PyAnnotateTypesIntentionTest.java | 30 ------------------- 1 file changed, 30 deletions(-) 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); From e612272559ff7cc5dc0e9f9642717d00952259f0 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Wed, 28 Sep 2016 20:06:02 +0300 Subject: [PATCH 13/69] Fix test: when sorting import candidates use qualified names as tie breaker if lengths of both qualified names are the same. Previously their order and hence the candidate selected in tests were unpredictable due to this flaw. --- .../imports/ImportCandidateHolder.java | 17 ++++++++++------- .../main_after.py | 2 +- .../quickFixes/AddImportQuickFixTest.java | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) 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/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/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; }); } From c8b4d75c1b2b5dbb1d4188c4ce520e42ce983604 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 28 Sep 2016 19:13:45 +0200 Subject: [PATCH 14/69] testdata fixed --- .../execution/junit/JUnitTreeByDescriptionHierarchyTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 6aac6346c7be7dcd41ba3d553040c0c35c016e10 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Wed, 28 Sep 2016 19:52:28 +0200 Subject: [PATCH 15/69] Hide all windows should be passed to the IDE in terminal (IDEA-160742) --- .../src/org/jetbrains/plugins/terminal/JBTerminalPanel.java | 1 + 1 file changed, 1 insertion(+) 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", From ab70f861029de67ef35be603eb02d8fa58da3b64 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 28 Sep 2016 21:03:01 +0300 Subject: [PATCH 16/69] remove redundant getName-s for QuickFix inheritors (update) --- .../BlockMarkerCommentsInspection.java | 6 ------ .../TrivialMethodReferenceInspection.java | 7 ------- .../dataFlow/DfaOptionalSupport.java | 7 ------- .../java18api/Java8CollectionsApiInspection.java | 14 -------------- ...dAllCanBeReplacedWithConstructorInspection.java | 7 ------- ...taticPseudoFunctionalStyleMethodInspection.java | 7 ------- .../RedundantLambdaParameterTypeInspection.java | 7 ------- .../MigrateAssertToMatcherAssertInspection.java | 7 ------- .../InconsistentLineSeparatorsInspection.java | 6 ------ .../OfflineDescriptorResolveResult.java | 7 ------- .../src/com/siyeh/ig/fixes/InlineCallFix.java | 6 ------ .../maturity/SuppressionAnnotationInspection.java | 6 ------ .../SuspiciousLocalesLanguagesInspection.java | 7 ------- .../PropertiesInspectionSuppressor.java | 13 ------------- .../AlphaUnsortedPropertiesFileInspection.java | 7 ------- .../unused/UnusedPropertyInspection.java | 7 ------- .../incomplete/IncompletePropertyInspection.java | 7 ------- .../inspection/UndeclaredTestInspection.java | 5 ----- .../analysis/CreateNSDeclarationIntentionFix.java | 6 ------ 19 files changed, 139 deletions(-) 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/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/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-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/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/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/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/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/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/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/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/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/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/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/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/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/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() { From 26c692ef769c1b3ac2409953c529169794f0d701 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 28 Sep 2016 19:28:32 +0200 Subject: [PATCH 17/69] IG: "the" -> "a" in description --- .../inspectionDescriptions/EqualsReplaceableByObjectsCall.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From d348e0bf854aa452e9606e87ed9c870e89b65e3c Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 28 Sep 2016 20:13:19 +0200 Subject: [PATCH 18/69] EA-89119 (assert: BaseInspectionVisitor.registerErrorAtOffset) --- .../ig/numeric/SuspiciousLiteralUnderscoreInspection.java | 6 +++++- .../SuspiciousLiteralUnderscore.java | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) 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/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; From a4dea3ee1697e3c8de11f93ce453d8814d93d0a3 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Wed, 28 Sep 2016 21:11:09 +0300 Subject: [PATCH 19/69] IDEA-158500: remove unneeded listeners, which are accessible via MouseAdapter --- platform/util/src/com/intellij/util/ui/MouseEventAdapter.java | 3 +-- platform/util/src/com/intellij/util/ui/MouseEventHandler.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java index be9fe2bdad1d..f7c7b4745d24 100644 --- a/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java +++ b/platform/util/src/com/intellij/util/ui/MouseEventAdapter.java @@ -24,8 +24,7 @@ import java.awt.event.*; /** * @author Sergey.Malenkov */ -public class MouseEventAdapter extends MouseAdapter implements MouseListener, MouseInputListener, - MouseMotionListener, MouseWheelListener { +public class MouseEventAdapter extends MouseAdapter implements MouseInputListener { private final T myAdapter; public MouseEventAdapter(T adapter) { diff --git a/platform/util/src/com/intellij/util/ui/MouseEventHandler.java b/platform/util/src/com/intellij/util/ui/MouseEventHandler.java index 92aa467b364e..7e0da37c9e0f 100644 --- a/platform/util/src/com/intellij/util/ui/MouseEventHandler.java +++ b/platform/util/src/com/intellij/util/ui/MouseEventHandler.java @@ -21,8 +21,7 @@ import java.awt.event.*; /** * @author Sergey.Malenkov */ -public abstract class MouseEventHandler extends MouseAdapter implements MouseListener, MouseInputListener, - MouseMotionListener, MouseWheelListener { +public abstract class MouseEventHandler extends MouseAdapter implements MouseInputListener { protected abstract void handle(MouseEvent event); @Override From 4c2949717a6b3af5c4a6aeca54aec854351172dc Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 28 Sep 2016 20:56:42 +0200 Subject: [PATCH 20/69] EA-72276 (assert: PsiWalkingState.elementStarted) --- .../ig/junit/TestMethodWithoutAssertionInspectionBase.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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); } From 09bf7e131684188ef8c98076355724154c8e693a Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 28 Sep 2016 22:41:05 +0300 Subject: [PATCH 21/69] remove redundant getName-s for QuickFix inheritors (update 2) --- .../compiler/RemoveElementQuickFix.java | 6 ------ .../quickfix/CreateStaticMethodQuickFix.java | 6 ------ .../quickFix/CreateFieldOrPropertyFix.java | 6 ------ .../emptyMethod/EmptyMethodInspection.java | 6 ------ .../javaDoc/JavaDocReferenceInspection.java | 6 ------ .../src/com/siyeh/ig/DelegatingFix.java | 6 ------ .../inheritance/RefusedBequestInspection.java | 7 ------- .../inspections/SecondUnsafeCallQuickFix.java | 6 ------ .../confusing/GrPackageInspection.java | 6 ------ .../confusing/GrUnusedIncDecInspection.java | 18 ------------------ .../JavaFxUnusedImportsInspection.java | 5 ----- .../ConvertAnnotationInspection.java | 5 ----- .../inspection/ConvertJavadocInspection.java | 5 ----- .../learning/PyStudyInterpreterInspection.java | 5 ----- .../imports/OptimizeImportsQuickFix.java | 4 ---- .../PyChainedComparisonsInspection.java | 7 ------- .../inspections/PyInterpreterInspection.java | 5 ----- .../PyPackageRequirementsInspection.java | 11 ----------- .../inspections/PyPep8NamingInspection.java | 7 ------- .../quickfix/PyMakePublicQuickFix.java | 5 ----- .../quickfix/PyRenameElementQuickFix.java | 5 ----- .../PyRenameUnresolvedRefQuickFix.java | 6 ------ .../inspections/quickfix/ReformatFix.java | 6 ------ .../quickfix/RemoveTrailingBlankLinesFix.java | 6 ------ .../spellchecker/quickfixes/ChangeTo.java | 5 ----- .../spellchecker/quickfixes/RenameTo.java | 5 ----- .../RemoveExtraClosingTagIntentionAction.java | 6 ------ 27 files changed, 171 deletions(-) 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-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/emptyMethod/EmptyMethodInspection.java b/java/java-impl/src/com/intellij/codeInspection/emptyMethod/EmptyMethodInspection.java index 1a1cd17b857b..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() { 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 4860cfa1949c..e9b2536eac18 100644 --- a/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspection.java @@ -108,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/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/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/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/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/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/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/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/PyPackageRequirementsInspection.java b/python/src/com/jetbrains/python/inspections/PyPackageRequirementsInspection.java index 8e1023e8c84b..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; diff --git a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java index 678a3cbca9c6..38f91972e63a 100644 --- a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java @@ -317,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/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/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/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/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/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/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 From 7a577e49ee319a97461c6f88c0844262e91d7265 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 28 Sep 2016 23:10:53 +0300 Subject: [PATCH 22/69] allow plugin script engines --- .../Jsr223IdeScriptEngineManagerImpl.java | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) 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); } } From 32e9a7cc18f1690a33b0e04ec07259a8493e13e3 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Thu, 29 Sep 2016 02:44:02 +0300 Subject: [PATCH 23/69] [vcs-log] fix jumping root label in details --- .../com/intellij/vcs/log/ui/frame/CommitPanel.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) 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); } } From bcd702977739ef6793d680287453a927b3554078 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Wed, 28 Sep 2016 17:47:58 +0200 Subject: [PATCH 24/69] cleanup --- .../intellij/openapi/editor/colors/EditorColorsScheme.java | 2 +- .../editor/colors/EditorSchemeAttributeDescriptor.java | 6 ++++-- .../intellij/codeInspection/ex/SeverityEditorDialog.java | 6 ------ .../com/intellij/ide/todo/configurable/PatternDialog.java | 5 ----- .../openapi/editor/colors/impl/DelegateColorScheme.java | 2 +- .../src/com/intellij/openapi/editor/impl/EditorImpl.java | 2 +- .../plugins/terminal/JBTerminalSystemSettingsProvider.java | 2 +- 7 files changed, 8 insertions(+), 17 deletions(-) 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/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/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-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/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 58f601064188..ec6710050012 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 @@ -6364,7 +6364,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); } 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); } From e81fc858bcf33fcc2e9e7277e4766e32da720222 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 29 Sep 2016 07:54:43 +0200 Subject: [PATCH 25/69] do not write unmodified user copy of editor color scheme --- .../src/DirectoryBasedStorage.kt | 2 +- .../src/SchemeManagerImpl.kt | 92 +++++++-------- .../src/schemeLoader.kt | 40 +++++++ .../colors/impl/AbstractColorsScheme.java | 108 ++++++++++++------ .../colors/impl/DefaultColorsScheme.java | 8 +- .../colors/impl/EditorColorsSchemeImpl.java | 60 +++++----- .../options/colors/ColorAndFontOptions.java | 39 +++---- .../options/colors/SchemesPanel.java | 12 +- .../application/options/SaveSchemeDialog.java | 3 +- .../colors/impl/EditorColorsManagerImpl.java | 28 ++++- .../src/com/intellij/util/containers/util.kt | 11 +- .../configurationStore/scheme-impl.kt | 7 +- .../openapi/options/SchemeManager.java | 2 + 13 files changed, 258 insertions(+), 154 deletions(-) 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/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..12420c103d9c 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) { @@ -526,8 +528,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 +607,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); } @@ -676,9 +677,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 +704,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); @@ -857,12 +856,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 +870,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..e6d171104484 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,16 +29,24 @@ 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) { - if (attributes != getAttributes(key)) { - myAttributesMap.put(key, attributes); + public void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes) { + TextAttributes ownAttributes = getOwnAttributes(key); + if (ownAttributes != null && ownAttributes.equals(attributes)) { + return; } + TextAttributes parentAttributes = myParentScheme.getAttributes(key); + if (parentAttributes != null && parentAttributes.equals(attributes)) { + myAttributesMap.remove(key); + return; + } + + myAttributesMap.put(key, attributes); } @Override @@ -51,20 +57,30 @@ 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 +102,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/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/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/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/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/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(); From af13a22aec38b4c2f83a8ce838959a5897dfe2fe Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 29 Sep 2016 07:56:24 +0200 Subject: [PATCH 26/69] remove deprecated and unused DEFAULT_ERROR_STRIPE_COLOR --- .../openapi/editor/colors/impl/AbstractColorsScheme.java | 3 --- 1 file changed, 3 deletions(-) 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 12420c103d9c..02da28265790 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 @@ -431,9 +431,6 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme, Serial } } - @Deprecated - public static final Map DEFAULT_ERROR_STRIPE_COLOR = new THashMap<>(); - @SuppressWarnings("UseJBColor") private static final Map> DEFAULT_STRIPE_COLORS = new THashMap>() { { From bd5d0901fe2e26c2698f1d3814588e9462c0292e Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 29 Sep 2016 08:16:15 +0200 Subject: [PATCH 27/69] create Element only if need --- .../editor/colors/impl/AbstractColorsScheme.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) 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 02da28265790..b3ced38e3c07 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 @@ -640,10 +640,9 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme, Serial } } - 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(); @@ -651,20 +650,16 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme, Serial 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)); } } } From 8a44ee07b6e2278d5ca7a84b3790ca679b7a538e Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 29 Sep 2016 08:57:36 +0200 Subject: [PATCH 28/69] cleanup --- .../colors/impl/AbstractColorsScheme.java | 2 -- .../impl/EditorColorsSchemeImplTest.java | 23 +++++++------------ .../editor/EditorColorSchemeTestCase.java | 4 +--- 3 files changed, 9 insertions(+), 20 deletions(-) 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 b3ced38e3c07..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 @@ -792,7 +792,6 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme, Serial return getFallbackAttributes(fallbackKey.getFallbackAttributeKey()); } - /** * Looks for explicitly specified attributes either in the scheme or its parent scheme. No fallback keys are used. * @@ -808,7 +807,6 @@ public abstract class AbstractColorsScheme implements EditorColorsScheme, Serial return myParentScheme instanceof AbstractColorsScheme ? ((AbstractColorsScheme)myParentScheme).getDirectlyDefinedAttributes(key) : null; } - protected static boolean containsValue(@Nullable TextAttributes attributes) { return attributes != null && attributes.containsValue(); } 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/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(); From 767ede6af42260b2a282e42575ba816993842f8e Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 29 Sep 2016 09:10:49 +0200 Subject: [PATCH 29/69] =?UTF-8?q?revert=20EditorColorsSchemeImpl.setAttrib?= =?UTF-8?q?utes=20=E2=80=94=20doesn't=20help=20to=20fix=20"save=20unmodifi?= =?UTF-8?q?ed"=20and=20don't=20fix=20"remove=20unmodified"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/colors/impl/EditorColorsSchemeImpl.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) 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 e6d171104484..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 @@ -36,17 +36,9 @@ public class EditorColorsSchemeImpl extends AbstractColorsScheme implements Exte @Override public void setAttributes(@NotNull TextAttributesKey key, TextAttributes attributes) { - TextAttributes ownAttributes = getOwnAttributes(key); - if (ownAttributes != null && ownAttributes.equals(attributes)) { - return; + if (attributes != getAttributes(key)) { + myAttributesMap.put(key, attributes); } - TextAttributes parentAttributes = myParentScheme.getAttributes(key); - if (parentAttributes != null && parentAttributes.equals(attributes)) { - myAttributesMap.remove(key); - return; - } - - myAttributesMap.put(key, attributes); } @Override @@ -75,6 +67,7 @@ public class EditorColorsSchemeImpl extends AbstractColorsScheme implements Exte if (containsValue(attributes) && !attributes.isFallbackEnabled()) { return attributes; } + attributes = getFallbackAttributes(fallbackKey); if (containsValue(attributes)) { return attributes; From 6b53f1c71e8b3ac235cff5b700702d9f34cb4f70 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 29 Sep 2016 09:34:14 +0200 Subject: [PATCH 30/69] run test on unnamed element in editor: choose element at caret in addition to data context retrieval (IDEA-159387) --- ...ractPatternBasedConfigurationProducer.java | 16 +++++++--- .../junit/JUnitRerunFailedTestsTest.java | 32 ++++++++++++++++++- 2 files changed, 43 insertions(+), 5 deletions(-) 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 AbstractPatternBasedConfigurationProducer} 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 From 1d6f2daa8d789548ea2d9f5199be865149b683b9 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 29 Sep 2016 10:57:29 +0300 Subject: [PATCH 31/69] IDEA-161410 Quick Documentation: double opening angle brackets are printed as single brackets --- .../lang/java/JavaDocumentationProvider.java | 13 ++++++- .../codeInsight/javadocIG/doubleLt.html | 3 ++ .../codeInsight/javadocIG/doubleLt.java | 4 +++ .../javadoc/JavaDocInfoGeneratorTest.java | 16 +++++++-- .../PlatformDocumentationUtil.java | 34 +++---------------- 5 files changed, 37 insertions(+), 33 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/doubleLt.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/doubleLt.java 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-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/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/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java b/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java index 895aca00ef71..4dcc0ed67262 100644 --- a/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java +++ b/platform/core-impl/src/com/intellij/codeInsight/documentation/PlatformDocumentationUtil.java @@ -25,17 +25,13 @@ 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 ourLtFixupPattern = Pattern.compile("<(?=[^/!\\p{Alpha}])"); private static final @NonNls Pattern ourToQuote = Pattern.compile("[\\\\\\.\\^\\$\\?\\*\\+\\|\\)\\}\\]\\{\\(\\[]"); private static final @NonNls String LT_ENTITY = "<"; @@ -76,30 +72,10 @@ public class PlatformDocumentationUtil { 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); } } From 6423b64ba3cc45e2ec2552af720731eae5153ff0 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 29 Sep 2016 10:58:03 +0300 Subject: [PATCH 32/69] remove unused code from PlatformDocumentationUtil --- .../documentation/PlatformDocumentationUtil.java | 12 ------------ 1 file changed, 12 deletions(-) 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 4dcc0ed67262..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; @@ -29,10 +28,7 @@ import java.util.List; import java.util.regex.Pattern; public class PlatformDocumentationUtil { - private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.documentation.PlatformDocumentationUtil"); - private static final @NonNls Pattern ourLtFixupPattern = Pattern.compile("<(?=[^/!\\p{Alpha}])"); - private static final @NonNls Pattern ourToQuote = Pattern.compile("[\\\\\\.\\^\\$\\?\\*\\+\\|\\)\\}\\]\\{\\(\\[]"); private static final @NonNls String LT_ENTITY = "<"; @Nullable @@ -64,14 +60,6 @@ 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. */ From b962a9f417469d023d4ec58d28712e7242e364f9 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 29 Sep 2016 10:52:08 +0200 Subject: [PATCH 33/69] =?UTF-8?q?testClearAndPrintWhileAnotherClearExecuti?= =?UTF-8?q?on=20=E2=80=94=20set=20timeout=20to=2030=20seconds?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/intellij/execution/impl/ConsoleViewImplTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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..7293b63a113e 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java @@ -30,11 +30,15 @@ import com.intellij.testFramework.TestDataProvider; import com.intellij.util.Alarm; import com.intellij.util.TimeoutUtil; import com.intellij.util.ui.UIUtil; +import org.assertj.core.api.Assertions; import org.jetbrains.annotations.NotNull; 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 +121,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(); From b9a06d65b93c91c3c4b830ec308710dde8cac1b1 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Thu, 29 Sep 2016 15:45:44 +0700 Subject: [PATCH 34/69] IDEA-161861 Stream API migration should handle cases where result variable is not declared just before the for loop --- .../streamMigration/MigrateToStreamFix.java | 29 ++++- .../ReplaceWithCollectFix.java | 26 +++-- .../ReplaceWithFindFirstFix.java | 10 +- .../streamMigration/ReplaceWithMatchFix.java | 8 +- .../StreamApiMigrationInspection.java | 69 ++++++++--- .../psi/controlFlow/ControlFlowUtil.java | 109 +++++++++++++++++- .../afterAnyMatchAssignment.java | 2 +- .../afterAnyMatchAssignmentBoolean.java | 2 +- ...fterAnyMatchAssignmentBooleanInverted.java | 2 +- .../afterAnyMatchAssignmentExtraCode.java | 14 +++ .../afterAnyMatchAssignmentNonTrivial.java | 7 +- ...nyMatchAssignmentNonTrivialUnassigned.java | 15 +++ .../afterAnyMatchAssignmentTryCatch.java | 16 +++ .../afterAnyMatchAssignmentTryCatch2.java | 16 +++ .../afterArrayFilterCollect.java | 2 +- .../afterArrayListVariableType.java | 2 +- .../streamApiMigration/afterCastExpected.java | 2 +- .../afterCollectArrayList.java | 2 +- .../afterCollectArrayListAndFilter.java | 2 +- .../afterCollectArrayListCollection.java | 2 +- .../afterCollectArrayListComment.java | 2 +- .../afterCollectArrayListLambda.java | 2 +- .../streamApiMigration/afterCollectBoxed.java | 2 +- .../afterCollectHashSet.java | 2 +- .../afterCollectInterrupted.java | 17 +++ .../afterCollectInterruptedInLoop.java | 18 +++ .../afterCollectInterruptedUpdated.java | 17 +++ .../afterCollectInterruptedUsed.java | 19 +++ .../afterCollectLinkedHashSet.java | 2 +- .../streamApiMigration/afterCollectToObj.java | 2 +- .../afterContinueNested.java | 2 +- .../afterContinueNestedElse.java | 2 +- ...lterFlatMapCollectionFilterMapCollect.java | 2 +- .../afterFilterFlatMapMapFilterCollect.java | 2 +- .../afterFilterMapFlatMapArrayCollect.java | 2 +- .../afterFindFirstAssignment.java | 2 +- .../afterFindFirstAssignmentCast.java | 2 +- .../afterFindFirstAssignmentInterrupted.java | 18 +++ ...dFirstAssignmentUsedInSameDeclaration.java | 14 +++ .../afterFindFirstAssignmentWithLabel.java | 2 +- .../afterFlatten2DArray.java | 2 +- .../afterFlatten2DArrayPrimitive.java | 2 +- .../afterSumInterruptedUnused.java | 15 +++ .../afterSumInterruptedUsed.java | 15 +++ .../beforeAnyMatchAssignmentExtraCode.java | 20 ++++ .../beforeAnyMatchAssignmentNonTrivial.java | 1 + ...nyMatchAssignmentNonTrivialUnassigned.java | 21 ++++ .../beforeAnyMatchAssignmentTryCatch.java | 22 ++++ .../beforeAnyMatchAssignmentTryCatch2.java | 22 ++++ .../beforeCollectInterrupted.java | 18 +++ .../beforeCollectInterruptedInLoop.java | 20 ++++ .../beforeCollectInterruptedUpdated.java | 19 +++ .../beforeCollectInterruptedUsed.java | 20 ++++ .../beforeFindFirstAssignmentInterrupted.java | 22 ++++ ...dFirstAssignmentUsedInSameDeclaration.java | 18 +++ .../beforeSumInterruptedUnused.java | 22 ++++ .../beforeSumInterruptedUsed.java | 22 ++++ 57 files changed, 681 insertions(+), 68 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentExtraCode.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentNonTrivialUnassigned.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterAnyMatchAssignmentTryCatch2.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterrupted.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedInLoop.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUpdated.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterCollectInterruptedUsed.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentInterrupted.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstAssignmentUsedInSameDeclaration.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUnused.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterSumInterruptedUsed.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentExtraCode.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentNonTrivialUnassigned.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeAnyMatchAssignmentTryCatch2.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterrupted.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedInLoop.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUpdated.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeCollectInterruptedUsed.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentInterrupted.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstAssignmentUsedInSameDeclaration.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUnused.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeSumInterruptedUsed.java 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-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-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 From 53867e057facff4d40ebc418ffd6c5063d6e9661 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 11:31:20 +0200 Subject: [PATCH 35/69] IDEA-161862 Lambda Expressions not showing as implementations of an interface --- .../psi/impl/java/ReferenceChainLink.java | 9 +++++++-- .../ChainStartingWithConstructor.java | 17 +++++++++++++++++ .../lambda/FindFunctionalInterfaceTest.java | 5 +++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ChainStartingWithConstructor.java 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-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/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 { " + From 8444a2aed32faf76084d3560f7de88dd82409767 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 11:33:49 +0200 Subject: [PATCH 36/69] use default modality state in daemon with per-project modality --- .../intellij/codeInsight/daemon/impl/PassExecutorService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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() { From 35241551147867157a956437459827ab7f3d98f4 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 29 Sep 2016 12:41:45 +0300 Subject: [PATCH 37/69] EA-87030 - UOE: TextComponentScrollingModel.runActionOnScrollingFinished --- .../src/com/intellij/codeInsight/CodeInsightUtilBase.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); From 1f06fb3050979e71e7f807c97d3d70db1512e11c Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 29 Sep 2016 11:54:21 +0200 Subject: [PATCH 38/69] IDEA-CR-14137 cleanup --- .../testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java | 1 - 1 file changed, 1 deletion(-) 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 7293b63a113e..ad9405d4eb00 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java @@ -30,7 +30,6 @@ import com.intellij.testFramework.TestDataProvider; import com.intellij.util.Alarm; import com.intellij.util.TimeoutUtil; import com.intellij.util.ui.UIUtil; -import org.assertj.core.api.Assertions; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; From f612dde107636693384965f93eebe0b37b8f7bef Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Wed, 28 Sep 2016 20:55:08 +0300 Subject: [PATCH 39/69] Java inspection: Fixed computation of the upper bound of the copied region of the array in ManualArrayToCollectionCopyInspection, tests added (IDEA-157217) --- ...ManualArrayToCollectionCopyInspection.java | 133 ++++++++++++------ .../replace_with_add_all/ForAtoB.after.java | 7 + .../replace_with_add_all/ForAtoB.java | 9 ++ .../replace_with_add_all/MinusN.after.java | 11 ++ .../replace_with_add_all/MinusN.java | 13 ++ .../replace_with_add_all/MinusOne.after.java | 11 ++ .../replace_with_add_all/MinusOne.java | 13 ++ .../MinusOneAtoB.after.java | 11 ++ .../replace_with_add_all/MinusOneAtoB.java | 13 ++ .../replace_with_add_all/MinusTwo.after.java | 11 ++ .../replace_with_add_all/MinusTwo.java | 13 ++ .../MinusTwoAtoB.after.java | 11 ++ .../replace_with_add_all/MinusTwoAtoB.java | 13 ++ .../replace_with_add_all/Multiply.after.java | 7 + .../replace_with_add_all/Multiply.java | 9 ++ .../MultiplyLE.after.java | 7 + .../replace_with_add_all/MultiplyLE.java | 9 ++ .../replace_with_add_all/PlusN.after.java | 11 ++ .../replace_with_add_all/PlusN.java | 13 ++ .../replace_with_add_all/PlusOne.after.java | 11 ++ .../replace_with_add_all/PlusOne.java | 13 ++ .../PlusOneAtoB.after.java | 11 ++ .../replace_with_add_all/PlusOneAtoB.java | 13 ++ .../replace_with_add_all/PlusTwo.after.java | 11 ++ .../replace_with_add_all/PlusTwo.java | 13 ++ .../PlusTwoAtoB.after.java | 11 ++ .../replace_with_add_all/PlusTwoAtoB.java | 13 ++ .../replace_with_add_all/Shift.after.java | 7 + .../replace_with_add_all/Shift.java | 9 ++ .../replace_with_add_all/ShiftLE.after.java | 7 + .../replace_with_add_all/ShiftLE.java | 9 ++ .../replace_with_add_all/SimpleFor.after.java | 7 + .../replace_with_add_all/SimpleFor.java | 9 ++ .../SimpleForeach.after.java | 7 + .../replace_with_add_all/SimpleForeach.java | 9 ++ .../TempVarFor.after.java | 7 + .../replace_with_add_all/TempVarFor.java | 10 ++ .../replace_with_add_all/Unary.after.java | 7 + .../replace_with_add_all/Unary.java | 9 ++ .../replace_with_add_all/Unary2.after.java | 7 + .../replace_with_add_all/Unary2.java | 9 ++ .../replace_with_add_all/UnaryLE.after.java | 7 + .../replace_with_add_all/UnaryLE.java | 9 ++ .../ManualArrayToCollectionCopyFixTest.java | 63 +++++++++ 44 files changed, 573 insertions(+), 40 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ForAtoB.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusN.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOne.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusOneAtoB.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwo.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MinusTwoAtoB.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Multiply.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/MultiplyLE.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusN.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOne.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusOneAtoB.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwo.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/PlusTwoAtoB.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Shift.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/ShiftLE.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleFor.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/SimpleForeach.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/TempVarFor.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/Unary2.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/performance/replace_with_add_all/UnaryLE.java create mode 100644 plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/performance/ManualArrayToCollectionCopyFixTest.java 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 39b6209e6444..23e1a408d785 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java @@ -237,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; } @@ -251,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; } @@ -320,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)) { @@ -350,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/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/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(); } +} From 042375493510714baadf6de34e17d434a652186f Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 12:15:57 +0200 Subject: [PATCH 40/69] fix DomVirtualFileEventsTest blinking: don't let current dom be gc-ed --- .../tests/com/intellij/util/xml/DomVirtualFileEventsTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); From 0d0b8b0002cbbbdcc4299d353b106eae58201bd3 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 12:23:39 +0200 Subject: [PATCH 41/69] don't render import/completion excludes with * as red (IDEA-24615) --- .../com/intellij/application/options/editor/ExcludeTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From bc4c93c5a30a9591412bdd49015bc2677c30226a Mon Sep 17 00:00:00 2001 From: Artem Khvastunov Date: Thu, 29 Sep 2016 11:15:19 +0200 Subject: [PATCH 42/69] PHP Runtime --- .../client/node-rpc-client/node-rpc-client.iml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 @@ - + - + From 2c86a57f2078bae70bd2d8a9378f5a43dce34085 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 29 Sep 2016 13:35:31 +0300 Subject: [PATCH 43/69] accumulate and flush commands on startup: per-project command processor --- .../wm/impl/ToolWindowManagerImpl.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) 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); From 72f0e52faa46e43e46ab41605da0167cd53a0f7d Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 29 Sep 2016 12:50:24 +0200 Subject: [PATCH 44/69] Revert adding printenv to linux folder. --- bin/linux/printenv.py | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100755 bin/linux/printenv.py diff --git a/bin/linux/printenv.py b/bin/linux/printenv.py deleted file mode 100755 index a60959ca82eb..000000000000 --- a/bin/linux/printenv.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python - -# Dumps environment variables into specified file. -# Format: zero-separated "name=value" pairs in platform encoding. - -import os -import sys - -if len(sys.argv) != 2: - raise Exception('Exactly one argument expected') - -f = open(sys.argv[1], 'wb') -try: - for key, value in os.environ.items(): - s = '%s=%s\0' % (key, value) - f.write(s.encode('utf-8')) -finally: - f.close() From 496ee04e7b366b67ef41d9d01e176f8e5bd15db6 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 29 Sep 2016 12:31:59 +0200 Subject: [PATCH 45/69] junit 5: search for junit classes in library sources --- .../junit/src/com/intellij/execution/junit/TestClassFilter.java | 2 +- plugins/junit/src/com/intellij/execution/junit/TestPackage.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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); From beb3e5a439821dbbee21414dbe8cefd705131964 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 29 Sep 2016 12:40:59 +0200 Subject: [PATCH 46/69] junit 5: allow containers to fail (IDEA-158933; IDEA-161850) --- .../junit5/JUnit5TestExecutionListener.java | 17 +++-- .../com/intellij/junit5/JUnit5EventsTest.java | 66 ++++++++++++++++--- 2 files changed, 69 insertions(+), 14 deletions(-) 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(); }); + } } } From 8cc5b3711878fb1b431bdcbf0dccd34a51e20f50 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 12:57:18 +0200 Subject: [PATCH 47/69] reduce the number of LambdaUtil.findFunctionCandidates usages --- .../daemon/impl/analysis/LambdaHighlightingUtil.java | 7 ++----- java/java-psi-api/src/com/intellij/psi/LambdaUtil.java | 6 ++---- .../ig/bugs/CollectionQueryUpdateCalledVisitor.java | 10 ++-------- .../InterfaceMayBeAnnotatedFunctionalInspection.java | 10 ++-------- 4 files changed, 8 insertions(+), 25 deletions(-) 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-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index 38ece57ff05e..15d9775abb76 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -122,8 +122,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; } @@ -153,7 +152,6 @@ 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); @@ -219,7 +217,7 @@ public class LambdaUtil { @Contract("null -> null") @Nullable - public static List findFunctionCandidates(final PsiClass psiClass) { + public static List findFunctionCandidates(@Nullable final PsiClass psiClass) { if (psiClass != null && psiClass.isInterface() && !psiClass.isAnnotationType()) { return CachedValuesManager.getCachedValue(psiClass, new CachedValueProvider>() { @Nullable 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/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); From aff263f489a4407647e9492602206fad43d6532c Mon Sep 17 00:00:00 2001 From: Anton Tarasov Date: Thu, 29 Sep 2016 14:12:43 +0300 Subject: [PATCH 48/69] [macosx] Improve system menu icons quality Swing can't paint correctly our HiDPI icons at the system menu. It scales them down (from 2x to 1x) downgrading the quality. An ideal fix would be to add appropriate functionality to Swing. So far the fix is to pass Swing 1x icons. --- .../openapi/actionSystem/impl/ActionMenuItem.java | 11 +++++++++++ .../src/com/intellij/openapi/util/IconLoader.java | 13 +++++++++++++ 2 files changed, 24 insertions(+) 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/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 { From b5347c6a1d2a418e7fc531ee8fbf550d71dea3aa Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Thu, 29 Sep 2016 14:49:49 +0300 Subject: [PATCH 49/69] Java inspection: Handle static fields in EqualsReplaceableByObjectsCallInspection (IDEA-161076) --- ...alsReplaceableByObjectsCallInspection.java | 26 ++++++++++++++----- .../StaticField.after.java | 10 +++++++ .../StaticField.java | 8 ++++++ .../StaticField2.after.java | 10 +++++++ .../StaticField2.java | 8 ++++++ .../EqualsReplaceableByObjectsCall.java | 19 ++++++++++++++ ...ualsReplaceableByObjectsCallCheckNull.java | 19 ++++++++++++++ ...EqualsReplaceableByObjectsCallFixTest.java | 3 +++ 8 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/equals_replaceable_by_objects_call/StaticField2.java 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 9da2221ffc54..50952112d4d3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/EqualsReplaceableByObjectsCallInspection.java @@ -259,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/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/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/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()) From 4f22f2e176190096c2272a2f2746bd1fa39b013a Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 29 Sep 2016 14:10:36 +0200 Subject: [PATCH 50/69] [java] Jigsaw package accessibility highlighting (source dependencies) --- .../impl/analysis/HighlightVisitorImpl.java | 40 ++++--- .../impl/analysis/JavaModuleGraphUtil.java | 102 +++++++++++++++++- .../impl/analysis/ModuleHighlightUtil.java | 92 ++++++++++++++++ .../src/com/intellij/psi/PsiJavaModule.java | 1 + .../src/messages/JavaErrorMessages.properties | 3 + .../daemon/ModuleHighlightingTest.kt | 30 +++++- .../MultiModuleJava9ProjectDescriptor.kt | 27 +++-- 7 files changed, 267 insertions(+), 28 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index 47096aa11132..448c427c445c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -65,6 +65,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh private JavaSdkVersion myJavaSdkVersion; @SuppressWarnings("StatefulEp") private PsiFile myFile; + @SuppressWarnings("StatefulEp") private PsiJavaModule myJavaModule; // map codeBlock->List 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/JavaModuleGraphUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java index 8c77bb0e7540..48400b4eef99 100644 --- 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 @@ -24,10 +24,12 @@ 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; @@ -49,6 +51,13 @@ public class JavaModuleGraphUtil { 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). @@ -65,15 +74,15 @@ public class JavaModuleGraphUtil { if (!projectModules.isEmpty()) { MultiMap relations = MultiMap.create(); - for (PsiJavaModule moduleDeclaration : projectModules) { - for (PsiRequiresStatement statement : psiTraverser().children(moduleDeclaration).filter(PsiRequiresStatement.class)) { + 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(moduleDeclaration, dependency)); + .ifPresent(dependency -> relations.putValue(module, dependency)); } } @@ -90,6 +99,74 @@ public class JavaModuleGraphUtil { 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; @@ -112,4 +189,23 @@ public class JavaModuleGraphUtil { 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/ModuleHighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/ModuleHighlightUtil.java index 75b3e8a0b15f..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 @@ -54,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())) { @@ -307,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-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/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/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/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) } } From aea091674fd071c396cbf01e38bb30a6fe203127 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Thu, 29 Sep 2016 15:21:49 +0300 Subject: [PATCH 51/69] external system: fix deadlock for synchronous task execution --- .../openapi/externalSystem/util/ExternalSystemUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..230d28d2e045 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 @@ -581,7 +581,7 @@ public class ExternalSystemUtil { targetDone.up(); LOG.error(e); } - }, ModalityState.NON_MODAL); + }, ModalityState.defaultModalityState()); } catch (Exception e) { LOG.error(e); From 6f8d2056d33bc1ed22af87152ad1ef48fc720cb9 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Thu, 29 Sep 2016 15:23:23 +0300 Subject: [PATCH 52/69] external system: set indeterminate indicator by default for task execution --- .../intellij/openapi/externalSystem/util/ExternalSystemUtil.java | 1 + 1 file changed, 1 insertion(+) 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 230d28d2e045..e1ef8ec05027 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 @@ -541,6 +541,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(); From 3ece9f4026d16f0113faaea13d869d61a763baf1 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 14:39:33 +0200 Subject: [PATCH 53/69] more concise code for dfa failing contracts reporting (IDEA-CR-14141) --- .../codeInspection/dataFlow/DataFlowInspectionBase.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) 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 6ca88c6ea678..f121bfd9d700 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 @@ -895,7 +895,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { } Collection getAlwaysFailingCalls() { - return StreamEx.of(myFailingCalls.keySet()).filter(this::isAlwaysFailing).map(MethodCallInstruction::getCallExpression).toList(); + return StreamEx.of(myFailingCalls.keySet()).filter(i -> myFailingCalls.get(i) == Boolean.TRUE).map(MethodCallInstruction::getCallExpression).toList(); } @Override @@ -905,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; } @@ -920,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); From 0b00f7498c1dbcd1437d44ce8505cb9009e91e7d Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 14:42:26 +0200 Subject: [PATCH 54/69] faster LambdaUtil.isFunctionalClass check (and other related methods) --- .../src/com/intellij/psi/LambdaUtil.java | 73 ++++++++++++++----- 1 file changed, 53 insertions(+), 20 deletions(-) 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 15d9775abb76..a51a2bec825b 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; @@ -151,14 +148,61 @@ public class LambdaUtil { @Contract("null -> null") @Nullable - public static MethodSignature getFunction(PsiClass psiClass) { - 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 (method.hasModifierProperty(PsiModifier.ABSTRACT) && ++abstractCount > 1) { + return true; + } + } + return false; + } + + 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 (method.hasModifierProperty(PsiModifier.ABSTRACT)) { + 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(); @@ -218,19 +262,8 @@ public class LambdaUtil { @Contract("null -> null") @Nullable public static List findFunctionCandidates(@Nullable 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; - } + 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(); From d022d89402c73f380d765fc027a69d2ff066e1c2 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 29 Sep 2016 15:16:53 +0300 Subject: [PATCH 55/69] cleanup --- .../com/intellij/openapi/fileEditor/FileEditorManagerTest.java | 1 - 1 file changed, 1 deletion(-) 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; From 756da52d779ec94ea42d2f8c0d9d4c2fb4b3f638 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 29 Sep 2016 15:41:26 +0300 Subject: [PATCH 56/69] @NotNull & @Nullable --- .../src/com/intellij/openapi/project/ex/ProjectManagerEx.java | 4 ++-- .../src/com/intellij/openapi/project/ProjectManager.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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/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); } From aa590de4427a54f6446cc343affc020a589659b2 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 29 Sep 2016 15:41:49 +0300 Subject: [PATCH 57/69] ProjectOpeningTest --- .../project/impl/ProjectManagerImpl.java | 4 +- .../project/impl/ProjectOpeningTest.java | 76 +++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 platform/platform-tests/testSrc/com/intellij/openapi/project/impl/ProjectOpeningTest.java 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-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(); + } + } +} From 2ad6a3882b158043ddc4308b5742f6591aac9f95 Mon Sep 17 00:00:00 2001 From: Denis Fokin Date: Thu, 29 Sep 2016 16:04:18 +0300 Subject: [PATCH 58/69] IDEA-152214 Xcode like way to disable/remove breakpoints --- platform/icons/src/debugger/explosion.png | Bin 0 -> 31761 bytes .../openapi/editor/impl/EditorImpl.java | 84 +++++++++++++++++- 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 platform/icons/src/debugger/explosion.png diff --git a/platform/icons/src/debugger/explosion.png b/platform/icons/src/debugger/explosion.png new file mode 100644 index 0000000000000000000000000000000000000000..d728b9452f7f8e32812af7df8332462702005db0 GIT binary patch literal 31761 zcmeIbbzD~I7C*XQQfVYb5Tpd8yFn=d>6UI@k?wvK13^Mk1q5l3Qc+SsF%T3GDUnc- z?h;Vqu6Jh6%pA@fKj(Ar?|$z6Lq0PjJD&aQy`B}{^aZCL`{&b#|a2g5*H8@6%dl*6B3bze?$dY{`g^)CxYK( zy&asS^_5lsm=2EQSY3R5J*5Q%0s;c~14Q^eyq#gVl$3y=uz;{IAKby`6Xfn|8_4JG z!}j|_{`DMXM<07{w5KoH!<_~DTw6O2KVLakR_sK7{`~P>Zk~Tm_CbFfwrCk zLi~aP|1`+K{?9R4p0mt)>ZjSE0J}^$`AIEvRc=&qwxOn`RDgV6uUnhn& z(bD>J?tgq=H@APB+Q(PLA4KqnNdIx9k71Cfqkz7nkB6VPy`zdhd9584 zw?q*r?kp?t*U7)#`KM+{D|wvv@P^lNloyc|_@~o<8}*yENvpg2_}aSL zJE|+o!wG&g+Ckb@P|VIjP+XGFK~TzxPgK(0flpFc%z;lz($-d7LPSDT!a?*mA!=#; zefWPoTG_+i4{I^-=--`-gNHpl{;$^(k`Nb?5D~TIvln*|;S&;)km9qmwRhrkuoV#( zv3GQk6mgRH*F=AN*ndo<hkg&J2wUgu%6O|I@6BQAY;FGj< z66O;Wa&i=u5_6ESa{x*GE{cD6%zsRE8tnrb8}v6#27Ug`yBRoo{rlN}T{w^a%}aUO zdiywHZBUN&Uq<++Tl>>%VaNPt%hI;?SpOz(k2MiT2U&rCJNwsb{Wok2tXSL^@%$^Sld{}i$U*qCr0 z{r|#Z_}KdYKU<3b&9eS)FU5a)ssC@6;xBEscd>PMc65*z_?II8>%{-IdcUvfzgyV9 ztoA=GQWhJiq`{g&vuuB}A|Y9U|2X&8%)j4ninYq~e!tx>AuI?#0z%mT{xS6Lm-i1f z`}xqnU*13TuaQRXXkU5ZKW5u^`fsDK(e!sWZvep0QC?h3OhimpVE^g;BXrS$j^|C4 z(cq7Luzp2YO#F{Q`>*`tNVESs@^4rE82S5R{SBo3W{JO_1qcY}Q{Yed`5#95r$75Y z`O9CQ^ndcH`=0e{l6?aC`Qa~d{ail#uKp6&K7suF@RzuLE}wl@e~D|KKz@GsOI$yf z&%Ud_#I;W#KR^5>uAj?i-_>8@+9!~oAN~^8&*ii4>MwEa6UfgGe~Iho^4WLwm$>!` zAv_^TS`_`ni1eUHv7leFFLU;V*IhTt54*{u0+df&BdNm$-f| zpM6(g{`yZTF9`vmgy!(Zb1xqS9r{Uxq_0{QvjFLC`` zKKriz64yR~{QU5jxPC65eOG^pYo9=Ve)vmVKbOzGtG~pxPar=({HeHz{@T##=nlI$ z17N!*PlW&L8NaY2%Sfw^$S%5Ie9}} z`J`ds;9O>qY|8ZBo^^*8V|`bSOA@-Co!(T% zb(a^Td#haftu$h;&CLew?QV{|T6Ex2CbQfaTMqq{@nfjNZ@7QGu3~m4+DLgxVYyK66}@HLIe-TLjl)@9MhplcHT?F^#MJlW)EZa&)z{JU)uwplzkly zm5+$Nb<0eZqe5IHpre?b)VtDO2--f23|Jh|o9xKcK_#S%x%RbaXG+gANP2$4zj0cb zSs|PqA?A>0BerpIRAngD)0nilA0o%k9MOzHr7_Ego(8!{JeNO@jD>G6tKoEIc235B zY>H@#ikjM79>Z(4__8{jlAP?Wp&4{r%+=qsEBj}4j*uvRjO($TL;c9Q66f)Dp&B|KmGf9S`C(phb7uTT^_I)jg zm?a?=$;-XlZuD6s8djDWsq^~~YjnX!`pT6nwA8e;iCJ0Jj~f~qk{TMeS0eUy(x_=@ z$ngjWoTvgyt()#V*AYc5dHML>r;DN!@tSja{48+C=hxorC|u*z&e+7k9HX@T)O>;N z>({RhTcNu>Nyl{(PqVZ7`K|Y+G`O>gi9Lc>iTj|eeC^t`s<0pa(h<82HRq=0K0Fll zpBq?v60(6^hg&yqJ~w{Jf6NaDQ6y_#3T8!c5KRqoa*iyAd>QQ@-{y0VYu!%fJ4&G0 z&|fAyT1lN+PlrKSOIN5Tah}MM3sF^8US3`n4P5$ko;61+UHryrb{_QChfZ&Kx_Wzu zWzpSvKV19E^S4$flRz)5jh4B3sF`H^ufKl%`Yt{(Z79<9s<(GNwzhVQ=J@eKQ3VBs zx{wX`*P>UBeAXhYq{T>M8o&H_`{))Lc}d0~I(6adRkf4%jLX71V0+jkAx@m@nVFf<1Ore`;?(+HxR$KQMJ>N| z+a~@j*9P;cyPmj+idQoch8ekuD@f2qjk%qfIn3t8#?Q;k`_QW?X!VLRD|kg2z&s}|nUIX}rX(z}jNh3}hIj_Cnar{>w?mjaL$3S^+e=DME1GsSY;A4V z#^Mzc)6>mAkG+bY)>I1)mX?x{dH*(D0^MJ3iI<&8eSM)6*(O(%LE1oJL%e-_u0?U3 zI5C^F*yQl~&|pK5$lFYrv@4`XzMblB8f}W$qmq`EKJvn#`KVlQM)<}86D4I(NJzwe z_leFd0USYno+k)0L45g{eSTRYLXA>B-EnYdXXhcfi_>!}MQXW7%EEAcL}g_qi-^d> zRlD&lDW3^8V&WKkLBxu8 zHPiU-3s^Vu9^S&k$4?1*a{W394-ZdHYwKwSg>c!R;9#d%MyVA6utg)J6eXHMi%OV( zU)UKt{l4&c3@&|5zZQdpdj>Drx5`J4!b}Yfm3<~V!pw9?FB-R8B|lC_N5>!+yrzaw zZSU;Fz}w$(c6Q!aS{{3qS5cvp#&5}rd8nXA8^hMF zk~2@ePC71X_dLoRk;Ziq^8C~sk(iWpf*0q*hYwf@eBap^MUS_oh8e~p;_0dMfW>#h>|U5-kvvNCw!eA|{Q95|K3RcNYANw158RcN1in1dth zT1-r?eAxGfH?6JN?+bMdTwJ(n>+1C3J>F@pQfyTPVrb%Ke`I)+uSgq2lSS6A`r)2Gx&j%X?? zv)+gb-`#Sq^BN!*Y7?)siv%)5F4wN3Xb5#%a`4Em9DnFcyZaPDO?NmL^R~v z`S0uf*3&b+_c;0k{QR`aqEO$`Lr`mLYvJ0Onz^(66$Y?)aR>1(RwgG?>l+w^u%JJ= z^p$=fa4*_a2nq^f=HSSuLPFagvYqy7kw7ZTKzgM8GUUUg;mJ3ut0h3x zaUEF-I$yTDRpJTBk9IW#twy~XQwb}UL%MLX_hQ?M$Zb5%oOyFxXB+PAesfC%J>8v8 zO+le}M8Z9ol{oR=K?v48T5FW~Rui}|szkmNw`7KA;lZlCm3NUCNGO*W^Cr{$9tgLAJ1rCfl zPrSM10mjQEC3VYvq(L1UR-8K+c|d6()PutUBb`b7?&VAuQ)|_;Bg(6&6@lhhk$$r?fcBblmEWu}5eZ2i*tv$f z`d#om-4M~#y^Hp0$KK_tiTceLcK7!mzd!u->+7T{Q0zl&w%XcchZz{Gs09us5}}YK zg$s(6mMSV7H;D&s@=zSep*nPkCogbeVSzcX*2{#mq#|N(_n=)186~LNA$&r@wC%8s zh2cZ4i|e!f#YII^N#83UK5Rb>eqr6QJ#`$be~(=Ii>#Z%O*AT~lU9Otvn0Lj+CDsV zMz^Q(eH|N9(oE&OTkA8aA08flS-J%bXX+|*I15sMl!}Rp_L-WQWv+hv*72b!Lg7j9 zdNd9$t`E4&!rr_h+yOMe$AA~nG%rA(a(jAuI>Q(9^4PsW^ziA%8f)_5+o#LR%S9dA zs2|+Fe@snH?QFe2--m&Lu1G?1E&+k~R9>@F%F0$&R?MiXL>>W*B1(P8mXJutj^{g{AHCqanwcg`N zH5Yn%48K^!agKJ^x4aPJ6%-MPxg#6oJp(SXEvyKnY+!0SaD3yTu$rD8rCj*-O{b0w z^+*EJ9Egc&vXY>hMLJpXlgN@(_1A&um$5yYf&(8uY+0%p$;--SoIihl;r8v@3pY|y zEQxGLkfhrT9lZ_>G8i(%LQG7|8jIq-&3{z;_}DEsJDcU~1BZiPH%6NiG0LoGADuHQ z2k@6$b!E?+62pm{MRfUJ(N@jRf2^+Z7?nR%;S{pFEd`4oe@aPd&tPF_$YN&XiOkmK zW>=`cg@^Td-ik7)zR?1-LQP3%=C24kc|ZnKEAT6Na>7X;UXT3uCcNBNLw3^ zJ!tOQ+O)x;Ys%D&jAw4#xM8Hf3*P#{g9kjwClzJ)J)aJ^;ko~@;kGMyCeHSP_?4kK*HSL!?`B`}p`qQj)>tvgUE7z1<%I zpui5Gngo3lU1=xGYs$+PnC@F2#avHJOf+|Kak&uqHW-5B6!@{8N3JH`et!8P&K+Hl zlTPjY*r)<PyEcy*}fZL#^r#BUjj*5#bpgCdOHB{?k4GuYDe&GI?HUvmq8ytz1^J}DS z!@62pd}ik6AxsGV!lQ}LpFjINa+Q$=`jU{<@gCjr3H{R z#GjC6-CXTdP}kCOvt^oFnn#@(TMjf=jb-o)+gcgFeEoq_;gp-(ydXk~auIhQ+8hBK_4?z-bgL)9Djgji94#TNIe?Si zVNXLUsgQXLM1|Ez0O=e$I-NT5CaJGJfy!WU9rj#M(3S(D(3Aac_4sRLj-gp9kI_ag ze}8{+)XlB$-wQ??f|4NfTd}mXgt!|81J$qwnhP;l4vg7*66fySyP{rSlr_$r$-^Q6 zz`?IaM(zMs*DSaJ;8g;GR5S#VTM(DJ?6q!-ni1L%RG(H?y3LAe0aC)$?hz?D`JT=N zdpkQ906lx(fBcBa$;pAVBOaT~&)!51NK#f#EC*Vts;XX{o1c%N6|g!3lF8ZJ3=CeK z&`K$79(x%Z!u@tZ4=F&QP>|#=jy4^akf;{L$H(7*1dNfL71A6Q!10L|A9p9-9+??! zQh0k?EXIAP=48{}t_%RycMxn{rn>H~0jZOQhXc@mE{XD#nHt0mKJ&+r`i{N4*EmsZ zdf|aM_lczfzu7)Y@Z_xb1rhr3>1i`~FD*c%93degH%d#-(<4DhOJ|0Z!OE~nsp(13 z(jUrQPMvpl)VCnaH4Yf_Thu592L}uA@Pvzv2pWQ$wyyEKfCbOm+S(OCvLghqD*^O< zUw73vHnwUr(hfmdP;c(d=Vw_{;pOG#u6hHX)n5~cFd>o1+#J}o`dImO=D?ALpkgHW zwCgPngCNQs>o%VI15Ke@D+(tSum}>M!OHUT-AtJP{ZprK$}DOVFGfc0`MA5g^Fwx; zc33hQyf7F+`&3|T z@l+wQpV(qNAhb?aZ6Mug}H+ys^?h;Osovzi#`P+?iMkr}@6`5G?mw9nFrh zs9ldBXEQZb)t3>hZ$Z@_qOKQ>uT0|(gf{7VGUR9!AC<)ooerMYiY0<{&*xghP9$m@zxk}Wxs0Lk(g`-U+&mFN zeEfG8a0!7Ui&xmq2A=0eObjsyFfKYK<~8IyQBnH(`Yt=)*9{?Gs`eNyu#VVC0a;*^ zg|7<>+Q!Dl>=XwMp>AqiCPfqj3=G~gf>Q}gjGwo7C=pOSp-~8nn1YS z($@C0U&CrUGId;>Bqg|F5ki^fodj&Q0~wZ6jLB}w_=ujdapMTctPAK8rrWYXE2O{^ z`a-&R3Ndgk4rM~|;!`*~Ii>n+F4?xVwdKI*ci^9}>*EW$sBu_44BilgLKBzR4%Z>L zO;(@lJ@-(u=_2*eh7dxaSxP6EMnWPYEG*6S_`)@lWff)RuI;T=1xg7orn!Opk=W%1 z4XBFP3;#Y_(d6=N?!(vFSxsO+lW*QU4TiV2yAy(qM`VzWm$l{8-Yy}LLtY_kC)Vp! zA-8i0fqeKVHKydyDs7rKZuH27;VxqC^!?;F}Yg! z7-D@+gRiNwatxiou4%A2FMnEwy4#D>o@^QA$Q(Y-(?v2eGAV9uZX+UJvq$G>YHMl| zs;f7S8!v*Eb^{^U#<(&$K7J!IQi%wot?%vOD5aM{)=Y-sn2Z&~>B_h#paKNTrMbED zXKOr-#=ev=8~6h99o*< z&`fneDw7kXb!mt$yD~B{5rel;!ZL27;Xh&@pZ{NNl5HE?#P*Yx77CDDA70MJWA&$ z9{p-8$Zugts%>Os_jX#EiLKGZ-j^|m+f_iC5gjaTcO>M^_Lw#Lcrk$jO3d=4<_wH4+b#xSLZ-+97oiogFIP0vU^5WKo3m0l%ym+zp zH-vPBV1xmod{}A3(A4?gRw+Yq|%$}*mGS`ujk*g<;?3$+( z8=ODSyFT|pAO= zvUm|TkCeQ8Vd5MpTD^B6v$V9d8d5fV2?>dkgOprcT-i5o(nBs?`*dvC$;97>B2<7$ ze=q?AFxVI-^SZtLqsiCM3yOj&W@cMnW(z9Zl$bl<*cYGAuK9R-bFs2sluyGy_w*uu z&Wjkjq^vAvw+|04!&)dq_75~lM&j}MuU@;`K_#a-KY54|C7A9=nW?LDR|0?VBO@c@ z=;qcIjVd60;1s4b>%SYW2d+&~0!Yw{q2=oceQT9iD$;idfK6Q~#G401uB6{JZSk__ zON{P$KUZ4M*GzK~^BCFAdKyU>;jbMrHy|`v?ZFIYuM0H>%R1j{-xf!8Am~yvG3{gx zAFPb|3ConbjgKBZ;$mmN)cyWFx;5cg zM1)b0sdH(HY96UgL|9aSOIP-V5I_;jSjM9*nOg@YlNA*e#ff8-ItA$r2k8cIsiG0P z+t0dJLjfA;-1!Fi<_AP}0-(u)t14<#k~4=2a|4+Giz@?WwsR3cRs9zL_neSU_%DuV zVWBqAgxkj_?TzAqF-yqLckBSVkqhtu;_HB;TaB0PY^mvEoT{g5X({*S>C+1YB=nxQ zHOZct7#U?oKr8~!C79*;$G|_+Iqxp;!dBY^?qI)5b{Cb5PfDmpLmh1t5zrKEc5+W#@P=i@< z%qZ%7O6Ye0%Q{(NuBk4daVBrxzV(Q<9{}SBG8T?QDINizWdhFfSk9j2k4Mg(N5Ku4 zSxAp4T3Qaz7G{O>B$Eh!QAOF$>V}b8)p&ls`hZpbMB=fM>}<@!$dez}My*5H+1Yg~ zte!+a52A;vXQRr%J(cO}S{9~Den>8=3aH^Epzh2v%2e-Hy=s2{esv5$L@T7Ekl7Uh z?iP?=RS3C$L}KBZ!zBmH!}vudC3TP-&L??A09B@!0ARotdO$@BX=!P@HQHdIG{jIbM! zDw?}%++D*DD9Wv<@NlxVz1tIqgSf2Ef82Nm;aFpPt*@`IA8_s&uj@ESE|Az;3QS=@ zu#J~Tm{z-6KJBO9{!Ol9%qW(+hFET72~v>We4N!W7%w=L~c6O1sU8e%DvH@CvFm2YB6|)5;ui)La>GwJ#fV^`cskAQb zz)1JG92UF5ld*SegAk;f4CHa@juDC%Q;B|GFbh_7DBqD9u?Ynp$LD1{bA&Yu#T$Vq z*Uh`5>RjIC_`Z&l1G^$ef;EWl78De00ALg0@Hu8x?;i`;c0w2`)anq?#UaSjE^lq? z_4Z6(>Gk)du9o(el31DE%ikoE&st>H4!V<;rUo!Yo8M#k2&MpF^6t#S;wvVO>FaFOA{++SI#^6AxaYFz&z* z(T$Cbam&c0pE+}8*8%F>F(}>7qd`o*Kjy1Pr(lLJ!=VgDs#D1IEKzj#>eABEx%&~7 zS6*+X#x^Z(RIyg^uC1>J$ObN9pvI(a7$m{0c+$-5gSnN}u5FM%0rUV|Sv#0r2P{Gy zgoBFS8;dxK21wW~Xan$5LMB!N8wAnOmNpVso^Glhw96CnzA?;5Fcw0~X?&1`fC?dq zdHc-PCq(6huV^3XKyZoNW)Dn6OdPcQJjJ;P4mz~HF2S*2oFQ!aFaMlB*i%@WM z2U*diGQM+sf`I{`UB8_6QB8%Yi`uf|s!AGt= z0j6|`GCU{Ld7m=vG9`xzBFu;vvW=n_LT$=3gyBL&uLADEs=KSJrns~L! zJ6(6%klA0i+{SVWwTZ7NfZRi_iwg_4eNt8=!>G#ffmjqFe(vU9XVrw}=!^3DGHdGMRu;c4@$!v%)6oADUM4Zm-7HFlnf-gfX z2tRR`{opWGTR@PIko6fANZoqi#YBwvwqUIqOs0 zE|8*cLWD?KSzYA@-Wlk$)`5Xd(&`syJA>~i9WygANkg9FPHkHfBh^ALTE91XpD{5B zNSE};*yI9xfHZ(kCsTU8{KgGEYUD?-6?qwQhLD1tjm@WRXea|41fa$YB2m`R&_E+~ zy*~Dp_|CXD@mNYnj-YDE;<6T@wGG>BW7FkZ5s1JN|QwTrN-0oWZJ(CK3 zz$@|5e9uRpay2tHA4Y6J-wVLX!m1uW=AS4a$eo>~RuulGG)GyqP}Z6MsM#2?dtRU6 zd4>5dkmdpY{+!5@nd#UC@=q0af;jZf>3f@0oB(u!^v&^r-lEC!`b@ z(~i;lfOz(RWIhlH0H+ZeLc%b$$4G6rx*)0u>2hGIJxYXNQo%vCpT)W===FF2`Tw<# zTAWRgX+^lWx;CLIOU1J;WgUq_-CPnoD2Tf57Z9*VK}~Jg5W3~f$_o4&wcp~%&f}Dn zUVDVFF-;E{lR1PSWI&MA0-_BX=;~S;2i~1qLLx0Xde_**0d=R=rUY(fB3g`SnwQQ+p>#ya$z zTyYw=cKRrEq$F{NF?H@&i|2`$^o%J8;Xzas6bY88sPj;(?15C4orx(k7MTclGwwOZ z)q+PulTwca`}lODVIe!9tdm)jE6!VS!*g{o5~=fy2*FK2e|RwN2uVyoVhE+_93a#w zkx76gP3Dk=+&1+*r@mB&Be%d6*sW4kBo#XEPb zEC6V1_)PlGb?3K-AbpSMZ|ak<^!B}dJ3pLoOes#? zqMf=~6&SZ_0DQhnpH4#Gz-oka(`j}rXEz@H_GM!401KxC@OooVdO$CZJmDA>0s;>l zivfv^5T?MoP8&c+9B_0`iXc*(K`1Q%eiAsM#=-mcuauEni9edX)~m`=+hm9oc`&uT zdM+48sgeHUnLs9;Q4WUOQw=VBhJlmo6 zjEM~HdyGheQ(=dupQNNDDpU>c^g}`$!O+d646whKxGuTiCnYc`_OIf?GPAODpta=b zA^e%+ccZYe&kjVk0+n5EA)))vaqa*w09wTfGzHtE`91tD9E>@nMMQuE%~_G!+FIYm z5jjAJY!?(gahs>SRVh9KSIpo6omd>4oL7W}g|W3XtZO@V>;eEjavV=S*CNv+GIO4> z`bgI%HA>P<4@_HW1zEsmzj5oiySg_w06ldBt92TZ4e0MmoP^4K z%{J7wtAJRW1FCBrT0Qjr{l$lCeXc^GWACVt-E%0tZAlEhO=Dv{aQT@TAn>nWzMR6M z16DRR^#+ld?30n*NMK2EvD;@JodQ~hNTKQ@bJyaSWaOa?$=?{f&Z9oaYiDN%C26;< zp$**ZA;^i}!`gp$NQQ()2mB^KlxXBhn(sXhXxcG;7Y{7u89`xT4bX*-o$)kl7`cP< zX=Cu_k+fB&Bd92R&rnDl%;pCl{b-hZ^5~u&IZifkM8^9WIL~WWev&b4K02xw=CujqtoeHpUY>0t_qa&R{@LCkquGd`vPQ3uwcRa=D zQ8cUDZUM7S>=VhQkm7rygIiI_OSuw!9iUBuUteOICXEb+m$oE_y zluE2S(OU~h z^k)H8uv=Fepo|LfnuL@=l*>dVJPyuqMw`ERGEH%(sA zw1;k;Zg{+Ra+^+C@4^xBs4EEni4!M0P=d}N1P3(w)*)tQ9ncQKTA#0)o#eHxkDoy6 zQRhJ-q8v!HlCOI{e+31A)5gaB!y8{_Cs(%~Q&LiL=tM!v^d8<{80ZN`a+@pE*D%pv zzvCjY*v0L7HZmf=0}XB*lY<{VjK}02ZQpDPL*{_vR?>z%G(SII5A)Bv_t3WIWcIN4m(M9!YGy&=Xn!;$x+quZu| z>3R>O+O?=DaOl{|sJE|g=<#W(;zFIh1teTlOzcVJx!#hT?d|Qv$KciCSfQ+H^l1EB zDcEdQXVy_>W@~SE4Gkj5kSQ>HSweNAGsE@OT!MlL$tfvGjgP~6o(~1$V?vmueYt>T z%7y~bcW8LHmAMDlyrN!BHvDMbC;ni%ccDjQ@lrmC6Er# zScy((EYZ0mdl!Nblqb0+R=0BVwttum9>vR6dS9TWM8|8ovbB74c?Q-E+g?RPO1h&n z31~$ClJ+NffIhaWcZjHx7uiwiSByuPQD?*~Ex5GKhqp z`$#%an$eH{B~A!x)EiL3;c@RRF$%Y^u(&3?yZnl|=dKdr*~jM(0~f64;NWm87Xt#s z_EJFWh!ZC}dlz&I9zv~Uh&XF|1CZ>5t_`_2(4HpYF+$;dHR1Dv8Er(65c7a~Qp}WN zAsbAHy!zoo=mE~hvRtoXkEkJoCXYKfNUNasuKtBF*w5x}=P{%O%%`Cmyo!mXg+=$H zsw(khiE{~4)HvwYgSrqH5hfr^WPzK~(ALIw+ZfdQ&nL=DjDN;cR2AmW7RR^Y!4!|< z$@>C}5M+P;{C4_<3r{(qZ*Q)&l$SxsPWf?sypGW14D0>xDSktZVd(%CvzE3(36ZzZ z_jrT#&@~rqo`>ZaLDYH>Nhm2Z<-=|hkTC}K4-d<|?dXUDIQ4C&D4XHD;JL(Ix4XK5 z#Lau`BU$7&ZXB}~LxP)5PEN-GC9E0}wU+7!fUro7lDzu;@g1|;YxvQ^_ ztQLy%P)2>OVQY2-F@1fw>gDU!)}b4wHt&x%U(`3aH!^;vj2}m`7d+n?ot~>w794#D9;*5f|%8ixq-gtY^=jJqevy*^uB;7Zn%t`33~&KpAy2>C>lAvaGCxgoHR)R;F-eYnzFPi0I&P zojZBJBGN(AhkPSI=Hu!D0Ct#hJked*PZ=B?$0H$N)%Zad$@lIX04$*3o(;XG35qN= zh|N_0bx(GsbWOG8cZIbdWl=Xxmg*XWElv;inoR<9V|B07)t?-a(=8t-6V_EyVuL`J z0St;V)Q|C4a(wZo({Qc^Z!BaQVQXXV!#O~R#vp-V_X?jl6!G_~Iv@kaeFV>UEDmHd zZ`5;Oy!^BggiGtD;Ad{icM5ykO4y2cr@~$W0OT)U?7-dS12gFiMf^x;&{6@g>CDK; zs0?m?6Zj@DIC|C`;4rqKNPZD=lx|4OltEtaASZB^lao^bqCAORC8renk1&A4ilLR$ zi)Q{h4Ocpf?sHA_s@W=1MM-oy0*B%N-bFJJr#FFe4y_5*G=8r=-z5&$N>v`C)8V(a z^wU=Mg$`w%nFc`Z3Vr^%l-0?ShFV(lK~Vpvp{4DHum+{A4MUZk4?~PwbWl~=fKI?d zh=+QRG>$cSNlkc_YjPlL0Gmv3OpSY8Q#vS*t>ZL{4Ix18s8Jo)ZV-i;TcFx{ zuwE-08=YU417#3Knobkc0q74E-rHW)!4?nkY@oEaC;`-V&ttcbuUf8<%E&{F{y20g zsOahGC1+$vQ^7Anx0Krt)HUU^U4=O4u zZfGusPB-`Ez=o`vf%W{1yE8t0Lpv6XLCQdMj6~5T_b6wsZfy(c)2dfD8r?I_0nhag z%+F^lH2jp~!eNBw@Znn_1Ox97|l$mRJFJg z7Y9xkjiMxm4;rQSu$)e&2ni977b#tbRRTLTQG96o+SE|g5;-nzq&cWx0l)}s2YE51 z2*u;{yyFN->GO40UxDV^f;itiy}g4op`h`BU<-PxG)|w+o|%bJI$_{yL8H*GFIc_0Mj`ve6xfCKUOZKi=VR~!niwvL_ zt8>(+eb6nz-{!W4pqLd2UmcH#mX(zWP*Fl9DS?*X;$})_CbpLtI;85F2;BV*kYPXt z->O~vxZ1bRyuEWhbu#e?+kzVc;)WO+n1IK(`L2Uz@mXp7r z)maFhXQ$m-(oj)fuKCA!+mR#`92E%?DZ~udM8eYPT30#eocHdtJE?U1*af)0`)K zQiIh4tdpQMs>!{-e3&08W4Drk+|3I0NnfQ!A1VPkVEob8E;3lEx90~cKeu$MV0sNR z`xPgP3~%3)9@u(R+v9%)9QtvmR#_Z%U=An0Z*l>9-vO(75&$D%hh*7UWvWU*2biO0M?fhdLOZ6HE2OgxPRYE$ayH~^S8*+y~{NI!o4)Ox{Fat>SA9%=~kxeu(n0CJXuNm}$y)D*U$4~upvEg67shk%MHIGOK(At5o( zbsj?JssW@cBj;RPE_re%^Uk~<4D7IxyyZiql^8`rHL05Md2CE6k?r>Zweme#VDjciS2m^dNZ}8r( z9Cr5>4n34CZ$qzv8jyio*7`qWaIn*?O`8yaV{<<;_>5KZN|VQkKjCWd9^z5t%h3Jwg6 zT4kUmy8Mi#<3zTx03IfNqm<{#Nqo#f*b;CY8Yu}6wdB$QSkwWYk`wLfdNp+7wie11 zcw7Q{Fh{H&+!U=wH#8_Wnx*j6f;FAyuFIA3vGlSvk3__x!+kCJY z3uq_o4uc$U*Aafe1Hk;*AiJqG49@@1-xnk%zRQze%d>+N&xpI~cWr%Cueq?( z+uK`BK?$yG2m+CI-w70#$5Cvj8Vb`(cPNUNw*uwW7a;{D5m(q{W(=fI3*5`!*HYNX ziJ5XAuCqJ>n|Q8)6S#A>%0;iXyaDoapaF~m(E?AgbEXw{qsuiew}-F8oW2nO8U)p- z%Ce#(mHfnt5lA?VWW^R;s+u@%rRA6P!(T2dt-tkz=^uUuz9VaWY;m|g4T_md7)=lH zo9(G=MRC#?U~B(H(jNZZG# z_xC4@0zNqg)KDQ%n>6Rp=;0j;cV*zg6_D$txH-nfq9(ofe|uu4l9^eMSx_ydl9CcJ zZ0myrBzopHUETw9d5LSf7y%Wgu19?$?3jdIHMBp$|fd6<( zuNn`*@M10uE!3W98s|)ddLd?z4nu1Z7lf0*_Vx&`Fic!xja)*4JwMnn&8#jc{+BA_ z-yi=7wpo)PXKYel*@R{RmiokXPnKZp2Q`Kt39f9j7raUO>0V2i<_=%W&Ky}bQ~gO2 z)g4-d3UME5Q@}^qQ1rzmB?XACjYQPbqDdyfB3Q6fkv@*ZIqgHAE3W5{&u` z7%@ChoOvG`8w>wOURLb(xwVC1neWquSrGg`F=6&nmZc6Od$=}uHsVwV2$bsZ6bYIG zk*f$h4kTi;-W^7`o>ppVlczzOE3jbh%h(tiwlR>S)=*1Ihs#f?AR!1fZYv^~IeeNx zDHu;NmFj}tQ0D@&Iqtj5VPSKl5<(C&cJl%;9?n(BDD!YD`6j;yXTTROkzj=CZ;+@C zui~_-Z@ZJSoc^+yiabMFQkr<>t;iYdhF!|j*1R?Jj{=|=(BDY7ATh$tdz17idw zSpL`~kKG-=Z{Pg>Q%kSC?d_qrd!RD?Irf#Z53t}g8zAwBuf0SxcB*VP%zFro>;eJ; zI5wT`)W5waBL*KSN7W$Bm|-qZ-9rc|QZU5H!ZW8TME{2PpLgu6&C qvHt&Wr~bEZ`hV}PO^w}A#3+F9YCm&tAN)lQh`Nfla``Eni~kq1^CzYN literal 0 HcmV?d00001 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 ec6710050012..522f7548d3d8 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*/; @@ -6493,6 +6499,69 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } } + private static class ExplosionPainter extends AbstractPainter { + + private Point myExplosionLocation; + private static final long timePerFrame = 50; + private long lastRepaintTime = System.currentTimeMillis();; + private int spriteIndex = 0; + + private Image [] sprites = new Image [16]; + public 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 = new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB); + Graphics2D spriteGraphics = (Graphics2D)spriteImage.getGraphics(); + int sourceX = 64 * (index % 4); + int sourceY = 64 * (index / 4); + spriteGraphics.drawImage(explosionImage, + 0, 0, 64, 64, + 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) < timePerFrame) { + g.drawImage(sprites[spriteIndex], x, y, null); + JobScheduler.getScheduler().schedule(() -> {component.repaint(x, y, 12, 64);}, timePerFrame, 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, 64, 64); + } + component.repaint(x, y, 64, 64); + } + + @Override + public boolean needsRepaint() { + return nrp.get(); + } + + } + static boolean handleDrop(@NotNull EditorImpl editor, @NotNull final Transferable t) { final EditorDropHandler dropHandler = editor.getDropHandler(); @@ -6503,6 +6572,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 + ) + ), + () -> {} + ); } } } From afa85dd16de80a7db7e0f249fb6437236ef9ebca Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Thu, 29 Sep 2016 16:17:58 +0300 Subject: [PATCH 59/69] hidpi: scale StyleSheet font sizes for better rendering of "font-size: medium|xx-small|x-small|small|large|x-large|xx-large" --- .../util/src/com/intellij/util/ui/UIUtil.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) 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) From 54e88fca7232aea4de370e7a33f0cef9cde8bb19 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Thu, 29 Sep 2016 16:21:43 +0300 Subject: [PATCH 60/69] lambdify --- .../ui/XLightBreakpointPropertiesPanel.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) 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() { From 0cfa836610dcb9fe0aeb1ce3f17f53973f94c21d Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Thu, 29 Sep 2016 16:22:01 +0300 Subject: [PATCH 61/69] IDEA-120087 Debugger: changed state of a breakpoint is not visible, until applied --- .../impl/breakpoints/ui/XBreakpointActionsPanel.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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()); } From 0dc8d2ad2f7218ce475c3e9ff0570ec6fc3382fb Mon Sep 17 00:00:00 2001 From: Denis Fokin Date: Thu, 29 Sep 2016 16:38:14 +0300 Subject: [PATCH 62/69] IDEA-152214 Xcode like way to disable/remove breakpoints --- .../openapi/editor/impl/EditorImpl.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) 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 522f7548d3d8..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 @@ -6502,12 +6502,14 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi private static class ExplosionPainter extends AbstractPainter { private Point myExplosionLocation; - private static final long timePerFrame = 50; + 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]; - public AtomicBoolean nrp = new AtomicBoolean(true); + private AtomicBoolean nrp = new AtomicBoolean(true); public ExplosionPainter(final Point explosionLocation) { myExplosionLocation = new Point(explosionLocation.x, explosionLocation.y); @@ -6519,12 +6521,12 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } private static BufferedImage initSprites(int index, Image explosionImage) { - BufferedImage spriteImage = new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB); + BufferedImage spriteImage = UIUtil.createImage(SPRITE_SIZE, SPRITE_SIZE, BufferedImage.TYPE_INT_ARGB); Graphics2D spriteGraphics = (Graphics2D)spriteImage.getGraphics(); - int sourceX = 64 * (index % 4); - int sourceY = 64 * (index / 4); + int sourceX = SPRITE_SIZE * (index % SPRITES_IN_ROW); + int sourceY = SPRITE_SIZE * (index / SPRITES_IN_ROW); spriteGraphics.drawImage(explosionImage, - 0, 0, 64, 64, + 0, 0, SPRITE_SIZE, SPRITE_SIZE, sourceX, sourceY, sourceX + 64, sourceY + 64, null); return spriteImage; @@ -6539,9 +6541,9 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi int y = myExplosionLocation.y - 32; long currentTimeMillis = System.currentTimeMillis(); - if ((currentTimeMillis - lastRepaintTime) < timePerFrame) { + if ((currentTimeMillis - lastRepaintTime) < TIME_PER_FRAME) { g.drawImage(sprites[spriteIndex], x, y, null); - JobScheduler.getScheduler().schedule(() -> {component.repaint(x, y, 12, 64);}, timePerFrame, TimeUnit.MILLISECONDS); + JobScheduler.getScheduler().schedule(() -> {component.repaint(x, y, 12, 64);}, TIME_PER_FRAME, TimeUnit.MILLISECONDS); return; } lastRepaintTime = currentTimeMillis; @@ -6550,9 +6552,9 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (spriteIndex == sprites.length) { nrp.set(false); IdeGlassPaneUtil.find(component).removePainter(this); - component.repaint(x, y, 64, 64); + component.repaint(x, y, SPRITE_SIZE, SPRITE_SIZE); } - component.repaint(x, y, 64, 64); + component.repaint(x, y, SPRITE_SIZE, SPRITE_SIZE); } @Override @@ -6583,7 +6585,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi mouseLocationOnScreen.y - editorComponentLocationOnScreen.y ) ), - () -> {} + editor.getDisposable() ); } } From 07a47c9f9ef5a80d7fe34e29fb461ae4f95d7bef Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Thu, 29 Sep 2016 16:38:35 +0300 Subject: [PATCH 63/69] external system: allow to run tasks w/o progress indicator --- .../execution/ProgressExecutionMode.java | 8 ++ .../util/ExternalSystemUtil.java | 128 +++++++++--------- 2 files changed, 73 insertions(+), 63 deletions(-) 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 e1ef8ec05027..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, @@ -604,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 From ce56e331b3e7f827a8cab7d74bf1d356f722cf66 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 29 Sep 2016 15:54:11 +0200 Subject: [PATCH 64/69] Cleanup (missing annotations) --- .../testSrc/com/intellij/psi/search/UpdateCacheTest.java | 3 ++- .../testSrc/com/intellij/roots/libraries/LibraryTest.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) 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); } From 94983fe660ceff15eabfdaad44548c629d6f7baf Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 29 Sep 2016 15:28:55 +0200 Subject: [PATCH 65/69] junit: allow to explicitly run junit 3 method located in @RunWith(Parameterized.class) (IDEA-148740) --- .../intellij/junit4/JUnit4TestRunnerUtil.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) 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) { From d9daa533c1bcde9140c42d986e9665a6eefd9341 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 29 Sep 2016 15:53:50 +0200 Subject: [PATCH 66/69] whole file pass: ensure restarted on all files after a change (IDEA-161890) --- .../daemon/impl/DaemonRespondToChangesTest.java | 9 +++++++++ .../impl/WholeFileLocalInspectionsPassFactory.java | 9 +++++---- 2 files changed, 14 insertions(+), 4 deletions(-) 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/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()); } }; } From 6d0694d38c98b5b4218e3717c0c26e73e108b09f Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Thu, 29 Sep 2016 17:07:26 +0300 Subject: [PATCH 67/69] use UIUtil.getHTMLEditorKit() as it's more HiDPI&darcula friendly --- .../platform-api/src/com/intellij/openapi/ui/Messages.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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); From c05e95896a00e7bb91e2ef2c83918b46106f4d95 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 15:00:53 +0200 Subject: [PATCH 68/69] use more StreamEx features for shorter DataFlowInstructionVisitor.getAlwaysFailingCalls --- .../codeInspection/dataFlow/DataFlowInspectionBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f121bfd9d700..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 @@ -895,7 +895,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { } Collection getAlwaysFailingCalls() { - return StreamEx.of(myFailingCalls.keySet()).filter(i -> myFailingCalls.get(i) == Boolean.TRUE).map(MethodCallInstruction::getCallExpression).toList(); + return StreamEx.ofKeys(myFailingCalls, v -> v).map(MethodCallInstruction::getCallExpression).toList(); } @Override From 3c837081d80945980015cb2ca16473bc092c0f8c Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 29 Sep 2016 16:09:33 +0200 Subject: [PATCH 69/69] fix tests: Comparator is a functional interface --- .../src/com/intellij/psi/LambdaUtil.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 a51a2bec825b..a60752e62360 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -176,13 +176,21 @@ public class LambdaUtil { private static boolean hasManyOwnAbstractMethods(@NotNull PsiClass psiClass) { int abstractCount = 0; for (PsiMethod method : psiClass.getMethods()) { - if (method.hasModifierProperty(PsiModifier.ABSTRACT) && ++abstractCount > 1) { + 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(); @@ -190,7 +198,7 @@ public class LambdaUtil { @Override public boolean process(PsiClass psiClass) { for (PsiMethod method : psiClass.getMethods()) { - if (method.hasModifierProperty(PsiModifier.ABSTRACT)) { + if (isDefinitelyAbstractInterfaceMethod(method)) { abstractNames.add(method.getName()); } else if (method.hasModifierProperty(PsiModifier.DEFAULT)) {