don't create resolve tasks with lists of candidates which are known to be empty

This commit is contained in:
Dmitry Jemerov
2015-06-02 17:20:59 +02:00
parent 365d45f49e
commit 4d5c785944
2 changed files with 11 additions and 8 deletions
@@ -40,7 +40,9 @@ public class ResolutionTaskHolder<D : CallableDescriptor, F : D>(
public fun addCandidates(candidatesList: List<Collection<ResolutionCandidate<D>>>) {
assertNotFinished()
for (candidates in candidatesList) {
addCandidates { candidates }
if (candidates.isNotEmpty()) {
addCandidates { candidates }
}
}
}
@@ -70,7 +70,7 @@ public class TaskPrioritizer(private val storageManager: StorageManager) {
val taskPrioritizerContext = TaskPrioritizerContext(name, result, context, context.scope, callableDescriptorCollectors)
if (explicitReceiver is QualifierReceiver) {
val qualifierReceiver = explicitReceiver : QualifierReceiver
val qualifierReceiver: QualifierReceiver = explicitReceiver
doComputeTasks(NO_RECEIVER, taskPrioritizerContext.replaceScope(qualifierReceiver.getNestedClassesAndPackageMembersScope()))
computeTasksForClassObjectReceiver(qualifierReceiver, taskPrioritizerContext)
}
@@ -252,13 +252,14 @@ public class TaskPrioritizer(private val storageManager: StorageManager) {
c.context.call
)
val nonlocals = Lists.newArrayList<ResolutionCandidate<D>>()
val locals = Lists.newArrayList<ResolutionCandidate<D>>()
//noinspection unchecked,RedundantTypeArguments
splitLexicallyLocalDescriptors(members, c.scope.getContainingDeclaration(), locals, nonlocals)
if (members.isNotEmpty()) {
val nonlocals = Lists.newArrayList<ResolutionCandidate<D>>()
val locals = Lists.newArrayList<ResolutionCandidate<D>>()
splitLexicallyLocalDescriptors(members, c.scope.getContainingDeclaration(), locals, nonlocals)
localsList.add(locals)
nonlocalsList.add(nonlocals)
localsList.add(locals)
nonlocalsList.add(nonlocals)
}
}
//locals