AllOpen: Fix incorrect 'accessing non-final property in constructor' warning (KT-16619)

This commit is contained in:
Yan Zhulanow
2017-12-26 00:55:55 +09:00
parent df19162c8c
commit 0a3a493f25
3 changed files with 25 additions and 1 deletions
@@ -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)
@@ -23,4 +23,12 @@
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Leaking 'this' in constructor</problem_class>
<description>Accessing non-final property x in constructor</description>
</problem>
<problem>
<file>test.kt</file>
<line>67</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Leaking 'this' in constructor</problem_class>
<description>Accessing non-final property y in constructor</description>
</problem>
</problems>
+14
View File
@@ -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()
}
}