From 09304bbd54214cc27439dc73cf132c96fb3a33d8 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Tue, 26 Nov 2019 16:05:41 +0900 Subject: [PATCH] ConvertToAnonymousObjectFix: do not suggest when there is no lambda #KT-31912 Fixed --- .../SamConversionToAnonymousObjectIntention.kt | 9 ++------- .../idea/quickfix/ConvertToAnonymousObjectFix.kt | 6 ++++-- .../convertToAnonymousObject/lambdaInParentheses.kt | 8 ++++++++ .../lambdaInParentheses.kt.after | 12 ++++++++++++ .../quickfix/convertToAnonymousObject/noLambda.kt | 11 +++++++++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 10 ++++++++++ 6 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 idea/testData/quickfix/convertToAnonymousObject/lambdaInParentheses.kt create mode 100644 idea/testData/quickfix/convertToAnonymousObject/lambdaInParentheses.kt.after create mode 100644 idea/testData/quickfix/convertToAnonymousObject/noLambda.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/SamConversionToAnonymousObjectIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/SamConversionToAnonymousObjectIntention.kt index ae3fea39f60..bc58b150dc7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/SamConversionToAnonymousObjectIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/SamConversionToAnonymousObjectIntention.kt @@ -78,12 +78,7 @@ class SamConversionToAnonymousObjectIntention : SelfTargetingRangeIntentionI({ "" }) +} \ No newline at end of file diff --git a/idea/testData/quickfix/convertToAnonymousObject/lambdaInParentheses.kt.after b/idea/testData/quickfix/convertToAnonymousObject/lambdaInParentheses.kt.after new file mode 100644 index 00000000000..593b1587be9 --- /dev/null +++ b/idea/testData/quickfix/convertToAnonymousObject/lambdaInParentheses.kt.after @@ -0,0 +1,12 @@ +// "Convert to anonymous object" "true" +interface I { + fun foo(): String +} + +fun test() { + val i = object : I { + override fun foo(): String { + return "" + } + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/convertToAnonymousObject/noLambda.kt b/idea/testData/quickfix/convertToAnonymousObject/noLambda.kt new file mode 100644 index 00000000000..ea9f7667bd7 --- /dev/null +++ b/idea/testData/quickfix/convertToAnonymousObject/noLambda.kt @@ -0,0 +1,11 @@ +// "Convert to anonymous object" "false" +// ACTION: Introduce import alias +// ACTION: Split property declaration +// ERROR: Interface I does not have constructors +interface I { + fun foo(): String +} + +fun test() { + val i = I() +} \ 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 de1b9979b3e..ff100302dde 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -2838,11 +2838,21 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/convertToAnonymousObject/labeledReturn.kt"); } + @TestMetadata("lambdaInParentheses.kt") + public void testLambdaInParentheses() throws Exception { + runTest("idea/testData/quickfix/convertToAnonymousObject/lambdaInParentheses.kt"); + } + @TestMetadata("multiMethod.kt") public void testMultiMethod() throws Exception { runTest("idea/testData/quickfix/convertToAnonymousObject/multiMethod.kt"); } + @TestMetadata("noLambda.kt") + public void testNoLambda() throws Exception { + runTest("idea/testData/quickfix/convertToAnonymousObject/noLambda.kt"); + } + @TestMetadata("parameter.kt") public void testParameter() throws Exception { runTest("idea/testData/quickfix/convertToAnonymousObject/parameter.kt");