Simplify and rename function type utilities

- isFunctionType -> change the only usage in TracingStrategyForInvoke to check
  for exact function type
- isExtensionFunctionType -> change all usages to check for exact extension
  function type because extension function types are uninheritable in Kotlin
- isExactFunctionType -> isNonExtensionFunctionType
- isExactExtensionFunctionType -> isExtensionFunctionType
- isExactFunctionOrExtensionFunctionType -> isFunctionType
- isFunctionOrExtensionFunctionType -> isFunctionTypeOrSubtype
This commit is contained in:
Alexander Udalov
2016-03-14 14:44:04 +03:00
parent e308f2acdb
commit c18fab82e5
32 changed files with 73 additions and 87 deletions
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.idea.core
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.builtins.getReturnTypeFromFunctionType
import org.jetbrains.kotlin.builtins.isExactFunctionOrExtensionFunctionType
import org.jetbrains.kotlin.builtins.isFunctionType
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.idea.resolve.ideService
@@ -320,7 +320,7 @@ class ExpectedInfos(
if (parameter.hasDefaultValue()) return false // parameter is optional
if (parameter.varargElementType != null) return false // vararg arguments list can be empty
// last parameter of functional type can be placed outside parenthesis:
if (!isArrayAccess && parameter == parameters.last() && parameter.type.isExactFunctionOrExtensionFunctionType) return false
if (!isArrayAccess && parameter == parameters.last() && parameter.type.isFunctionType) return false
return true
}
@@ -364,7 +364,7 @@ class ExpectedInfos(
parameter.type
if (isFunctionLiteralArgument) {
if (parameterType.isExactFunctionOrExtensionFunctionType) {
if (parameterType.isFunctionType) {
add(ExpectedInfo.createForArgument(parameterType, expectedName, null, argumentPositionData))
}
}
@@ -483,7 +483,7 @@ class ExpectedInfos(
val literalExpression = functionLiteral.parent as KtLambdaExpression
return calculate(literalExpression)
.mapNotNull { it.fuzzyType }
.filter { it.type.isExactFunctionOrExtensionFunctionType }
.filter { it.type.isFunctionType }
.map {
val returnType = getReturnTypeFromFunctionType(it.type)
ExpectedInfo(FuzzyType(returnType, it.freeParameters), null, Tail.RBRACE)
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.idea.core
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.isExactFunctionOrExtensionFunctionType
import org.jetbrains.kotlin.builtins.isFunctionType
import org.jetbrains.kotlin.lexer.KotlinLexer
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
@@ -216,7 +216,7 @@ object KotlinNameSuggester {
}
}
}
else if (type.isExactFunctionOrExtensionFunctionType) {
else if (type.isFunctionType) {
addName("function", validator)
}
else {