Minor. Removed parameter bindingTrace from CallableDescriptorCollector
This commit is contained in:
+28
-29
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.isStaticNestedClass
|
||||
import org.jetbrains.kotlin.resolve.LibrarySourceHacks
|
||||
import org.jetbrains.kotlin.resolve.calls.tasks.createSynthesizedInvokes
|
||||
@@ -35,13 +34,13 @@ import org.jetbrains.kotlin.utils.singletonOrEmptyList
|
||||
|
||||
public interface CallableDescriptorCollector<D : CallableDescriptor> {
|
||||
|
||||
public fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<D>
|
||||
public fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation): Collection<D>
|
||||
|
||||
public fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<D>
|
||||
public fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<D>
|
||||
|
||||
public fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<D>
|
||||
public fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<D>
|
||||
|
||||
public fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation, bindingTrace: BindingTrace): Collection<D>
|
||||
public fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation): Collection<D>
|
||||
}
|
||||
|
||||
private fun <D : CallableDescriptor> CallableDescriptorCollector<D>.withDefaultFilter() = filtered { !LibrarySourceHacks.shouldSkip(it) }
|
||||
@@ -73,11 +72,11 @@ public fun <D : CallableDescriptor> CallableDescriptorCollectors<D>.filtered(fil
|
||||
|
||||
private object FunctionCollector : CallableDescriptorCollector<FunctionDescriptor> {
|
||||
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<FunctionDescriptor> {
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation): Collection<FunctionDescriptor> {
|
||||
return scope.getFunctions(name, location).filter { it.extensionReceiverParameter == null } + getConstructors(scope, name, location)
|
||||
}
|
||||
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<FunctionDescriptor> {
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<FunctionDescriptor> {
|
||||
val receiverScope = receiver.memberScope
|
||||
val members = receiverScope.getFunctions(name, location)
|
||||
val constructors = getConstructors(receiverScope, name, location, { !isStaticNestedClass(it) })
|
||||
@@ -95,11 +94,11 @@ private object FunctionCollector : CallableDescriptorCollector<FunctionDescripto
|
||||
return members + constructors
|
||||
}
|
||||
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<FunctionDescriptor> {
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<FunctionDescriptor> {
|
||||
return getConstructors(receiver.memberScope, name, location, { isStaticNestedClass(it) })
|
||||
}
|
||||
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation, bindingTrace: BindingTrace): Collection<FunctionDescriptor> {
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation): Collection<FunctionDescriptor> {
|
||||
val functions = scope.getFunctions(name, location)
|
||||
val (extensions, nonExtensions) = functions.partition { it.extensionReceiverParameter != null }
|
||||
val syntheticExtensions = scope.getSyntheticExtensionFunctions(receiverTypes, name, location)
|
||||
@@ -138,7 +137,7 @@ private object VariableCollector : CallableDescriptorCollector<VariableDescripto
|
||||
return FakeCallableDescriptorForObject(classifier)
|
||||
}
|
||||
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
val localVariable = scope.getLocalVariable(name)
|
||||
if (localVariable != null) {
|
||||
return setOf(localVariable)
|
||||
@@ -148,18 +147,18 @@ private object VariableCollector : CallableDescriptorCollector<VariableDescripto
|
||||
return if (fakeDescriptor != null) properties + fakeDescriptor else properties
|
||||
}
|
||||
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
val memberScope = receiver.memberScope
|
||||
val properties = memberScope.getProperties(name, location)
|
||||
val fakeDescriptor = getFakeDescriptorForObject(memberScope, name, location)
|
||||
return if (fakeDescriptor != null) properties + fakeDescriptor else properties
|
||||
}
|
||||
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
return listOf()
|
||||
}
|
||||
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
// property may have an extension function type, we check the applicability later to avoid an early computing of deferred types
|
||||
return scope.getLocalVariable(name).singletonOrEmptyList() +
|
||||
scope.getProperties(name, location) +
|
||||
@@ -173,20 +172,20 @@ private object PropertyCollector : CallableDescriptorCollector<VariableDescripto
|
||||
private fun filterProperties(variableDescriptors: Collection<VariableDescriptor>) =
|
||||
variableDescriptors.filter { it is PropertyDescriptor }
|
||||
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getNonExtensionsByName(scope, name, location, bindingTrace))
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getNonExtensionsByName(scope, name, location))
|
||||
}
|
||||
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getMembersByName(receiver, name, location, bindingTrace))
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getMembersByName(receiver, name, location))
|
||||
}
|
||||
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getStaticMembersByName(receiver, name, location, bindingTrace))
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getStaticMembersByName(receiver, name, location))
|
||||
}
|
||||
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation, bindingTrace: BindingTrace): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getExtensionsByName(scope, name, receiverTypes, location, bindingTrace))
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation): Collection<VariableDescriptor> {
|
||||
return filterProperties(VARIABLES_COLLECTOR.getExtensionsByName(scope, name, receiverTypes, location))
|
||||
}
|
||||
|
||||
override fun toString() = "PROPERTIES"
|
||||
@@ -195,20 +194,20 @@ private object PropertyCollector : CallableDescriptorCollector<VariableDescripto
|
||||
private fun <D : CallableDescriptor> CallableDescriptorCollector<D>.filtered(filter: (D) -> Boolean): CallableDescriptorCollector<D> {
|
||||
val delegate = this
|
||||
return object : CallableDescriptorCollector<D> {
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<D> {
|
||||
return delegate.getNonExtensionsByName(scope, name, location, bindingTrace).filter(filter)
|
||||
override fun getNonExtensionsByName(scope: JetScope, name: Name, location: LookupLocation): Collection<D> {
|
||||
return delegate.getNonExtensionsByName(scope, name, location).filter(filter)
|
||||
}
|
||||
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<D> {
|
||||
return delegate.getMembersByName(receiver, name, location, bindingTrace).filter(filter)
|
||||
override fun getMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<D> {
|
||||
return delegate.getMembersByName(receiver, name, location).filter(filter)
|
||||
}
|
||||
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation, bindingTrace: BindingTrace): Collection<D> {
|
||||
return delegate.getStaticMembersByName(receiver, name, location, bindingTrace).filter(filter)
|
||||
override fun getStaticMembersByName(receiver: JetType, name: Name, location: LookupLocation): Collection<D> {
|
||||
return delegate.getStaticMembersByName(receiver, name, location).filter(filter)
|
||||
}
|
||||
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation, bindingTrace: BindingTrace): Collection<D> {
|
||||
return delegate.getExtensionsByName(scope, name, receiverTypes, location, bindingTrace).filter(filter)
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation): Collection<D> {
|
||||
return delegate.getExtensionsByName(scope, name, receiverTypes, location).filter(filter)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
|
||||
@@ -183,7 +183,7 @@ public class TaskPrioritizer(
|
||||
convertWithImpliedThis(
|
||||
c.scope,
|
||||
explicitReceiver.value,
|
||||
callableDescriptorCollector.getExtensionsByName(c.scope.asJetScope(), c.name, explicitReceiver.types, createLookupLocation(c), c.context.trace),
|
||||
callableDescriptorCollector.getExtensionsByName(c.scope.asJetScope(), c.name, explicitReceiver.types, createLookupLocation(c)),
|
||||
createKind(EXTENSION_RECEIVER, isExplicit),
|
||||
c.context.call
|
||||
)
|
||||
@@ -202,10 +202,10 @@ public class TaskPrioritizer(
|
||||
val members = Lists.newArrayList<ResolutionCandidate<D>>()
|
||||
for (type in explicitReceiver.types) {
|
||||
val membersForThisVariant = if (staticMembers) {
|
||||
callableDescriptorCollector.getStaticMembersByName(type, c.name, createLookupLocation(c), c.context.trace)
|
||||
callableDescriptorCollector.getStaticMembersByName(type, c.name, createLookupLocation(c))
|
||||
}
|
||||
else {
|
||||
callableDescriptorCollector.getMembersByName(type, c.name, createLookupLocation(c), c.context.trace)
|
||||
callableDescriptorCollector.getMembersByName(type, c.name, createLookupLocation(c))
|
||||
}
|
||||
convertWithReceivers(
|
||||
membersForThisVariant,
|
||||
@@ -234,7 +234,7 @@ public class TaskPrioritizer(
|
||||
val dynamicScope = DynamicCallableDescriptors.createDynamicDescriptorScope(c.context.call, c.scope.ownerDescriptor)
|
||||
|
||||
val dynamicDescriptors = c.callableDescriptorCollectors.flatMap {
|
||||
it.getNonExtensionsByName(dynamicScope, c.name, createLookupLocation(c), c.context.trace)
|
||||
it.getNonExtensionsByName(dynamicScope, c.name, createLookupLocation(c))
|
||||
}
|
||||
|
||||
convertWithReceivers(dynamicDescriptors, explicitReceiver.value, NO_RECEIVER, createKind(DISPATCH_RECEIVER, isExplicit), c.context.call)
|
||||
@@ -255,7 +255,7 @@ public class TaskPrioritizer(
|
||||
) {
|
||||
c.result.addCandidates {
|
||||
val memberExtensions =
|
||||
callableDescriptorCollector.getExtensionsByName(dispatchReceiver.type.memberScope, c.name, receiverParameter.types, createLookupLocation(c), c.context.trace)
|
||||
callableDescriptorCollector.getExtensionsByName(dispatchReceiver.type.memberScope, c.name, receiverParameter.types, createLookupLocation(c))
|
||||
convertWithReceivers(memberExtensions, dispatchReceiver, receiverParameter.value, receiverKind, c.context.call)
|
||||
}
|
||||
}
|
||||
@@ -270,7 +270,7 @@ public class TaskPrioritizer(
|
||||
|
||||
val members = convertWithImpliedThisAndNoReceiver(
|
||||
c.scope,
|
||||
callableDescriptorCollector.getNonExtensionsByName(c.scope.asJetScope(), c.name, createLookupLocation(c), c.context.trace),
|
||||
callableDescriptorCollector.getNonExtensionsByName(c.scope.asJetScope(), c.name, createLookupLocation(c)),
|
||||
c.context.call
|
||||
)
|
||||
|
||||
|
||||
@@ -225,8 +225,8 @@ public fun DeclarationDescriptor.isDynamic(): Boolean {
|
||||
}
|
||||
|
||||
class CollectorForDynamicReceivers<D: CallableDescriptor>(val delegate: CallableDescriptorCollector<D>) : CallableDescriptorCollector<D> by delegate {
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation, bindingTrace: BindingTrace): Collection<D> {
|
||||
return delegate.getExtensionsByName(scope, name, receiverTypes, location, bindingTrace).filter {
|
||||
override fun getExtensionsByName(scope: JetScope, name: Name, receiverTypes: Collection<JetType>, location: LookupLocation): Collection<D> {
|
||||
return delegate.getExtensionsByName(scope, name, receiverTypes, location).filter {
|
||||
it.getExtensionReceiverParameter()?.getType()?.isDynamic() ?: false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user