Lambda -> reference: build bound reference for complex qualified

So #KT-19073 Fixed
This commit is contained in:
Mikhail Glukhikh
2017-12-28 15:16:31 +03:00
parent 73bca21f94
commit ec60c92fe9
4 changed files with 37 additions and 2 deletions
@@ -260,10 +260,9 @@ open class ConvertLambdaToReferenceIntention(text: String) :
"$receiverName::$selectorReferenceName" "$receiverName::$selectorReferenceName"
} }
} }
is KtThisExpression -> { else -> {
"${receiver.text}::$selectorReferenceName" "${receiver.text}::$selectorReferenceName"
} }
else -> null
} }
} }
else -> null else -> null
@@ -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 { <caret>recycler.adapter.newData(it) }
}
@@ -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)
}
@@ -4418,6 +4418,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName); 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") @TestMetadata("emptyBrackets.kt")
public void testEmptyBrackets() throws Exception { public void testEmptyBrackets() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertLambdaToReference/emptyBrackets.kt"); String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertLambdaToReference/emptyBrackets.kt");