diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt index 0f309365b51..6e58936b981 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt @@ -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))) { diff --git a/idea/testData/inspectionsLocal/canBeVal/.inspection b/idea/testData/inspectionsLocal/canBeVal/.inspection new file mode 100644 index 00000000000..cdd811ef674 --- /dev/null +++ b/idea/testData/inspectionsLocal/canBeVal/.inspection @@ -0,0 +1 @@ +org.jetbrains.kotlin.idea.inspections.CanBeValInspection \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/canBeVal/lateinitVar.kt b/idea/testData/inspectionsLocal/canBeVal/lateinitVar.kt new file mode 100644 index 00000000000..14d89542f5b --- /dev/null +++ b/idea/testData/inspectionsLocal/canBeVal/lateinitVar.kt @@ -0,0 +1,7 @@ +// LANGUAGE_VERSION: 1.2 +// PROBLEM: none + +fun test() { + lateinit var foo: String + foo = "a" +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index e36c5502cd0..71e27e824b9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -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)