From 5b3ff187dab60e8fc01f70b376ecb31d0f028165 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 31 Mar 2015 17:03:49 +0300 Subject: [PATCH] Create from Usage: Do not search usages of non-local properties --- .../callableBuilder/typeUtils.kt | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt index f8dd34fef89..1dca6cc8b55 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt @@ -16,33 +16,28 @@ package org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder -import org.jetbrains.kotlin.types.JetType -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor -import org.jetbrains.kotlin.resolve.DescriptorUtils -import org.jetbrains.kotlin.resolve.scopes.JetScope -import org.jetbrains.kotlin.resolve.BindingContext import com.intellij.refactoring.psi.SearchUtils -import org.jetbrains.kotlin.idea.references.JetSimpleNameReference -import org.jetbrains.kotlin.types.ErrorUtils -import org.jetbrains.kotlin.types.TypeUtils -import org.jetbrains.kotlin.types.checker.JetTypeChecker -import org.jetbrains.kotlin.types.Variance -import org.jetbrains.kotlin.types.TypeProjectionImpl -import org.jetbrains.kotlin.types.JetTypeImpl -import org.jetbrains.kotlin.psi.psiUtil.getAssignmentByLHS -import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsStatement import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor +import org.jetbrains.kotlin.idea.references.JetSimpleNameReference import org.jetbrains.kotlin.idea.util.makeNotNullable -import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType -import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.resolve.calls.callUtil.* -import org.jetbrains.kotlin.resolve.calls.smartcasts.* -import java.util.* +import org.jetbrains.kotlin.psi.psiUtil.getAssignmentByLHS +import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsStatement +import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory +import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass +import org.jetbrains.kotlin.resolve.scopes.JetScope +import org.jetbrains.kotlin.types.* +import org.jetbrains.kotlin.types.checker.JetTypeChecker +import java.util.HashSet +import java.util.LinkedHashSet private fun JetType.contains(inner: JetType): Boolean { return JetTypeChecker.DEFAULT.equalTypes(this, inner) || getArguments().any { inner in it.getType() } @@ -154,9 +149,9 @@ fun JetExpression.guessTypes( guessType(context) } } - parent is JetVariableDeclaration -> { + parent is JetProperty && parent.isLocal() -> { // the expression is the RHS of a variable assignment with a specified type - val variable = parent as JetVariableDeclaration + val variable = parent val typeRef = variable.getTypeReference() if (typeRef != null) { // and has a specified type