From a9c30e878b54b8845f991c573cadecba09cfa482 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 27 Jul 2016 17:52:48 +0300 Subject: [PATCH] KT-12628: !! is now correctly added to array expressions (cherry picked from commit 56c9d7e) --- .../kotlin/idea/quickfix/ExclExclCallFixes.kt | 3 +++ idea/testData/quickfix/expressions/unsafeCall4.kt | 4 ++++ .../quickfix/expressions/unsafeCall4.kt.after | 4 ++++ idea/testData/quickfix/expressions/unsafeCall5.kt | 4 ++++ .../quickfix/expressions/unsafeCall5.kt.after | 4 ++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 12 ++++++++++++ 6 files changed, 31 insertions(+) create mode 100644 idea/testData/quickfix/expressions/unsafeCall4.kt create mode 100644 idea/testData/quickfix/expressions/unsafeCall4.kt.after create mode 100644 idea/testData/quickfix/expressions/unsafeCall5.kt create mode 100644 idea/testData/quickfix/expressions/unsafeCall5.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt index eb4d7f3a6fc..457fa39a11b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ExclExclCallFixes.kt @@ -95,6 +95,9 @@ class AddExclExclCallFix(val psiElement: PsiElement) : ExclExclCallFix() { return sibling } } + else if (psiElement is KtArrayAccessExpression) { + return psiElement.arrayExpression + } else if (psiElement is KtExpression) { return psiElement } diff --git a/idea/testData/quickfix/expressions/unsafeCall4.kt b/idea/testData/quickfix/expressions/unsafeCall4.kt new file mode 100644 index 00000000000..717f7d19054 --- /dev/null +++ b/idea/testData/quickfix/expressions/unsafeCall4.kt @@ -0,0 +1,4 @@ +// "Add non-null asserted (!!) call" "true" + +operator fun Int.get(row: Int, column: Int) = this +fun foo(arg: Int?) = arg[42, 13] \ No newline at end of file diff --git a/idea/testData/quickfix/expressions/unsafeCall4.kt.after b/idea/testData/quickfix/expressions/unsafeCall4.kt.after new file mode 100644 index 00000000000..396f7527767 --- /dev/null +++ b/idea/testData/quickfix/expressions/unsafeCall4.kt.after @@ -0,0 +1,4 @@ +// "Add non-null asserted (!!) call" "true" + +operator fun Int.get(row: Int, column: Int) = this +fun foo(arg: Int?) = arg!![42, 13] \ No newline at end of file diff --git a/idea/testData/quickfix/expressions/unsafeCall5.kt b/idea/testData/quickfix/expressions/unsafeCall5.kt new file mode 100644 index 00000000000..e4a779259ac --- /dev/null +++ b/idea/testData/quickfix/expressions/unsafeCall5.kt @@ -0,0 +1,4 @@ +// "Add non-null asserted (!!) call" "true" + +operator fun Int.get(row: Int, column: Int) = if (row == column) this else null +fun foo(arg: Int) = arg[42, 13].hashCode() \ No newline at end of file diff --git a/idea/testData/quickfix/expressions/unsafeCall5.kt.after b/idea/testData/quickfix/expressions/unsafeCall5.kt.after new file mode 100644 index 00000000000..d2d4f2c030b --- /dev/null +++ b/idea/testData/quickfix/expressions/unsafeCall5.kt.after @@ -0,0 +1,4 @@ +// "Add non-null asserted (!!) call" "true" + +operator fun Int.get(row: Int, column: Int) = if (row == column) this else null +fun foo(arg: Int) = arg[42, 13]!!.hashCode() \ 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 de01fb093ec..fdb13b6022a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -4809,6 +4809,18 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("unsafeCall4.kt") + public void testUnsafeCall4() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/unsafeCall4.kt"); + doTest(fileName); + } + + @TestMetadata("unsafeCall5.kt") + public void testUnsafeCall5() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/unsafeCall5.kt"); + doTest(fileName); + } + @TestMetadata("uselessCastStaticAssertIsFine.kt") public void testUselessCastStaticAssertIsFine() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/uselessCastStaticAssertIsFine.kt");