Minor. Removed parameter bindingTrace from CallableDescriptorCollector

This commit is contained in:
Stanislav Erokhin
2015-09-02 15:28:53 +03:00
parent 0d12499039
commit d3df04036e
3 changed files with 36 additions and 37 deletions
@@ -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
}
}