Cleanup: apply "cascade if..." inspection (+ some others)
This commit is contained in:
committed by
Mikhail Glukhikh
parent
9c06739594
commit
1d2017b0fc
+5
-6
@@ -276,12 +276,11 @@ class BasicLookupElementFactory(
|
||||
appendTailText(" for $receiverPresentation")
|
||||
|
||||
val container = descriptor.containingDeclaration
|
||||
val containerPresentation = if (container is ClassDescriptor)
|
||||
DescriptorUtils.getFqNameFromTopLevelClass(container).toString()
|
||||
else if (container is PackageFragmentDescriptor)
|
||||
container.fqName.toString()
|
||||
else
|
||||
null
|
||||
val containerPresentation = when (container) {
|
||||
is ClassDescriptor -> DescriptorUtils.getFqNameFromTopLevelClass(container).toString()
|
||||
is PackageFragmentDescriptor -> container.fqName.toString()
|
||||
else -> null
|
||||
}
|
||||
if (containerPresentation != null) {
|
||||
appendTailText(" in $containerPresentation")
|
||||
}
|
||||
|
||||
+22
-25
@@ -96,32 +96,29 @@ class CompletionBindingContextProvider(project: Project) {
|
||||
val psiElementsBeforeAndAfter = modificationScope?.let { collectPsiElementsBeforeAndAfter(modificationScope, inStatement) }
|
||||
|
||||
val prevCompletionData = prevCompletionDataCache.value.data
|
||||
if (prevCompletionData == null) {
|
||||
log("No up-to-date data from previous completion\n")
|
||||
}
|
||||
else if (block != prevCompletionData.block) {
|
||||
log("Not in the same block\n")
|
||||
}
|
||||
else if (prevStatement != prevCompletionData.prevStatement) {
|
||||
log("Previous statement is not the same\n")
|
||||
}
|
||||
else if (psiElementsBeforeAndAfter != prevCompletionData.psiElementsBeforeAndAfter) {
|
||||
log("PSI-tree has changed inside current scope\n")
|
||||
}
|
||||
else if (inStatement.isTooComplex()) {
|
||||
log("Current statement is too complex to use optimization\n")
|
||||
}
|
||||
else {
|
||||
log("Statement position is the same - analyzing only one statement:\n${inStatement.text.prependIndent(" ")}\n")
|
||||
LOG.debug("Reusing data from completion of \"${prevCompletionData.debugText}\"")
|
||||
when {
|
||||
prevCompletionData == null ->
|
||||
log("No up-to-date data from previous completion\n")
|
||||
block != prevCompletionData.block ->
|
||||
log("Not in the same block\n")
|
||||
prevStatement != prevCompletionData.prevStatement ->
|
||||
log("Previous statement is not the same\n")
|
||||
psiElementsBeforeAndAfter != prevCompletionData.psiElementsBeforeAndAfter ->
|
||||
log("PSI-tree has changed inside current scope\n")
|
||||
inStatement.isTooComplex() ->
|
||||
log("Current statement is too complex to use optimization\n")
|
||||
else -> {
|
||||
log("Statement position is the same - analyzing only one statement:\n${inStatement.text.prependIndent(" ")}\n")
|
||||
LOG.debug("Reusing data from completion of \"${prevCompletionData.debugText}\"")
|
||||
|
||||
//TODO: expected type?
|
||||
val statementContext = inStatement.analyzeInContext(scope = prevCompletionData.statementResolutionScope,
|
||||
contextExpression = block,
|
||||
dataFlowInfo = prevCompletionData.statementDataFlowInfo,
|
||||
isStatement = true)
|
||||
// we do not update prevCompletionDataCache because the same data should work
|
||||
return CompositeBindingContext.create(listOf(statementContext, prevCompletionData.bindingContext))
|
||||
//TODO: expected type?
|
||||
val statementContext = inStatement.analyzeInContext(scope = prevCompletionData.statementResolutionScope,
|
||||
contextExpression = block,
|
||||
dataFlowInfo = prevCompletionData.statementDataFlowInfo,
|
||||
isStatement = true)
|
||||
// we do not update prevCompletionDataCache because the same data should work
|
||||
return CompositeBindingContext.create(listOf(statementContext, prevCompletionData.bindingContext))
|
||||
}
|
||||
}
|
||||
|
||||
val bindingContext = resolutionFacade.analyze(position.parentsWithSelf.firstIsInstance<KtElement>(), BodyResolveMode.PARTIAL_FOR_COMPLETION)
|
||||
|
||||
+10
-13
@@ -381,20 +381,17 @@ class LookupElementFactory(
|
||||
return CallableWeight(bestWeight, receiverIndexToUse)
|
||||
}
|
||||
|
||||
private fun CallableDescriptor.callableWeightForReceiverType(receiverType: KotlinType, receiverParameterType: KotlinType): CallableWeightEnum? {
|
||||
if (TypeUtils.equalTypes(receiverType, receiverParameterType)) {
|
||||
return when {
|
||||
isExtensionForTypeParameter() -> CallableWeightEnum.typeParameterExtension
|
||||
isExtension -> CallableWeightEnum.thisTypeExtension
|
||||
else -> CallableWeightEnum.thisClassMember
|
||||
}
|
||||
}
|
||||
else if (receiverType.isSubtypeOf(receiverParameterType)) {
|
||||
return if (isExtension) CallableWeightEnum.baseTypeExtension else CallableWeightEnum.baseClassMember
|
||||
}
|
||||
else {
|
||||
return null
|
||||
private fun CallableDescriptor.callableWeightForReceiverType(
|
||||
receiverType: KotlinType,
|
||||
receiverParameterType: KotlinType
|
||||
): CallableWeightEnum? = when {
|
||||
TypeUtils.equalTypes(receiverType, receiverParameterType) -> when {
|
||||
isExtensionForTypeParameter() -> CallableWeightEnum.typeParameterExtension
|
||||
isExtension -> CallableWeightEnum.thisTypeExtension
|
||||
else -> CallableWeightEnum.thisClassMember
|
||||
}
|
||||
receiverType.isSubtypeOf(receiverParameterType) -> if (isExtension) CallableWeightEnum.baseTypeExtension else CallableWeightEnum.baseClassMember
|
||||
else -> null
|
||||
}
|
||||
|
||||
private fun CallableDescriptor.isExtensionForTypeParameter(): Boolean {
|
||||
|
||||
Reference in New Issue
Block a user