diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt index 778d945b742..1e7330791f7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt @@ -102,6 +102,7 @@ class AddExclExclCallFix(val psiElement: PsiElement) : ExclExclCallFix() { val parent = psiElement.parent return when (parent) { is KtUnaryExpression -> parent.baseExpression + is KtBinaryExpression -> parent.left else -> null } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index 62662602efe..5fae271190f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -202,6 +202,7 @@ class QuickFixRegistrar : QuickFixContributor { TYPE_MISMATCH.registerFactory(WrapWithSafeLetCallFix.TypeMismatchFactory) UNSAFE_CALL.registerFactory(AddExclExclCallFix) + UNSAFE_INFIX_CALL.registerFactory(AddExclExclCallFix) UNNECESSARY_NOT_NULL_ASSERTION.registerFactory(RemoveExclExclCallFix) UNSAFE_INFIX_CALL.registerFactory(ReplaceInfixOrOperatorCallFix) UNSAFE_CALL.registerFactory(ReplaceInfixOrOperatorCallFix) // [] only diff --git a/idea/testData/quickfix/expressions/fixNullableBinaryWithExclExcl.kt b/idea/testData/quickfix/expressions/fixNullableBinaryWithExclExcl.kt new file mode 100644 index 00000000000..954602f2570 --- /dev/null +++ b/idea/testData/quickfix/expressions/fixNullableBinaryWithExclExcl.kt @@ -0,0 +1,9 @@ +// "Add non-null asserted (!!) call" "true" + +class SafeType { + operator fun plus(arg: Int) {} +} + +fun safeB(p: SafeType?) { + val v = p + 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/expressions/fixNullableBinaryWithExclExcl.kt.after b/idea/testData/quickfix/expressions/fixNullableBinaryWithExclExcl.kt.after new file mode 100644 index 00000000000..b043b8cefb6 --- /dev/null +++ b/idea/testData/quickfix/expressions/fixNullableBinaryWithExclExcl.kt.after @@ -0,0 +1,9 @@ +// "Add non-null asserted (!!) call" "true" + +class SafeType { + operator fun plus(arg: Int) {} +} + +fun safeB(p: SafeType?) { + val v = p!! + 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/expressions/fixNullableInfixWithExclExcl.kt b/idea/testData/quickfix/expressions/fixNullableInfixWithExclExcl.kt new file mode 100644 index 00000000000..91a68a295c1 --- /dev/null +++ b/idea/testData/quickfix/expressions/fixNullableInfixWithExclExcl.kt @@ -0,0 +1,9 @@ +// "Add non-null asserted (!!) call" "true" + +class SafeType { + infix fun op(arg: Int) {} +} + +fun safeB(p: SafeType?) { + val v = p op 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/expressions/fixNullableInfixWithExclExcl.kt.after b/idea/testData/quickfix/expressions/fixNullableInfixWithExclExcl.kt.after new file mode 100644 index 00000000000..72f9f0b990e --- /dev/null +++ b/idea/testData/quickfix/expressions/fixNullableInfixWithExclExcl.kt.after @@ -0,0 +1,9 @@ +// "Add non-null asserted (!!) call" "true" + +class SafeType { + infix fun op(arg: Int) {} +} + +fun safeB(p: SafeType?) { + val v = p!! op 42 +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index cfd06b6ebeb..9d74ed8a901 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -4770,6 +4770,18 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/expressions"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } + @TestMetadata("fixNullableBinaryWithExclExcl.kt") + public void testFixNullableBinaryWithExclExcl() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/fixNullableBinaryWithExclExcl.kt"); + doTest(fileName); + } + + @TestMetadata("fixNullableInfixWithExclExcl.kt") + public void testFixNullableInfixWithExclExcl() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/fixNullableInfixWithExclExcl.kt"); + doTest(fileName); + } + @TestMetadata("fixNullableIterableGenericWithExclExcl.kt") public void testFixNullableIterableGenericWithExclExcl() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/fixNullableIterableGenericWithExclExcl.kt");