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 {