Don't use PsiElement.getReference() on JetElement

This commit is contained in:
Valentin Kipyatkov
2015-07-10 16:50:27 +03:00
parent d8d00a83bb
commit 283c8668f5
47 changed files with 214 additions and 177 deletions
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.idea.completion.smart.LambdaItems
import org.jetbrains.kotlin.idea.completion.smart.SmartCompletion
import org.jetbrains.kotlin.idea.core.*
import org.jetbrains.kotlin.idea.references.JetSimpleNameReference
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.util.CallType
import org.jetbrains.kotlin.idea.util.ShadowedDeclarationsFilter
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
@@ -84,7 +85,7 @@ abstract class CompletionSession(protected val configuration: CompletionSessionC
protected val expression: JetExpression?
init {
val reference = position.getParent()?.getReferences()?.firstIsInstanceOrNull<JetSimpleNameReference>()
val reference = (position.getParent() as? JetSimpleNameExpression)?.mainReference
if (reference != null) {
if (reference.expression is JetLabelReferenceExpression) {
this.nameExpression = null
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.idea.JetIcons
import org.jetbrains.kotlin.idea.completion.handlers.WithTailInsertHandler
import org.jetbrains.kotlin.idea.core.mapArgumentsToParameters
import org.jetbrains.kotlin.idea.references.JetReference
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.name.Name
@@ -80,9 +81,8 @@ object NamedArgumentCompletion {
val callElement = valueArgument.getStrictParentOfType<JetCallElement>() ?: return
val callSimpleName = callElement.getCallNameExpression() ?: return
val callReference = callSimpleName.getReference() as JetReference
val functionDescriptors = callReference.resolveToDescriptors(bindingContext).map { it as? FunctionDescriptor }.filterNotNull()
val functionDescriptors = callSimpleName.mainReference.resolveToDescriptors(bindingContext)
.filterIsInstance<FunctionDescriptor>()
for (funDescriptor in functionDescriptors) {
if (!funDescriptor.hasStableParameterNames()) continue