This commit is contained in:
Valentin Kipyatkov
2015-08-05 19:00:21 +03:00
parent b475860327
commit c76f6333a0
3 changed files with 5 additions and 8 deletions
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.frontend.di.createContainerForMacros
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
import org.jetbrains.kotlin.idea.completion.smart.TypesWithContainsDetector
import org.jetbrains.kotlin.idea.completion.smart.toList
import org.jetbrains.kotlin.idea.core.IterableTypesDetector
import org.jetbrains.kotlin.idea.core.mapArgumentsToParameters
import org.jetbrains.kotlin.idea.util.FuzzyType
@@ -53,6 +52,7 @@ import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils
import org.jetbrains.kotlin.types.typeUtil.containsError
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
import org.jetbrains.kotlin.utils.addToStdlib.check
import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList
import java.util.LinkedHashSet
enum class Tail {
@@ -440,13 +440,13 @@ class ExpectedInfos(
val declaration = expressionWithType.getParent() as? JetDeclarationWithBody ?: return null
if (expressionWithType != declaration.getBodyExpression() || declaration.hasBlockBody()) return null
val descriptor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, declaration] as? FunctionDescriptor ?: return null
return functionReturnValueExpectedInfo(descriptor, expectType = declaration.hasDeclaredReturnType()).toList()
return functionReturnValueExpectedInfo(descriptor, expectType = declaration.hasDeclaredReturnType()).singletonOrEmptyList()
}
private fun calculateForReturn(expressionWithType: JetExpression): Collection<ExpectedInfo>? {
val returnExpression = expressionWithType.getParent() as? JetReturnExpression ?: return null
val descriptor = returnExpression.getTargetFunctionDescriptor(bindingContext) ?: return null
return functionReturnValueExpectedInfo(descriptor, expectType = true).toList()
return functionReturnValueExpectedInfo(descriptor, expectType = true).singletonOrEmptyList()
}
private fun functionReturnValueExpectedInfo(descriptor: FunctionDescriptor, expectType: Boolean): ReturnValueExpectedInfo? {
@@ -42,6 +42,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.types.JetType
import org.jetbrains.kotlin.types.TypeUtils
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptySet
import java.util.ArrayList
import java.util.HashSet
@@ -237,7 +238,7 @@ class SmartCompletion(
if (operationToken == JetTokens.EQ || operationToken in COMPARISON_TOKENS) {
val left = parent.getLeft()
if (left is JetReferenceExpression) {
return bindingContext[BindingContext.REFERENCE_TARGET, left].toSet()
return bindingContext[BindingContext.REFERENCE_TARGET, left].singletonOrEmptySet()
}
}
}
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
import org.jetbrains.kotlin.idea.completion.*
import org.jetbrains.kotlin.idea.completion.handlers.WithExpressionPrefixInsertHandler
import org.jetbrains.kotlin.idea.completion.handlers.WithTailInsertHandler
import org.jetbrains.kotlin.idea.completion.SmartCastCalculator
import org.jetbrains.kotlin.idea.util.*
import org.jetbrains.kotlin.psi.JetExpression
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
@@ -297,9 +296,6 @@ fun LookupElementFactory.createLookupElement(
return element
}
fun <T : Any> T?.toList(): List<T> = if (this != null) listOf(this) else listOf()
fun <T : Any> T?.toSet(): Set<T> = if (this != null) setOf(this) else setOf()
enum class SmartCompletionItemPriority {
IT,
TRUE,