Fixed special item after "super." not working for fake override super
This commit is contained in:
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue;
|
||||
import org.jetbrains.kotlin.types.KotlinType;
|
||||
import org.jetbrains.kotlin.types.TypeConstructor;
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker;
|
||||
import org.jetbrains.kotlin.utils.DFS;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -504,30 +503,6 @@ public class OverridingUtil {
|
||||
return maxVisibility;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<? extends CallableDescriptor> getTopmostOverridenDescriptors(@NotNull CallableDescriptor originalDescriptor) {
|
||||
return DFS.dfs(
|
||||
Collections.singletonList(originalDescriptor),
|
||||
new DFS.Neighbors<CallableDescriptor>() {
|
||||
@NotNull
|
||||
@Override
|
||||
public Iterable<? extends CallableDescriptor> getNeighbors(CallableDescriptor current) {
|
||||
return current.getOverriddenDescriptors();
|
||||
}
|
||||
},
|
||||
new DFS.CollectingNodeHandler<CallableDescriptor, CallableDescriptor, ArrayList<CallableDescriptor>>(
|
||||
new ArrayList<CallableDescriptor>()
|
||||
) {
|
||||
@Override
|
||||
public void afterChildren(CallableDescriptor current) {
|
||||
if (current.getOverriddenDescriptors().isEmpty()) {
|
||||
result.add(current);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public interface DescriptorSink {
|
||||
void addFakeOverride(@NotNull CallableMemberDescriptor fakeOverride);
|
||||
|
||||
|
||||
@@ -17,8 +17,27 @@
|
||||
package org.jetbrains.kotlin.resolve
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.utils.DFS
|
||||
import java.util.*
|
||||
|
||||
fun CallableDescriptor.getOriginalTopmostOverriddenDescriptors(): Set<CallableDescriptor> {
|
||||
return OverridingUtil.getTopmostOverridenDescriptors(this).mapTo(LinkedHashSet()) { it.original }
|
||||
fun <TDescriptor : CallableDescriptor> TDescriptor.findTopMostOverriddenDescriptors(): List<TDescriptor> {
|
||||
return DFS.dfs(
|
||||
listOf(this),
|
||||
{ current -> current.overriddenDescriptors },
|
||||
object : DFS.CollectingNodeHandler<CallableDescriptor, CallableDescriptor, ArrayList<TDescriptor>>(ArrayList<TDescriptor>()) {
|
||||
override fun afterChildren(current: CallableDescriptor) {
|
||||
if (current.overriddenDescriptors.isEmpty()) {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
result.add(current as TDescriptor)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
fun <TDescriptor : CallableDescriptor> TDescriptor.findOriginalTopMostOverriddenDescriptors(): Set<TDescriptor> {
|
||||
return findTopMostOverriddenDescriptors().mapTo(LinkedHashSet<TDescriptor>()) {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
(it.original as TDescriptor)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user