From 0c74675e6e846b832c5991f8a5ee42889e302fd0 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Tue, 3 Mar 2015 16:14:08 +0300 Subject: [PATCH] Changed element parameter for EXPECTED_PARAMETERS_NUMBER_MISMATCH diagnostic --- .../src/org/jetbrains/kotlin/diagnostics/Errors.java | 4 ++-- .../kotlin/diagnostics/PositioningStrategies.kt | 9 ++++++--- .../kotlin/idea/quickfix/ChangeFunctionSignatureFix.java | 8 ++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index d750ac7eaf2..440f830cd13 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -614,8 +614,8 @@ public interface Errors { DiagnosticFactory1 EXPECTED_PARAMETER_TYPE_MISMATCH = DiagnosticFactory1.create(ERROR); DiagnosticFactory1 EXPECTED_RETURN_TYPE_MISMATCH = DiagnosticFactory1.create(ERROR); - DiagnosticFactory2> EXPECTED_PARAMETERS_NUMBER_MISMATCH = - DiagnosticFactory2.create(ERROR, FUNCTION_LITERAL_PARAMETERS); + DiagnosticFactory2> EXPECTED_PARAMETERS_NUMBER_MISMATCH = + DiagnosticFactory2.create(ERROR, FUNCTION_PARAMETERS); DiagnosticFactory2 INCOMPATIBLE_TYPES = DiagnosticFactory2.create(ERROR); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt index 857caff2bb2..ea419f13417 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt @@ -342,13 +342,16 @@ public object PositioningStrategies { } } - public val FUNCTION_LITERAL_PARAMETERS: PositioningStrategy = object : PositioningStrategy() { - override fun mark(element: JetFunctionLiteral): List { + public val FUNCTION_PARAMETERS: PositioningStrategy = object : PositioningStrategy() { + override fun mark(element: JetFunction): List { val valueParameterList = element.getValueParameterList() if (valueParameterList != null) { return markElement(valueParameterList) } - return markNode(element.getLBrace().getNode()) + if (element is JetFunctionLiteral) { + return markNode(element.getLBrace().getNode()) + } + return DECLARATION_SIGNATURE_OR_DEFAULT.mark(element) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.java index 738ab0f3ab9..7554a5c5ef7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.java @@ -165,15 +165,15 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction> diagnosticWithParameters = + DiagnosticWithParameters2> diagnosticWithParameters = EXPECTED_PARAMETERS_NUMBER_MISMATCH.cast(diagnostic); - JetFunctionLiteral functionLiteral = diagnosticWithParameters.getPsiElement(); + JetFunction functionLiteral = diagnosticWithParameters.getPsiElement(); BindingContext bindingContext = ResolvePackage.analyzeFully(functionLiteral.getContainingJetFile()); DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, functionLiteral); - if (descriptor instanceof FunctionDescriptor) { - return new ChangeFunctionLiteralSignatureFix(functionLiteral, (FunctionDescriptor) descriptor, + if (descriptor instanceof FunctionDescriptor && functionLiteral instanceof JetFunctionLiteral) { + return new ChangeFunctionLiteralSignatureFix((JetFunctionLiteral) functionLiteral, (FunctionDescriptor) descriptor, diagnosticWithParameters.getB()); } else {