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.quickfix.ChangeVariableMutabilityFix
|
||||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||||
import org.jetbrains.kotlin.idea.references.readWriteAccess
|
import org.jetbrains.kotlin.idea.references.readWriteAccess
|
||||||
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
@@ -49,7 +50,7 @@ class CanBeValInspection : AbstractKotlinInspection() {
|
|||||||
|
|
||||||
when (declaration) {
|
when (declaration) {
|
||||||
is KtProperty -> {
|
is KtProperty -> {
|
||||||
if (declaration.isVar && declaration.isLocal &&
|
if (declaration.isVar && declaration.isLocal && !declaration.hasModifier(KtTokens.LATEINIT_KEYWORD) &&
|
||||||
canBeVal(declaration,
|
canBeVal(declaration,
|
||||||
declaration.hasInitializer() || declaration.hasDelegateExpression(),
|
declaration.hasInitializer() || declaration.hasDelegateExpression(),
|
||||||
listOf(declaration))) {
|
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")
|
@TestMetadata("idea/testData/inspectionsLocal/cascadeIf")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user