More direct resolving function group from Java.
This commit is contained in:
+11
-7
@@ -267,7 +267,6 @@ public final class JavaFunctionResolver {
|
|||||||
@NotNull ClassOrNamespaceDescriptor owner, @NotNull PsiClass psiClass,
|
@NotNull ClassOrNamespaceDescriptor owner, @NotNull PsiClass psiClass,
|
||||||
NamedMembers namedMembers, Name methodName, PsiDeclarationProvider scopeData
|
NamedMembers namedMembers, Name methodName, PsiDeclarationProvider scopeData
|
||||||
) {
|
) {
|
||||||
final Set<FunctionDescriptor> functions = new HashSet<FunctionDescriptor>();
|
|
||||||
|
|
||||||
Set<SimpleFunctionDescriptor> functionsFromSupertypes = null;
|
Set<SimpleFunctionDescriptor> functionsFromSupertypes = null;
|
||||||
if (owner instanceof ClassDescriptor) {
|
if (owner instanceof ClassDescriptor) {
|
||||||
@@ -290,6 +289,8 @@ public final class JavaFunctionResolver {
|
|||||||
ContainerUtil.addIfNotNull(functionsFromCurrent, resolveSamConstructor((NamespaceDescriptor) owner, namedMembers));
|
ContainerUtil.addIfNotNull(functionsFromCurrent, resolveSamConstructor((NamespaceDescriptor) owner, namedMembers));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final Set<FunctionDescriptor> fakeOverrides = new HashSet<FunctionDescriptor>();
|
||||||
if (owner instanceof ClassDescriptor) {
|
if (owner instanceof ClassDescriptor) {
|
||||||
ClassDescriptor classDescriptor = (ClassDescriptor) owner;
|
ClassDescriptor classDescriptor = (ClassDescriptor) owner;
|
||||||
|
|
||||||
@@ -297,7 +298,7 @@ public final class JavaFunctionResolver {
|
|||||||
new OverrideResolver.DescriptorSink() {
|
new OverrideResolver.DescriptorSink() {
|
||||||
@Override
|
@Override
|
||||||
public void addToScope(@NotNull CallableMemberDescriptor fakeOverride) {
|
public void addToScope(@NotNull CallableMemberDescriptor fakeOverride) {
|
||||||
functions.add((FunctionDescriptor) fakeOverride);
|
fakeOverrides.add((FunctionDescriptor) fakeOverride);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -310,16 +311,19 @@ public final class JavaFunctionResolver {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
OverrideResolver.resolveUnknownVisibilities(functions, trace);
|
OverrideResolver.resolveUnknownVisibilities(fakeOverrides, trace);
|
||||||
functions.addAll(functionsFromCurrent);
|
|
||||||
|
|
||||||
|
Set<FunctionDescriptor> functions = Sets.newHashSet(fakeOverrides);
|
||||||
if (isEnumClassObject(owner)) {
|
if (isEnumClassObject(owner)) {
|
||||||
for (FunctionDescriptor functionDescriptor : Lists.newArrayList(functions)) {
|
for (FunctionDescriptor functionDescriptor : functionsFromCurrent) {
|
||||||
if (isEnumValueOfMethod(functionDescriptor) || isEnumValuesMethod(functionDescriptor)) {
|
if (!(isEnumValueOfMethod(functionDescriptor) || isEnumValuesMethod(functionDescriptor))) {
|
||||||
functions.remove(functionDescriptor);
|
functions.add(functionDescriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
functions.addAll(functionsFromCurrent);
|
||||||
|
}
|
||||||
|
|
||||||
return functions;
|
return functions;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user