Convert lambda to reference: support nested class constructor call (#2877)
#KT-34690 Fixed
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
646c7ad0af
commit
dd8396efbc
@@ -78,7 +78,7 @@ open class ConvertLambdaToReferenceIntention(text: String) :
|
||||
dispatchReceiverParameter != null || extensionReceiverParameter != null
|
||||
}
|
||||
|
||||
if (!descriptorHasReceiver && explicitReceiver != null) return false
|
||||
if (!descriptorHasReceiver && explicitReceiver != null && calleeDescriptor !is ClassConstructorDescriptor) return false
|
||||
val noBoundReferences = !callableExpression.languageVersionSettings.supportsFeature(LanguageFeature.BoundCallableReferences)
|
||||
if (noBoundReferences && descriptorHasReceiver && explicitReceiver == null) return false
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
class A {
|
||||
class B {}
|
||||
}
|
||||
|
||||
fun foo(x: () -> A.B) {}
|
||||
|
||||
fun main() {
|
||||
foo <caret>{ A.B() }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
class A {
|
||||
class B {}
|
||||
}
|
||||
|
||||
fun foo(x: () -> A.B) {}
|
||||
|
||||
fun main() {
|
||||
foo(A::B)
|
||||
}
|
||||
@@ -4744,6 +4744,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
|
||||
runTest("idea/testData/intentions/convertLambdaToReference/constructor.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("constructor2.kt")
|
||||
public void testConstructor2() throws Exception {
|
||||
runTest("idea/testData/intentions/convertLambdaToReference/constructor2.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("conversion.kt")
|
||||
public void testConversion() throws Exception {
|
||||
runTest("idea/testData/intentions/convertLambdaToReference/conversion.kt");
|
||||
|
||||
Reference in New Issue
Block a user