From 55122cda9e3763485dcb85b937efb50ca3481b35 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 16 Oct 2015 18:27:29 +0300 Subject: [PATCH] Minor changes on code review --- .../kotlin/idea/highlighter/JetPsiChecker.kt | 2 +- .../idea/quickfix/AddFunctionParametersFix.kt | 2 +- .../ChangeFunctionLiteralSignatureFix.kt | 2 +- .../idea/quickfix/ChangeFunctionSignatureFix.kt | 17 +++++++---------- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetPsiChecker.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetPsiChecker.kt index e7340499711..2527c4669c8 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetPsiChecker.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/JetPsiChecker.kt @@ -259,7 +259,7 @@ public open class JetPsiChecker : Annotator, HighlightRangeExtension { private val LOG = Logger.getInstance(JetPsiChecker::class.java) - private val checkedQuickFixClasses = HashSet>() + private val checkedQuickFixClasses = Collections.synchronizedSet(HashSet>()) private fun check(quickFixClass: Class<*>) { if (!checkedQuickFixClasses.add(quickFixClass)) return diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt index 7991e46a558..d3b191e21e8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt @@ -131,7 +131,7 @@ public class AddFunctionParametersFix( private fun getNewParameterInfo( functionDescriptor: FunctionDescriptor, argument: ValueArgument, - validator: Function1 + validator: (String) -> Boolean ): JetParameterInfo { val name = getNewArgumentName(argument, validator) val expression = argument.getArgumentExpression() diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionLiteralSignatureFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionLiteralSignatureFix.kt index 2d47f86f23c..966c71a895f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionLiteralSignatureFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionLiteralSignatureFix.kt @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetFunctionLiteral import org.jetbrains.kotlin.types.JetType -class ChangeFunctionLiteralSignatureFix( +class ChangeFunctionLiteralSignatureFix private constructor( functionLiteral: JetFunctionLiteral, functionDescriptor: FunctionDescriptor, private val parameterTypes: List diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt index 4e01f6f2e28..e7aef8e5b56 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt @@ -88,19 +88,17 @@ abstract class ChangeFunctionSignatureFix( return Data(element, descriptor) } - override fun createFix(data: Data) = createFix(data.callElement, data.callElement, data.descriptor) + override fun createFix(data: Data) = createFix(data.callElement, data.descriptor) - private fun createFix(callElement: JetCallElement, context: PsiElement, descriptor: CallableDescriptor): ChangeFunctionSignatureFix? { - val functionDescriptor = when (descriptor) { - is FunctionDescriptor -> descriptor as FunctionDescriptor - else -> if (descriptor is ValueParameterDescriptor) descriptor.containingDeclaration as? FunctionDescriptor - else null - } ?: return null + private fun createFix(callElement: JetCallElement, descriptor: CallableDescriptor): ChangeFunctionSignatureFix? { + val functionDescriptor = descriptor as? FunctionDescriptor + ?: (descriptor as? ValueParameterDescriptor)?.containingDeclaration as? FunctionDescriptor + ?: return null if (functionDescriptor.kind == SYNTHESIZED) return null if (descriptor is ValueParameterDescriptor) { - return RemoveParameterFix(context, functionDescriptor, descriptor) + return RemoveParameterFix(callElement, functionDescriptor, descriptor) } else { val parameters = functionDescriptor.valueParameters @@ -111,8 +109,7 @@ abstract class ChangeFunctionSignatureFix( val call = callElement.getCall(bindingContext) ?: return null val argumentToParameter = call.mapArgumentsToParameters(functionDescriptor) val hasTypeMismatches = argumentToParameter.any { - val argument = it.key - val parameter = it.value + val (argument, parameter) = it val argumentType = argument.getArgumentExpression()?.let { bindingContext.getType(it) } argumentType == null || !JetTypeChecker.DEFAULT.isSubtypeOf(argumentType, parameter.type) }