From ec60c92fe9527ad58eb8790781a2eeaa14371921 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 28 Dec 2017 15:16:31 +0300 Subject: [PATCH] Lambda -> reference: build bound reference for complex qualified So #KT-19073 Fixed --- .../ConvertLambdaToReferenceIntention.kt | 3 +-- .../convertLambdaToReference/doubleChained.kt | 15 +++++++++++++++ .../doubleChained.kt.after | 15 +++++++++++++++ .../idea/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 idea/testData/intentions/convertLambdaToReference/doubleChained.kt create mode 100644 idea/testData/intentions/convertLambdaToReference/doubleChained.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt index a65f1a40c35..57c54c354a5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertLambdaToReferenceIntention.kt @@ -260,10 +260,9 @@ open class ConvertLambdaToReferenceIntention(text: String) : "$receiverName::$selectorReferenceName" } } - is KtThisExpression -> { + else -> { "${receiver.text}::$selectorReferenceName" } - else -> null } } else -> null diff --git a/idea/testData/intentions/convertLambdaToReference/doubleChained.kt b/idea/testData/intentions/convertLambdaToReference/doubleChained.kt new file mode 100644 index 00000000000..12655101424 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToReference/doubleChained.kt @@ -0,0 +1,15 @@ +// WITH_RUNTIME + +interface Data +val data: Data? = null + +class Recycler(val adapter: DataAdapter) +val recycler = Recycler(DataAdapter()) + +class DataAdapter { + fun newData(data: Data) {} +} + +fun test() { + data?.let { recycler.adapter.newData(it) } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertLambdaToReference/doubleChained.kt.after b/idea/testData/intentions/convertLambdaToReference/doubleChained.kt.after new file mode 100644 index 00000000000..81aa9ea7a49 --- /dev/null +++ b/idea/testData/intentions/convertLambdaToReference/doubleChained.kt.after @@ -0,0 +1,15 @@ +// WITH_RUNTIME + +interface Data +val data: Data? = null + +class Recycler(val adapter: DataAdapter) +val recycler = Recycler(DataAdapter()) + +class DataAdapter { + fun newData(data: Data) {} +} + +fun test() { + data?.let(recycler.adapter::newData) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index e44682192b0..059ff666917 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -4418,6 +4418,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("doubleChained.kt") + public void testDoubleChained() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertLambdaToReference/doubleChained.kt"); + doTest(fileName); + } + @TestMetadata("emptyBrackets.kt") public void testEmptyBrackets() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertLambdaToReference/emptyBrackets.kt");