diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceInfixOrOperatorCallFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceInfixOrOperatorCallFix.kt index 4f6de8c909e..6709570b369 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceInfixOrOperatorCallFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ReplaceInfixOrOperatorCallFix.kt @@ -91,8 +91,7 @@ class ReplaceInfixOrOperatorCallFix(element: KtExpression) : KotlinQuickFixActio is KtBinaryExpression -> { if (parent.left == null || parent.right == null) null else { - if (parent.operationToken in OperatorConventions.COMPARISON_OPERATIONS && - parent.analyze()[BindingContext.EXPECTED_EXPRESSION_TYPE, parent]?.isBoolean() ?: false) null + if (parent.operationToken in OperatorConventions.COMPARISON_OPERATIONS) null else ReplaceInfixOrOperatorCallFix(parent) } } diff --git a/idea/testData/quickfix/nullables/unsafeInfixCall/noComparison.kt b/idea/testData/quickfix/nullables/unsafeInfixCall/noComparison.kt new file mode 100644 index 00000000000..c57b87477b9 --- /dev/null +++ b/idea/testData/quickfix/nullables/unsafeInfixCall/noComparison.kt @@ -0,0 +1,12 @@ +// "Replace with safe (?.) call" "false" +// ERROR: Infix call corresponds to a dot-qualified call 'p1.compareTo(p2)' which is not allowed on a nullable receiver 'p1'. Use '?.'-qualified call instead +// ACTION: Add non-null asserted (!!) call +// ACTION: Flip '>' +// ACTION: Replace overloaded operator with function call + +class SafeType { + operator fun compareTo(other : SafeType) = 0 +} +fun safeA(p1: SafeType?, p2: SafeType) { + val v8 = p1 > p2 +} \ No newline at end of file diff --git a/idea/testData/quickfix/nullables/unsafeInfixCall/operator.kt b/idea/testData/quickfix/nullables/unsafeInfixCall/operator.kt deleted file mode 100644 index 978dd64e9c2..00000000000 --- a/idea/testData/quickfix/nullables/unsafeInfixCall/operator.kt +++ /dev/null @@ -1,7 +0,0 @@ -// "Replace with safe (?.) call" "true" -// ERROR: Infix call corresponds to a dot-qualified call 'value?.compareTo(1).compareTo(0)' which is not allowed on a nullable receiver 'value?.compareTo(1)'. Use '?.'-qualified call instead -var foo: Int? = null - set(value) { - if((value < 1) ?: false) { - } - } \ No newline at end of file diff --git a/idea/testData/quickfix/nullables/unsafeInfixCall/operator.kt.after b/idea/testData/quickfix/nullables/unsafeInfixCall/operator.kt.after deleted file mode 100644 index 7217ba54619..00000000000 --- a/idea/testData/quickfix/nullables/unsafeInfixCall/operator.kt.after +++ /dev/null @@ -1,7 +0,0 @@ -// "Replace with safe (?.) call" "true" -// ERROR: Infix call corresponds to a dot-qualified call 'value?.compareTo(1).compareTo(0)' which is not allowed on a nullable receiver 'value?.compareTo(1)'. Use '?.'-qualified call instead -var foo: Int? = null - set(value) { - if((value?.compareTo(1) < 0) ?: false) { - } - } \ 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 e0883f38d1b..ebfdb03d62f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -6174,9 +6174,9 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/nullables/unsafeInfixCall"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } - @TestMetadata("operator.kt") - public void testOperator() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/nullables/unsafeInfixCall/operator.kt"); + @TestMetadata("noComparison.kt") + public void testNoComparison() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/nullables/unsafeInfixCall/noComparison.kt"); doTest(fileName); }