Skip to content

Commit 9bcc9fb

Browse files
committed
Fix ISE when caret is on parameter of function type
EA-68570
1 parent 3de3c0f commit 9bcc9fb

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

idea/src/org/jetbrains/kotlin/idea/intentions/Utils.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
2222
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
2323
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
2424
import org.jetbrains.kotlin.idea.caches.resolve.analyze
25-
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
2625
import org.jetbrains.kotlin.idea.references.JetReference
2726
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
2827
import org.jetbrains.kotlin.idea.util.ShortenReferences
@@ -74,10 +73,11 @@ fun isAutoCreatedItUsage(expression: JetSimpleNameExpression): Boolean {
7473
}
7574

7675
fun JetCallableDeclaration.canRemoveTypeSpecificationByVisibility(): Boolean {
77-
val descriptor = resolveToDescriptor()
7876
val isOverride = getModifierList()?.hasModifier(JetTokens.OVERRIDE_KEYWORD) ?: false
79-
if (!isOverride && (descriptor as? DeclarationDescriptorWithVisibility)?.getVisibility()?.isPublicAPI() ?: false) return false
80-
return true
77+
if (isOverride) return true
78+
79+
val descriptor = analyze()[BindingContext.DECLARATION_TO_DESCRIPTOR, this]
80+
return descriptor !is DeclarationDescriptorWithVisibility || !descriptor.getVisibility().isPublicAPI()
8181
}
8282

8383
// returns assignment which replaces initializer
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// IS_APPLICABLE: false
2+
fun foo(x: (<caret>String) -> Unit) {}

idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5671,6 +5671,12 @@ public void testAllFilesPresentInRemoveExplicitType() throws Exception {
56715671
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/removeExplicitType"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true);
56725672
}
56735673

5674+
@TestMetadata("notOnParameterOfFunctionType.kt")
5675+
public void testNotOnParameterOfFunctionType() throws Exception {
5676+
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/removeExplicitType/notOnParameterOfFunctionType.kt");
5677+
doTest(fileName);
5678+
}
5679+
56745680
@TestMetadata("notOnPublic.kt")
56755681
public void testNotOnPublic() throws Exception {
56765682
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/removeExplicitType/notOnPublic.kt");

0 commit comments

Comments
 (0)