"Join declaration and assignment" should remove 'lateinit' for 'var' #KT-21603 Fixed

This commit is contained in:
Toshiaki Kameyama
2017-12-05 11:19:58 +09:00
parent 075203ad33
commit e341ec969f
4 changed files with 17 additions and 0 deletions
@@ -78,6 +78,8 @@ class JoinDeclarationAndAssignmentIntention : SelfTargetingOffsetIndependentInte
val initializer = assignment.right ?: return
val newInitializer = element.setInitializer(initializer)!!
if (element.hasModifier(KtTokens.LATEINIT_KEYWORD)) element.removeModifier(KtTokens.LATEINIT_KEYWORD)
val initializerBlock = assignment.parent.parent as? KtAnonymousInitializer
assignment.delete()
if (initializerBlock != null && (initializerBlock.body as? KtBlockExpression)?.isEmpty() == true) {
@@ -0,0 +1,5 @@
fun foo(a: String, b: String) {
lateinit var c: String<caret>
c = a
c = b
}
@@ -0,0 +1,4 @@
fun foo(a: String, b: String) {
var c<selection>: String</selection><caret> = a
c = b
}
@@ -9848,6 +9848,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName);
}
@TestMetadata("hasLateinit.kt")
public void testHasLateinit() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/joinDeclarationAndAssignment/hasLateinit.kt");
doTest(fileName);
}
@TestMetadata("incorrectConditionalAssignment.kt")
public void testIncorrectConditionalAssignment() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/joinDeclarationAndAssignment/incorrectConditionalAssignment.kt");