From 0a3a493f25b8858fbb185c74f4514c1d8ee70a7c Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 26 Dec 2017 00:55:55 +0900 Subject: [PATCH] AllOpen: Fix incorrect 'accessing non-final property in constructor' warning (KT-16619) --- .../org/jetbrains/kotlin/descriptors/Modality.kt | 4 +++- .../leakingThis/inspectionData/expected.xml | 8 ++++++++ idea/testData/inspections/leakingThis/test.kt | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Modality.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Modality.kt index 31da0171cb1..92da094b708 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/Modality.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/Modality.kt @@ -39,7 +39,9 @@ enum class Modality { } val CallableMemberDescriptor.isOverridable: Boolean - get() = modality != Modality.FINAL && (containingDeclaration as? ClassDescriptor)?.isFinalClass != true + get() = visibility != Visibilities.PRIVATE + && modality != Modality.FINAL + && (containingDeclaration as? ClassDescriptor)?.isFinalClass != true val CallableMemberDescriptor.isOverridableOrOverrides: Boolean get() = isOverridable || DescriptorUtils.isOverride(this) diff --git a/idea/testData/inspections/leakingThis/inspectionData/expected.xml b/idea/testData/inspections/leakingThis/inspectionData/expected.xml index ce14409a7c1..ed1815d2b65 100644 --- a/idea/testData/inspections/leakingThis/inspectionData/expected.xml +++ b/idea/testData/inspections/leakingThis/inspectionData/expected.xml @@ -23,4 +23,12 @@ Leaking 'this' in constructor Accessing non-final property x in constructor + + test.kt + 67 + light_idea_test_case + + Leaking 'this' in constructor + Accessing non-final property y in constructor + diff --git a/idea/testData/inspections/leakingThis/test.kt b/idea/testData/inspections/leakingThis/test.kt index deb9cb25b2b..24b5b69c00d 100644 --- a/idea/testData/inspections/leakingThis/test.kt +++ b/idea/testData/inspections/leakingThis/test.kt @@ -54,3 +54,17 @@ class Fourth { val y = x // null! } + +annotation class AllOpen + +@AllOpen +class A { + private val x = "A" + System.currentTimeMillis() + val y = "A" + System.currentTimeMillis() + + init { + x.toByteArray() + y.toByteArray() + } + +} \ No newline at end of file