Do not propose to make local lateinit var immutable #KT-21104 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
938fd1a57e
commit
4d93c08bd0
@@ -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))) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user