Sealed sub-class -> object: handle equals, suggest "add equals"

Before this commit, sealed sub-class without state was considered
a style issue.
After this commit, sealed sub-class without state AND custom equals
is considered a probable bug,
because comparison of its instances is very fragile.
Alternative fix (generate equals & hashCode by identity) is added.
This commit is contained in:
Mikhail Glukhikh
2018-06-13 18:05:46 +03:00
parent ecd2709a11
commit 9ef89447b3
27 changed files with 222 additions and 51 deletions
@@ -4,47 +4,47 @@
<line>8</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/sealed.kt" />
<problem_class severity="INFORMATION" attribute_key="INFO_ATTRIBUTES">Sealed Sub-class should be changed To Object</problem_class>
<description>Sealed Sub-class should be changed To Object</description>
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Sealed sub-class without state and overridden equals</problem_class>
<description>Sealed sub-class has no state and no overridden equals</description>
</problem>
<problem>
<file>sealed.kt</file>
<line>10</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/sealed.kt" />
<problem_class severity="INFORMATION" attribute_key="INFO_ATTRIBUTES">Sealed Sub-class should be changed To Object</problem_class>
<description>Sealed Sub-class should be changed To Object</description>
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Sealed sub-class without state and overridden equals</problem_class>
<description>Sealed sub-class has no state and no overridden equals</description>
</problem>
<problem>
<file>sealed.kt</file>
<line>13</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/sealed.kt" />
<problem_class severity="INFORMATION" attribute_key="INFO_ATTRIBUTES">Sealed Sub-class should be changed To Object</problem_class>
<description>Sealed Sub-class should be changed To Object</description>
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Sealed sub-class without state and overridden equals</problem_class>
<description>Sealed sub-class has no state and no overridden equals</description>
</problem>
<problem>
<file>sealed.kt</file>
<line>15</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/sealed.kt" />
<problem_class severity="INFORMATION" attribute_key="INFO_ATTRIBUTES">Sealed Sub-class should be changed To Object</problem_class>
<description>Sealed Sub-class should be changed To Object</description>
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Sealed sub-class without state and overridden equals</problem_class>
<description>Sealed sub-class has no state and no overridden equals</description>
</problem>
<problem>
<file>sealed.kt</file>
<line>41</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/sealed.kt" />
<problem_class severity="INFORMATION" attribute_key="INFO_ATTRIBUTES">Sealed Sub-class should be changed To Object</problem_class>
<description>Sealed Sub-class should be changed To Object</description>
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Sealed sub-class without state and overridden equals</problem_class>
<description>Sealed sub-class has no state and no overridden equals</description>
</problem>
<problem>
<file>sealed.kt</file>
<line>45</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/sealed.kt" />
<problem_class severity="INFORMATION" attribute_key="INFO_ATTRIBUTES">Sealed Sub-class should be changed To Object</problem_class>
<description>Sealed Sub-class should be changed To Object</description>
<problem_class severity="WEAK WARNING" attribute_key="INFO_ATTRIBUTES">Sealed sub-class without state and overridden equals</problem_class>
<description>Sealed sub-class has no state and no overridden equals</description>
</problem>
</problems>