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
|
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)
|
val noBoundReferences = !callableExpression.languageVersionSettings.supportsFeature(LanguageFeature.BoundCallableReferences)
|
||||||
if (noBoundReferences && descriptorHasReceiver && explicitReceiver == null) return false
|
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");
|
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")
|
@TestMetadata("conversion.kt")
|
||||||
public void testConversion() throws Exception {
|
public void testConversion() throws Exception {
|
||||||
runTest("idea/testData/intentions/convertLambdaToReference/conversion.kt");
|
runTest("idea/testData/intentions/convertLambdaToReference/conversion.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user