diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java index 9d9779e78925..e6485a72f24d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java @@ -99,32 +99,28 @@ public class ChangeMethodSignatureFromUsageFix implements IntentionAction, HighP @Nullable private String getShortText() { - if (myNewParametersInfo.length > 4 || myTargetMethod.getParameterList().getParametersCount() > 4) { + final StringBuilder buf = new StringBuilder(); + final HashSet newParams = new HashSet(); + final HashSet removedParams = new HashSet(); + final HashSet changedParams = new HashSet(); + getNewParametersInfo(myExpressions, myTargetMethod, mySubstitutor, buf, newParams, removedParams, changedParams); - final StringBuilder buf = new StringBuilder(); - final HashSet newParams = new HashSet(); - final HashSet removedParams = new HashSet(); - final HashSet changedParams = new HashSet(); - getNewParametersInfo(myExpressions, myTargetMethod, mySubstitutor, buf, newParams, removedParams, changedParams); - - final String targetMethodName = myTargetMethod.getName(); - if (myTargetMethod.getContainingClass().findMethodsByName(targetMethodName, true).length == 1) { - if (newParams.size() == 1) { - final ParameterInfoImpl p = newParams.iterator().next(); - return "Add " + p.getTypeText() + " as " + (ArrayUtil.find(myNewParametersInfo, p) + 1) + "nd parameter to method " + targetMethodName; - } - if (removedParams.size() == 1) { - final ParameterInfoImpl p = removedParams.iterator().next(); - return "Remove " + (p.getOldIndex() + 1) + "nd parameter from method " + targetMethodName; - } - if (changedParams.size() == 1) { - final ParameterInfoImpl p = changedParams.iterator().next(); - return "Change " + (p.getOldIndex() + 1)+ "nd parameter type of method " +targetMethodName + " from " + myTargetMethod.getParameterList().getParameters()[p.getOldIndex()].getType().getPresentableText() + " to " + p.getTypeText(); - } + final String targetMethodName = myTargetMethod.getName(); + if (myTargetMethod.getContainingClass().findMethodsByName(targetMethodName, true).length == 1) { + if (newParams.size() == 1) { + final ParameterInfoImpl p = newParams.iterator().next(); + return "Add " + p.getTypeText() + " as " + (ArrayUtil.find(myNewParametersInfo, p) + 1) + " parameter to method " + targetMethodName; + } + if (removedParams.size() == 1) { + final ParameterInfoImpl p = removedParams.iterator().next(); + return "Remove " + (p.getOldIndex() + 1) + " parameter from method " + targetMethodName; + } + if (changedParams.size() == 1) { + final ParameterInfoImpl p = changedParams.iterator().next(); + return "Change " + (p.getOldIndex() + 1)+ " parameter of method " +targetMethodName + " from " + myTargetMethod.getParameterList().getParameters()[p.getOldIndex()].getType().getPresentableText() + " to " + p.getTypeText(); } - return " Change signature of " + targetMethodName + "(" + buf.toString() + ")"; } - return null; + return " Change signature of " + targetMethodName + "(" + buf.toString() + ")"; } private static String formatTypesList(ParameterInfoImpl[] infos, PsiElement context) { diff --git a/java/java-impl/src/com/intellij/packageDependencies/ui/PackagePatternProvider.java b/java/java-impl/src/com/intellij/packageDependencies/ui/PackagePatternProvider.java index 61a357729e81..b2770d7735d5 100644 --- a/java/java-impl/src/com/intellij/packageDependencies/ui/PackagePatternProvider.java +++ b/java/java-impl/src/com/intellij/packageDependencies/ui/PackagePatternProvider.java @@ -25,7 +25,9 @@ import com.intellij.ide.util.scopeChooser.GroupByScopeTypeAction; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClassOwner; @@ -92,22 +94,19 @@ public class PackagePatternProvider extends PatternDialectProvider { if (recursively) return null; FileNode fNode = (FileNode)node; final PsiElement element = fNode.getPsiElement(); - final StringBuilder buf = new StringBuilder(20); + String qName = null; if (element instanceof PsiClassOwner) { final PsiClassOwner javaFile = (PsiClassOwner)element; - String packageName = javaFile.getPackageName(); - buf.append(packageName); - if (buf.length() > 0) { - buf.append('.'); - } final VirtualFile virtualFile = javaFile.getVirtualFile(); LOG.assertTrue(virtualFile != null); + final String packageName = + ProjectRootManager.getInstance(element.getProject()).getFileIndex().getPackageNameByDirectory(virtualFile.getParent()); final String name = virtualFile.getNameWithoutExtension(); if (!JavaPsiFacade.getInstance(element.getProject()).getNameHelper().isIdentifier(name)) return null; - buf.append(name); + qName = StringUtil.getQualifiedName(packageName, name); } - if (buf.length() > 0) { - return new PatternPackageSet(buf.toString(), scope, getModulePattern(node)); + if (qName != null) { + return new PatternPackageSet(qName, scope, getModulePattern(node)); } } else if (node instanceof GeneralGroupNode) { diff --git a/java/java-impl/src/com/intellij/packageDependencies/ui/TreeModelBuilder.java b/java/java-impl/src/com/intellij/packageDependencies/ui/TreeModelBuilder.java index 25c226955110..660215a8a929 100644 --- a/java/java-impl/src/com/intellij/packageDependencies/ui/TreeModelBuilder.java +++ b/java/java-impl/src/com/intellij/packageDependencies/ui/TreeModelBuilder.java @@ -169,9 +169,14 @@ public class TreeModelBuilder { countFiles(project); myFileIndex.iterateContent(new ContentIterator() { PackageDependenciesNode lastParent = null; + VirtualFile dir = null; public boolean processFile(VirtualFile fileOrDir) { if (!fileOrDir.isDirectory()) { + if (lastParent != null && dir != fileOrDir.getParent()) { + lastParent = null; + } lastParent = buildFileNode(fileOrDir, lastParent); + dir = fileOrDir.getParent(); } else { lastParent = null; } diff --git a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java index ed573235de8b..3d1c997af34f 100644 --- a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeStaticUtil.java @@ -96,7 +96,9 @@ public class MakeStaticUtil { qualifier.resolve() : PsiTreeUtil.getParentOfType(element, PsiClass.class); if (refElement instanceof PsiClass) { if (isPartOf((PsiClass) refElement, containingClass)) { - classRefs.add(new InternalUsageInfo(element, refElement)); + if (!(originalMember instanceof PsiClass && isPartOf((PsiClass)refElement, (PsiClass)originalMember))) { + classRefs.add(new InternalUsageInfo(element, refElement)); + } } } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after1.java index 733d0fd7c2f8..e0f952b64ec0 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after1.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int)' to 'f()'" "true" +// "Remove 1 parameter from method f" "true" class A { void f() {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after10.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after10.java index 849b812e1516..63a621850328 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after10.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after10.java @@ -1,4 +1,4 @@ -// "Change signature of 'set(List)' to 'set(List, String)'" "true" +// "Add String as 2 parameter to method set" "true" import java.util.List; public class X { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after2.java index 3ab2b291d84a..81f59e908ce6 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after2.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after2.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String)' to 'f()'" "true" +// " Change signature of f(int, String)" "true" class A { void f() {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after3.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after3.java index c78ae53435f7..b9b2da617f5c 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after3.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after3.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String)' to 'f(int, char, String)'" "true" +// "Add char as 2 parameter to method f" "true" class A { void f(int i, char c, String s) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after5.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after5.java index eb912fa4fe93..41e0fdb48fd9 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after5.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after5.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String, int)' to 'f(int, int)'" "true" +// "Remove 2 parameter from method f" "true" class A { void f(int i, int i2) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after6.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after6.java index e4db10d18529..6d80ad364866 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after6.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after6.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String, int)' to 'f(int, int, int)'" "true" +// "Change 2 parameter of method f from String to int" "true" class A { void f(int i, int s, int i2) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after8.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after8.java index cd004397936f..ec3ffff07300 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after8.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after8.java @@ -1,4 +1,4 @@ -// "Change signature of 'A()' to 'A(int, int, String)'" "true" +// " Change signature of A(int, int, String)" "true" class A { A(int i, int i1, String s) { new A(1,1,"4"); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after9.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after9.java index 8a616abd4078..ac46bd572573 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after9.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/after9.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, int...)' to 'f(int, int, int...)'" "true" +// "Add int as 2 parameter to method f" "true" public class S { void f(int k, int i, int... args) { f(1,1,null);// -> f(1,1,null) diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFound.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFound.java index 1f9d4ebaf9e8..81fec921cc21 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFound.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFound.java @@ -1,4 +1,4 @@ -// "Change signature of 'Bar(String)' to 'Bar(Foo, String)'" "true" +// "Add Foo as 1 parameter to method Bar" "true" public class Bar { Bar(Foo typeParamNameFoo, String args) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFoundNotAConstructor.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFoundNotAConstructor.java index 8535575573e2..59448b0ef9d9 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFoundNotAConstructor.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterEraseTypeIfSubstitutionNotFoundNotAConstructor.java @@ -1,4 +1,4 @@ -// "Change signature of 'bar(String)' to 'bar(Foo, String)'" "true" +// "Add Foo as 1 parameter to method bar" "true" public class Bar { static void bar(Foo typeParamNameFoo, String args) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterNewParamName.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterNewParamName.java index b198f9723765..227aaf2512b5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterNewParamName.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterNewParamName.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(String)' to 'f(int, String)'" "true" +// "Add int as 1 parameter to method f" "true" public class S { void f(int i, String args) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterQualifiedTypes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterQualifiedTypes.java index 2cac380a9409..292baec43a73 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterQualifiedTypes.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterQualifiedTypes.java @@ -1,4 +1,4 @@ -// "Change signature of 'Inner2()' to 'Inner2(CoolTest.Inner1)'" "true" +// "Add Inner1 as 1 parameter to method Inner2" "true" class CoolTest { class Inner1 {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs1.java index 1a184a35cf55..f735bdd63db8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs1.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int...)' to 'f(String, int...)'" "true" +// "Add String as 1 parameter to method f" "true" public class S { void f(String s, int... args) { f("",1,1); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs2.java index ee911a36a67c..d76e42fbb52b 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs2.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/afterVarargs2.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int...)' to 'f(String, int...)'" "true" +// "Add String as 1 parameter to method f" "true" public class S { void f(String s, int... args) { f("",null); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before1.java index 46e62191c7ec..184d20bfcfe5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before1.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int)' to 'f()'" "true" +// "Remove 1 parameter from method f" "true" class A { void f(int i) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before10.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before10.java index 1b1be3a82eea..2026129a4e98 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before10.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before10.java @@ -1,4 +1,4 @@ -// "Change signature of 'set(List)' to 'set(List, String)'" "true" +// "Add String as 2 parameter to method set" "true" import java.util.List; public class X { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before2.java index 1fa565e260e4..720b471e748e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before2.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before2.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String)' to 'f()'" "true" +// " Change signature of f(int, String)" "true" class A { void f(int i,String s) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before3.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before3.java index 51a3e7bb25b0..b75ee1a0e287 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before3.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before3.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String)' to 'f(int, char, String)'" "true" +// "Add char as 2 parameter to method f" "true" class A { void f(int i,String s) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before5.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before5.java index 7a2690e8b78d..89e8dadd5c16 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before5.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before5.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String, int)' to 'f(int, int)'" "true" +// "Remove 2 parameter from method f" "true" class A { void f(int i, String s, int i2) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before6.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before6.java index 89774d62981f..da0e6178e093 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before6.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before6.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, String, int)' to 'f(int, int, int)'" "true" +// "Change 2 parameter of method f from String to int" "true" class A { void f(int i, String s, int i2) {} public void foo() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before8.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before8.java index f67feceb888f..f8797239283e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before8.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before8.java @@ -1,4 +1,4 @@ -// "Change signature of 'A()' to 'A(int, int, String)'" "true" +// " Change signature of A(int, int, String)" "true" class A { A() { new A(1,1,"4"); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before9.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before9.java index 5e90164f2fc8..7dea4a36c6c8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before9.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/before9.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int, int...)' to 'f(int, int, int...)'" "true" +// "Add int as 2 parameter to method f" "true" public class S { void f(int k, int... args) { f(1,1,null);// -> f(1,1,null) diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFound.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFound.java index 8bff157e785b..54cfb7c19e12 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFound.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFound.java @@ -1,4 +1,4 @@ -// "Change signature of 'Bar(String)' to 'Bar(Foo, String)'" "true" +// "Add Foo as 1 parameter to method Bar" "true" public class Bar { Bar(String args) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFoundNotAConstructor.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFoundNotAConstructor.java index 9da568245ad9..3142f0b403a7 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFoundNotAConstructor.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeEraseTypeIfSubstitutionNotFoundNotAConstructor.java @@ -1,4 +1,4 @@ -// "Change signature of 'bar(String)' to 'bar(Foo, String)'" "true" +// "Add Foo as 1 parameter to method bar" "true" public class Bar { static void bar(String args) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeExistSignature.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeExistSignature.java index 99f69ea6304e..7c26677ccf83 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeExistSignature.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeExistSignature.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(String)' to 'f(int)'" "false" +// "Add int as 1 parameter to method f" "false" public class Foo { void foo(Bar f) { f.f(2); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNewParamName.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNewParamName.java index 76bfbd149a22..37513c8d8e4a 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNewParamName.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNewParamName.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(String)' to 'f(int, String)'" "true" +// "Add int as 1 parameter to method f" "true" public class S { void f(String args) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNotAvailable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNotAvailable.java index 271c43049458..95bb03e7dbce 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNotAvailable.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeNotAvailable.java @@ -1,4 +1,4 @@ -// "Change signature of 'parseInt(String)' to 'parseInt(int)'" "false" +// "Change 1 parameter of method parseInt from String to int" "false" class A { public void foo() { Integer.parseInt(1); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeQualifiedTypes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeQualifiedTypes.java index d4498d432752..124acc2a73d2 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeQualifiedTypes.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeQualifiedTypes.java @@ -1,4 +1,4 @@ -// "Change signature of 'Inner2()' to 'Inner2(CoolTest.Inner1)'" "true" +// "Add Inner1 as 1 parameter to method Inner2" "true" class CoolTest { class Inner1 {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs1.java index dc0b261bdea0..4fce1077da3d 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs1.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int...)' to 'f(String, int...)'" "true" +// "Add String as 1 parameter to method f" "true" public class S { void f(int... args) { f("",1,1); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2.java index 624af318f71f..e8f8013ac809 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int...)' to 'f(String, int...)'" "true" +// "Add String as 1 parameter to method f" "true" public class S { void f(int... args) { f("",null); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2Array.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2Array.java index 4f5842e826bf..ec86800c409f 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2Array.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeMethodSignatureFromUsage/beforeVarargs2Array.java @@ -1,4 +1,4 @@ -// "Change signature of 'f(int...)' to 'f(int..., String)'" "false" +// "Add String as 2nd parameter to method f" "false" public class S { void f(int... args) { f(1,1, ""); diff --git a/java/java-tests/testData/refactoring/makeClassStatic/ThisSuperExpressions.java b/java/java-tests/testData/refactoring/makeClassStatic/ThisSuperExpressions.java new file mode 100644 index 000000000000..8c57c1d1fe5a --- /dev/null +++ b/java/java-tests/testData/refactoring/makeClassStatic/ThisSuperExpressions.java @@ -0,0 +1,20 @@ +public class m { + void aa(){} +} + +class Outer extends m{ + class Inner extends Super { + void bar(){ + + } + void foo() { + super.foo(); + this.bar(); + Outer.super.aa(); + Outer.this.aa(); + } + } +} +class Super { + void foo() {} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/makeClassStatic/ThisSuperExpressions_after.java b/java/java-tests/testData/refactoring/makeClassStatic/ThisSuperExpressions_after.java new file mode 100644 index 000000000000..5604630b579d --- /dev/null +++ b/java/java-tests/testData/refactoring/makeClassStatic/ThisSuperExpressions_after.java @@ -0,0 +1,26 @@ +public class m { + void aa(){} +} + +class Outer extends m{ + static class Inner extends Super { + private Outer anObject; + + public Inner(Outer anObject) { + this.anObject = anObject; + } + + void bar(){ + + } + void foo() { + super.foo(); + this.bar(); + anObject.aa(); + anObject.aa(); + } + } +} +class Super { + void foo() {} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java index 6fd2354fad86..8d8b570ade04 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java @@ -40,6 +40,7 @@ public class MakeClassStaticTest extends LightCodeInsightTestCase { public void testIDEADEV12762() throws Exception { perform(); } public void testNewExpressionQualifier() throws Exception {perform();} + public void testThisSuperExpressions() throws Exception {perform();} public void testNonDefaultConstructorAnonymousClass() throws Exception {perform();} public void testDefaultConstructorAnonymousClass() throws Exception {perform();} diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/InvalidPackageSet.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/InvalidPackageSet.java new file mode 100644 index 000000000000..000097d10a6a --- /dev/null +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/InvalidPackageSet.java @@ -0,0 +1,34 @@ +/* + * 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.psi.search.scope.packageSet; + +import com.intellij.openapi.vfs.VirtualFile; +import org.jetbrains.annotations.NotNull; + +/** + * User: anna + */ +public class InvalidPackageSet extends AbstractPackageSet { + + public InvalidPackageSet(@NotNull String text) { + super(text); + } + + @Override + public boolean contains(VirtualFile file, NamedScopesHolder holder) { + return false; + } +} diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedScopesHolder.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedScopesHolder.java index a263f9650368..bad77d1febbe 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedScopesHolder.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedScopesHolder.java @@ -145,12 +145,13 @@ public abstract class NamedScopesHolder implements PersistentStateComponent { public boolean isModified() { if (mySharedCheckbox.isSelected() != myShareScope) return true; - final PackageSet currentScope = myPanel.getCurrentScope(); - return !Comparing.strEqual(myPackageSet, currentScope != null ? currentScope.getText() : null); + final String currentScope = myPanel.getPatternText(); + return !Comparing.strEqual(myPackageSet, currentScope); } public void apply() throws ConfigurationException { try { myPanel.apply(); final PackageSet packageSet = myPanel.getCurrentScope(); - myScope = new NamedScope(myScope.getName(), packageSet); - myPackageSet = packageSet != null ? packageSet.getText() : null; + myPackageSet = myPanel.getPatternText(); + myScope = new NamedScope(myScope.getName(), packageSet == null ? new InvalidPackageSet(myPackageSet) : packageSet); myShareScope = mySharedCheckbox.isSelected(); } catch (ConfigurationException e) { diff --git a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java index df8137ea1f15..fa62f20c1c38 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java @@ -382,12 +382,14 @@ public class ScopeEditorPanel { public void run() { myIsInUpdate = true; if (updateText) { - final String text = myCurrentScope != null ? myCurrentScope.getText() : ""; - SwingUtilities.invokeLater(new Runnable() { - public void run() { - myPatternField.setText(text); - } - }); + final String text = myCurrentScope != null ? myCurrentScope.getText() : null; + if (text != null) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + myPatternField.setText(text); + } + }); + } } try { if (!myProject.isDisposed()) { @@ -494,15 +496,16 @@ public class ScopeEditorPanel { } public void apply() throws ConfigurationException { - if (myCurrentScope == null) { - throw new ConfigurationException(IdeBundle.message("error.correct.pattern.syntax.errors.first")); - } } public PackageSet getCurrentScope() { return myCurrentScope; } + public String getPatternText() { + return myPatternField.getText(); + } + public void reset(PackageSet packageSet, @Nullable Runnable runnable) { myCurrentScope = packageSet; myPatternField.setText(myCurrentScope == null ? "" : myCurrentScope.getText()); diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java index bc52e51535d5..b1d8a63f55de 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/FileTreeModelBuilder.java @@ -528,10 +528,15 @@ public class FileTreeModelBuilder { private class MyContentIterator implements ContentIterator { PackageDependenciesNode lastParent = null; + VirtualFile dir; public boolean processFile(VirtualFile fileOrDir) { if (!fileOrDir.isDirectory()) { + if (lastParent != null && dir != fileOrDir.getParent()) { + lastParent = null; + } lastParent = buildFileNode(fileOrDir, lastParent); + dir = fileOrDir.getParent(); } else { lastParent = null; }