Introduce & use resolveToDescriptorIfAny<DescriptorType>

This allows to omit casts after resolveToDescriptorIfAny() call,
get different descriptors for different receivers (in future),
distinguish parameter / property situation for primary constructor
This commit is contained in:
Mikhail Glukhikh
2018-02-14 17:40:36 +03:00
parent 8c97f8cbb5
commit 7a1b3cd224
4 changed files with 21 additions and 10 deletions
@@ -40,7 +40,7 @@ class RemoveUnusedFunctionParameterFix(parameter: KtParameter) : KotlinQuickFixA
val element = element ?: return
val primaryConstructor = element.parent?.parent as? KtPrimaryConstructor
val parameterList = element.parent as? KtParameterList
val parameterDescriptor = element.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? ValueParameterDescriptor ?: return
val parameterDescriptor = element.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return
ChangeFunctionSignatureFix.runRemoveParameter(parameterDescriptor, element)
val nextParameter = parameterList?.parameters?.getOrNull(parameterDescriptor.index)
if (nextParameter != null) {
@@ -41,9 +41,7 @@ import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*
import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.ReturnValueInstruction
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.traverse
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.*
import org.jetbrains.kotlin.idea.core.isOverridable