diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java index a7590a16b2f..7dea4ca84c7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java @@ -137,8 +137,8 @@ public class ChangeVariableTypeFix extends JetIntentionAction doCreateActions(@NotNull Diagnostic diagnostic) { List actions = new LinkedList(); - JetProperty property = QuickFixUtil.getParentElementOfType(diagnostic, JetProperty.class); - if (property != null) { + if (diagnostic.getPsiElement() instanceof JetProperty) { + JetProperty property = (JetProperty) diagnostic.getPsiElement(); BindingContext context = ResolvePackage.analyzeFully(property.getContainingJetFile()); JetType lowerBoundOfOverriddenPropertiesTypes = QuickFixUtil.findLowerBoundOfOverriddenCallablesReturnTypes(context, property); diff --git a/idea/testData/quickfix/override/typeMismatchOnOverride/namedFunctionReturnOverrideInsideVariableInitializer.kt b/idea/testData/quickfix/override/typeMismatchOnOverride/namedFunctionReturnOverrideInsideVariableInitializer.kt new file mode 100644 index 00000000000..00bbe2d3e52 --- /dev/null +++ b/idea/testData/quickfix/override/typeMismatchOnOverride/namedFunctionReturnOverrideInsideVariableInitializer.kt @@ -0,0 +1,11 @@ +// "Change 'foo' function return type to 'Boolean'" "true" + +interface A { + fun foo(): Boolean +} + +fun foo() { + val x = object : A { + override fun foo(): Boolean? = true + } +} diff --git a/idea/testData/quickfix/override/typeMismatchOnOverride/namedFunctionReturnOverrideInsideVariableInitializer.kt.after b/idea/testData/quickfix/override/typeMismatchOnOverride/namedFunctionReturnOverrideInsideVariableInitializer.kt.after new file mode 100644 index 00000000000..e3782028e24 --- /dev/null +++ b/idea/testData/quickfix/override/typeMismatchOnOverride/namedFunctionReturnOverrideInsideVariableInitializer.kt.after @@ -0,0 +1,11 @@ +// "Change 'foo' function return type to 'Boolean'" "true" + +interface A { + fun foo(): Boolean +} + +fun foo() { + val x = object : A { + override fun foo(): Boolean = true + } +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 37e7291115a..ce1aa6d47aa 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -4769,6 +4769,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("namedFunctionReturnOverrideInsideVariableInitializer.kt") + public void testNamedFunctionReturnOverrideInsideVariableInitializer() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/override/typeMismatchOnOverride/namedFunctionReturnOverrideInsideVariableInitializer.kt"); + doTest(fileName); + } + @TestMetadata("objectInsideBody.kt") public void testObjectInsideBody() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/override/typeMismatchOnOverride/objectInsideBody.kt");