mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-22821
This commit is contained in:
@@ -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) {
|
||||
|
||||
+12
-5
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user