don't create resolve tasks with lists of candidates which are known to be empty
This commit is contained in:
+3
-1
@@ -40,7 +40,9 @@ public class ResolutionTaskHolder<D : CallableDescriptor, F : D>(
|
|||||||
public fun addCandidates(candidatesList: List<Collection<ResolutionCandidate<D>>>) {
|
public fun addCandidates(candidatesList: List<Collection<ResolutionCandidate<D>>>) {
|
||||||
assertNotFinished()
|
assertNotFinished()
|
||||||
for (candidates in candidatesList) {
|
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)
|
val taskPrioritizerContext = TaskPrioritizerContext(name, result, context, context.scope, callableDescriptorCollectors)
|
||||||
|
|
||||||
if (explicitReceiver is QualifierReceiver) {
|
if (explicitReceiver is QualifierReceiver) {
|
||||||
val qualifierReceiver = explicitReceiver : QualifierReceiver
|
val qualifierReceiver: QualifierReceiver = explicitReceiver
|
||||||
doComputeTasks(NO_RECEIVER, taskPrioritizerContext.replaceScope(qualifierReceiver.getNestedClassesAndPackageMembersScope()))
|
doComputeTasks(NO_RECEIVER, taskPrioritizerContext.replaceScope(qualifierReceiver.getNestedClassesAndPackageMembersScope()))
|
||||||
computeTasksForClassObjectReceiver(qualifierReceiver, taskPrioritizerContext)
|
computeTasksForClassObjectReceiver(qualifierReceiver, taskPrioritizerContext)
|
||||||
}
|
}
|
||||||
@@ -252,13 +252,14 @@ public class TaskPrioritizer(private val storageManager: StorageManager) {
|
|||||||
c.context.call
|
c.context.call
|
||||||
)
|
)
|
||||||
|
|
||||||
val nonlocals = Lists.newArrayList<ResolutionCandidate<D>>()
|
if (members.isNotEmpty()) {
|
||||||
val locals = Lists.newArrayList<ResolutionCandidate<D>>()
|
val nonlocals = Lists.newArrayList<ResolutionCandidate<D>>()
|
||||||
//noinspection unchecked,RedundantTypeArguments
|
val locals = Lists.newArrayList<ResolutionCandidate<D>>()
|
||||||
splitLexicallyLocalDescriptors(members, c.scope.getContainingDeclaration(), locals, nonlocals)
|
splitLexicallyLocalDescriptors(members, c.scope.getContainingDeclaration(), locals, nonlocals)
|
||||||
|
|
||||||
localsList.add(locals)
|
localsList.add(locals)
|
||||||
nonlocalsList.add(nonlocals)
|
nonlocalsList.add(nonlocals)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//locals
|
//locals
|
||||||
|
|||||||
Reference in New Issue
Block a user