IDEA-22821

This commit is contained in:
Alexey Kudravtsev
2010-02-01 13:40:17 +03:00
parent ad5c1674ec
commit f773be4167
2 changed files with 15 additions and 12 deletions
@@ -905,7 +905,7 @@ public class PsiClassImplUtil {
//see com.intellij.psi.impl.PsiFileFactoryImpl#createFileFromText(CharSequence,PsiFile)
final PsiFile original1 = file1.getUserData(PsiFileFactory.ORIGINAL_FILE);
final PsiFile original2 = file2.getUserData(PsiFileFactory.ORIGINAL_FILE);
if ((original1 == original2 && original1 != null)
if (original1 == original2 && original1 != null
|| original1 == file2 || original2 == file1) {
return true;
}
@@ -913,12 +913,8 @@ public class PsiClassImplUtil {
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(aClass.getProject()).getFileIndex();
final VirtualFile vfile1 = file1.getViewProvider().getVirtualFile();
final VirtualFile vfile2 = file2.getViewProvider().getVirtualFile();
if ((fileIndex.isInSource(vfile1) || fileIndex.isInLibraryClasses(vfile1)) &&
(fileIndex.isInSource(vfile2) || fileIndex.isInLibraryClasses(vfile2))) {
return true;
}
return false;
return (fileIndex.isInSource(vfile1) || fileIndex.isInLibraryClasses(vfile1)) &&
(fileIndex.isInSource(vfile2) || fileIndex.isInLibraryClasses(vfile2));
}
private static PsiElement originalElement(PsiClass aClass) {
@@ -37,14 +37,15 @@ import java.util.*;
public class JavaMethodsConflictResolver implements PsiConflictResolver{
private final PsiElement myArgumentsList;
private final PsiType[] myActualParameterTypes;
private static final Function<PsiExpression,PsiType> EXPRESSION_TO_TYPE = new Function<PsiExpression, PsiType>() {
public PsiType fun(final PsiExpression expression) {
return expression.getType();
}
};
public JavaMethodsConflictResolver(PsiExpressionList list) {
myArgumentsList = list;
myActualParameterTypes = ContainerUtil.map2Array(list.getExpressions(), PsiType.class, new Function<PsiExpression, PsiType>() {
public PsiType fun(final PsiExpression expression) {
return expression.getType();
}
});
myActualParameterTypes = ContainerUtil.map2Array(list.getExpressions(), PsiType.class, EXPRESSION_TO_TYPE);
}
public JavaMethodsConflictResolver(final PsiElement argumentsList, final PsiType[] actualParameterTypes) {
@@ -376,11 +377,17 @@ public class JavaMethodsConflictResolver implements PsiConflictResolver{
if (MethodSignatureUtil.isSubsignature(method1.getSignature(info1.getSubstitutor()), method2.getSignature(info2.getSubstitutor()))) {
isMoreSpecific = Specifics.SECOND;
}
else if (method1.hasModifierProperty(PsiModifier.STATIC) && method2.hasModifierProperty(PsiModifier.STATIC)) {
isMoreSpecific = Specifics.SECOND;
}
}
else if (class1.isInheritor(class2, true) || class2.isInterface()) {
if (MethodSignatureUtil.isSubsignature(method2.getSignature(info2.getSubstitutor()), method1.getSignature(info1.getSubstitutor()))) {
isMoreSpecific = Specifics.FIRST;
}
else if (method1.hasModifierProperty(PsiModifier.STATIC) && method2.hasModifierProperty(PsiModifier.STATIC)) {
isMoreSpecific = Specifics.FIRST;
}
}
}
if (isMoreSpecific == null) {