Do not propose to make local lateinit var immutable #KT-21104 Fixed

This commit is contained in:
Toshiaki Kameyama
2017-11-14 12:07:46 +03:00
committed by Mikhail Glukhikh
parent 938fd1a57e
commit 4d93c08bd0
4 changed files with 25 additions and 1 deletions
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.quickfix.ChangeVariableMutabilityFix
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.references.readWriteAccess
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
@@ -49,7 +50,7 @@ class CanBeValInspection : AbstractKotlinInspection() {
when (declaration) {
is KtProperty -> {
if (declaration.isVar && declaration.isLocal &&
if (declaration.isVar && declaration.isLocal && !declaration.hasModifier(KtTokens.LATEINIT_KEYWORD) &&
canBeVal(declaration,
declaration.hasInitializer() || declaration.hasDelegateExpression(),
listOf(declaration))) {
+1
View File
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.inspections.CanBeValInspection
@@ -0,0 +1,7 @@
// LANGUAGE_VERSION: 1.2
// PROBLEM: none
fun test() {
lateinit <caret>var foo: String
foo = "a"
}
@@ -51,6 +51,21 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
}
}
@TestMetadata("idea/testData/inspectionsLocal/canBeVal")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class CanBeVal extends AbstractLocalInspectionTest {
public void testAllFilesPresentInCanBeVal() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/inspectionsLocal/canBeVal"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true);
}
@TestMetadata("lateinitVar.kt")
public void testLateinitVar() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/canBeVal/lateinitVar.kt");
doTest(fileName);
}
}
@TestMetadata("idea/testData/inspectionsLocal/cascadeIf")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)