Minor: Allow passing explicit type to KotlinNameSuggester.suggestByExpressionAndType

This commit is contained in:
Alexey Sedunov
2015-11-17 20:06:52 +03:00
parent 94f58c4b3d
commit c80826aab4
5 changed files with 13 additions and 11 deletions
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.core
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.lexer.KotlinLexer
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
@@ -26,7 +25,6 @@ import org.jetbrains.kotlin.psi.psiUtil.getOutermostParenthesizerOrThis
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getParentResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.ErrorUtils
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeUtils
@@ -37,15 +35,19 @@ import java.util.*
import java.util.regex.Pattern
public object KotlinNameSuggester {
public fun suggestNamesByExpressionAndType(expression: KtExpression, bindingContext: BindingContext, validator: (String) -> Boolean, defaultName: String?): Collection<String> {
public fun suggestNamesByExpressionAndType(
expression: KtExpression,
type: KotlinType?,
bindingContext: BindingContext?,
validator: (String) -> Boolean,
defaultName: String?
): Collection<String> {
val result = LinkedHashSet<String>()
result.addNamesByExpression(expression, bindingContext, validator)
val type = bindingContext.getType(expression)
if (type != null) {
result.addNamesByType(type, validator)
(type ?: bindingContext?.getType(expression))?.let {
result.addNamesByType(it, validator)
}
if (result.isEmpty()) {