diff --git a/java/java-impl/src/com/intellij/ide/util/PackageUtil.java b/java/java-impl/src/com/intellij/ide/util/PackageUtil.java index 893b85832bd7..30c0f2a4d63a 100644 --- a/java/java-impl/src/com/intellij/ide/util/PackageUtil.java +++ b/java/java-impl/src/com/intellij/ide/util/PackageUtil.java @@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.impl.ProjectRootUtil; @@ -270,8 +271,9 @@ public class PackageUtil { return false; } - private static PsiDirectory getWritableDirectory(Query vFiles, PsiManager manager) { + private static PsiDirectory getWritableModuleDirectory(@NotNull Query vFiles, @NotNull Module module, PsiManager manager) { for (VirtualFile vFile : vFiles) { + if (ModuleUtil.findModuleForFile(vFile, module.getProject()) != module) continue; PsiDirectory directory = manager.findDirectory(vFile); if (directory != null && directory.isValid() && directory.isWritable()) { return directory; @@ -286,7 +288,7 @@ public class PackageUtil { String nameToMatch = packageName; while (true) { Query vFiles = ModulePackageIndex.getInstance(module).getDirsByPackageName(nameToMatch, false); - PsiDirectory directory = getWritableDirectory(vFiles, manager); + PsiDirectory directory = getWritableModuleDirectory(vFiles, module, manager); if (directory != null) return JavaDirectoryService.getInstance().getPackage(directory); int lastDotIndex = nameToMatch.lastIndexOf('.'); diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java index 039444f5ba0a..3cc2398371b8 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java @@ -570,18 +570,21 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager { String methodName = methodExpr.getReferenceName(); if (methodName != null) { String[] words = NameUtil.nameToWords(methodName); - if (words.length > 1) { - String firstWord = words[0]; + if (words.length > 0) { + final String firstWord = words[0]; if (GET_PREFIX.equals(firstWord) || IS_PREFIX.equals(firstWord) || FIND_PREFIX.equals(firstWord) || CREATE_PREFIX.equals(firstWord)) { - final String propertyName = methodName.substring(firstWord.length()); - final String[] names = getSuggestionsByName(propertyName, variableKind, false); - return new NamesByExprInfo(propertyName, names); + if (words.length > 1) { + final String propertyName = methodName.substring(firstWord.length()); + final String[] names = getSuggestionsByName(propertyName, variableKind, false); + return new NamesByExprInfo(propertyName, names); + } + } + else if (words.length == 1) { + return new NamesByExprInfo(methodName, getSuggestionsByName(methodName, variableKind, false)); } - } else { - return new NamesByExprInfo(methodName, getSuggestionsByName(methodName, variableKind, false)); } } } diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java index 53f6749d8abc..e0e6f39cf913 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java @@ -603,7 +603,9 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr PsiParameter[] parameters = list.getParameters(); final JavaParameterInfo[] parameterInfos = changeInfo.getNewParameters(); - PsiParameter[] newParms = new PsiParameter[parameterInfos.length]; + PsiParameter[] newParms = new PsiParameter[parameterInfos.length - + (baseMethod != null ? baseMethod.getParameterList().getParametersCount() - + method.getParameterList().getParametersCount() : 0)]; final String[] oldParameterNames = changeInfo.getOldParameterNames(); final String[] oldParameterTypes = changeInfo.getOldParameterTypes(); for (int i = 0; i < newParms.length; i++) { @@ -634,7 +636,7 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr resolveParameterVsFieldsConflicts(newParms, method, list, changeInfo.toRemoveParm()); - fixJavadocsForChangedMethod(method, changeInfo); + fixJavadocsForChangedMethod(method, changeInfo, newParms.length); if (changeInfo.isExceptionSetOrOrderChanged()) { final PsiClassType[] newExceptions = getPrimaryChangedExceptionInfo(changeInfo); fixPrimaryThrowsLists(method, newExceptions); @@ -707,13 +709,13 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr methodThrowsList.getTextRange().getEndOffset()); } - private static void fixJavadocsForChangedMethod(PsiMethod method, JavaChangeInfo changeInfo) throws IncorrectOperationException { + private static void fixJavadocsForChangedMethod(PsiMethod method, JavaChangeInfo changeInfo, int newParamsLength) throws IncorrectOperationException { final PsiParameter[] parameters = method.getParameterList().getParameters(); final JavaParameterInfo[] newParms = changeInfo.getNewParameters(); - LOG.assertTrue(parameters.length == newParms.length); + LOG.assertTrue(parameters.length <= newParamsLength); final Set newParameters = new HashSet(); final String[] oldParameterNames = changeInfo.getOldParameterNames(); - for (int i = 0; i < newParms.length; i++) { + for (int i = 0; i < newParamsLength; i++) { JavaParameterInfo newParm = newParms[i]; if (newParm.getOldIndex() < 0 || !newParm.getName().equals(oldParameterNames[newParm.getOldIndex()])) { diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java index a6965af58299..0ec986ef9178 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java @@ -103,7 +103,7 @@ class JavaChangeSignatureUsageSearcher { if (isOriginal) { deletedOrRenamedParameters.addAll(Arrays.asList(parameters)); for (ParameterInfo parameterInfo : myChangeInfo.getNewParameters()) { - if (parameterInfo.getOldIndex() >= 0) { + if (parameterInfo.getOldIndex() >= 0 && parameterInfo.getOldIndex() < parameters.length) { final PsiParameter parameter = parameters[parameterInfo.getOldIndex()]; if (parameterInfo.getName().equals(parameter.getName())) { deletedOrRenamedParameters.remove(parameter); @@ -115,7 +115,7 @@ class JavaChangeSignatureUsageSearcher { for (ParameterInfo parameterInfo : myChangeInfo.getNewParameters()) { final int oldParameterIndex = parameterInfo.getOldIndex(); final String newName = parameterInfo.getName(); - if (oldParameterIndex >= 0) { + if (oldParameterIndex >= 0 && oldParameterIndex < parameters.length) { if (isOriginal) { //Name changes take place only in primary method final PsiParameter parameter = parameters[oldParameterIndex]; if (!newName.equals(parameter.getName())) { diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java index 3e4a51f0938c..7b74dd6413b6 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4IdeaTestRunner.java @@ -116,22 +116,24 @@ public class JUnit4IdeaTestRunner implements IdeaTestRunner { field.setAccessible(true); final Filter filter = (Filter)field.get(request); final String filterDescription = filter.describe(); - try { - final Description failedTestsDescription = Description.createSuiteDescription(filterDescription, null); - for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext();) { - final Description childDescription = (Description)iterator.next(); - if (filter.shouldRun(childDescription)) { - failedTestsDescription.addChild(childDescription); + if (filterDescription != null && (filterDescription.startsWith("Failed tests") || filterDescription.startsWith("Ignored"))) { + try { + final Description failedTestsDescription = Description.createSuiteDescription(filterDescription, null); + for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext();) { + final Description childDescription = (Description)iterator.next(); + if (filter.shouldRun(childDescription)) { + failedTestsDescription.addChild(childDescription); + } + } + description = failedTestsDescription; + if (!failedTestsDescription.isTest() && failedTestsDescription.testCount() == 1 && filterDescription.startsWith("Method")) { + description = (Description)failedTestsDescription.getChildren().get(0); } } - description = failedTestsDescription; - if (!failedTestsDescription.isTest() && failedTestsDescription.testCount() == 1 && filterDescription.startsWith("Method")) { - description = (Description)failedTestsDescription.getChildren().get(0); + catch (NoSuchMethodError e) { + //junit 4.0 doesn't have method createSuite(String, Annotation...) : skip it } } - catch (NoSuchMethodError e) { - //junit 4.0 doesn't have method createSuite(String, Annotation...) : skip it - } return description; } diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java index 6ca0addef694..da511ef7a000 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java @@ -134,7 +134,16 @@ public class JUnit4TestRunnerUtil { return super.getRunner(); } }; - return classRequest.filterWith(Description.createTestDescription(clazz, methodName)); + final Filter ignoredTestFilter = Filter.matchMethodDescription(Description.createTestDescription(clazz, methodName)); + return classRequest.filterWith(new Filter() { + public boolean shouldRun(Description description) { + return ignoredTestFilter.shouldRun(description); + } + + public String describe() { + return "Ignored " + methodName; + } + }); } } catch (Exception ignored) {