Add inspection: Refactor sealed sub-class to object #KT-20305 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
7cf6c70fbf
commit
df7968678a
+50
@@ -0,0 +1,50 @@
|
||||
<problems>
|
||||
<problem>
|
||||
<file>sealed.kt</file>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</problems>
|
||||
+1
@@ -0,0 +1 @@
|
||||
// INSPECTION_CLASS: org.jetbrains.kotlin.idea.inspections.CanSealedSubClassBeObjectInspection
|
||||
@@ -0,0 +1,47 @@
|
||||
sealed class Sealed {
|
||||
open class OpenSubSealedNestedNoChild() : Sealed()
|
||||
|
||||
open class SubSealedNestedWithChild : Sealed()
|
||||
|
||||
class SubSealedNestedChild() : SubSealedNestedWithChild()
|
||||
|
||||
final class FinalSubSealedNested() : Sealed()
|
||||
|
||||
class SubSealedNested() : Sealed()
|
||||
}
|
||||
|
||||
class SubSealedParentheses() : Sealed()
|
||||
|
||||
class SubSealedNoParentheses : Sealed()
|
||||
|
||||
open class SubSealedWithChild : Sealed()
|
||||
|
||||
class SubSealedChild : SubSealedWithChild()
|
||||
|
||||
class SubSealedParameters(val value : String) : Sealed()
|
||||
|
||||
object SubSealedObject() : Sealed()
|
||||
|
||||
class SubSealedObjectWithPrimaryConstructor(parameter: String) : Sealed()
|
||||
|
||||
class SubSealedObjectWithSecondaryConstructor() : Sealed() {
|
||||
constructor(parameter: String): this()
|
||||
}
|
||||
|
||||
object AlreadyObject: Sealed()
|
||||
|
||||
class SubSealedWithCompanion: Sealed() {
|
||||
companion object
|
||||
}
|
||||
|
||||
class SubSealedWithInner: Sealed() {
|
||||
inner class Inner
|
||||
}
|
||||
|
||||
class SubSealedWithNested: Sealed() {
|
||||
class Nested
|
||||
}
|
||||
|
||||
class SubSealedWithFunction: Sealed() {
|
||||
fun internalFunction() { }
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
org.jetbrains.kotlin.idea.inspections.CanSealedSubClassBeObjectInspection
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
sealed class Sealed
|
||||
|
||||
private <caret>class SubSealed : Sealed()
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
sealed class Sealed
|
||||
|
||||
private object SubSealed : Sealed()
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
sealed class Sealed
|
||||
|
||||
<caret>class SubSealed() : Sealed()
|
||||
idea/testData/inspectionsLocal/convertSealedSubClassToObject/convertSubClassWithParentheses.kt.after
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
sealed class Sealed
|
||||
|
||||
object SubSealed : Sealed()
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
sealed class Sealed
|
||||
|
||||
<caret>class SubSealed : Sealed()
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
sealed class Sealed
|
||||
|
||||
object SubSealed : Sealed()
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import seal.*
|
||||
|
||||
class JavaSealedTest {
|
||||
public void testNesting() {
|
||||
new SubSealed.Nested();
|
||||
Supplier<SubSealed.Nested> nestedSupplier = SubSealed.Nested::new;
|
||||
|
||||
SubSealed.INSTANCE.internalFunction();
|
||||
Runnable noArgFunction = SubSealed.INSTANCE::internalFunction;
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
import seal.*
|
||||
|
||||
class KotlinSealedTest {
|
||||
fun testSeal() {
|
||||
val internalFunction = SubSealed::internalFunction
|
||||
|
||||
val nestedClass = SubSealed.Nested()
|
||||
|
||||
SubSealed.Nested()
|
||||
SubSealed::Nested
|
||||
|
||||
SubSealed.internalFunction()
|
||||
SubSealed::internalFunction
|
||||
SubSealed::internalFunction
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package seal
|
||||
|
||||
sealed class Sealed
|
||||
|
||||
object SubSealed : Sealed() {
|
||||
class Nested
|
||||
|
||||
fun internalFunction() {}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import seal.*
|
||||
|
||||
class JavaSealedTest {
|
||||
public void testNesting() {
|
||||
new SubSealed.Nested();
|
||||
Supplier<SubSealed.Nested> nestedSupplier = SubSealed.Nested::new;
|
||||
|
||||
new SubSealed().internalFunction();
|
||||
Runnable noArgFunction = new SubSealed()::internalFunction;
|
||||
}
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
import seal.*
|
||||
|
||||
class KotlinSealedTest {
|
||||
fun testSeal() {
|
||||
val internalFunction = SubSealed()::internalFunction
|
||||
|
||||
val nestedClass = SubSealed.Nested()
|
||||
|
||||
SubSealed.Nested()
|
||||
SubSealed::Nested
|
||||
|
||||
SubSealed().internalFunction()
|
||||
SubSealed()::internalFunction
|
||||
SubSealed::internalFunction
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package seal
|
||||
|
||||
sealed class Sealed
|
||||
|
||||
<caret>class SubSealed : Sealed() {
|
||||
class Nested
|
||||
|
||||
fun internalFunction() {}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"mainFile": "Seal.kt",
|
||||
"inspectionClass": "org.jetbrains.kotlin.idea.inspections.CanSealedSubClassBeObjectInspection",
|
||||
"fix": "Convert Sealed Sub-class to Object"
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
import seal.*
|
||||
|
||||
class JavaSealedTest {
|
||||
Sealed sealedInsideClass = SubSealed.INSTANCE;
|
||||
|
||||
public void testSeal() {
|
||||
Sealed sealedInsideMethod = SubSealed.INSTANCE;
|
||||
|
||||
SubSealed.INSTANCE.toString();
|
||||
|
||||
// Will be deleted because Java doesn't allow a expression to be used as a statement
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
import seal.*
|
||||
|
||||
val sealedOutsideClass = SubSealed
|
||||
|
||||
class KotlinSealedTest {
|
||||
val sealedInsideClass = SubSealed
|
||||
|
||||
fun testSeal() {
|
||||
val sealedInsideMethod = SubSealed
|
||||
|
||||
SubSealed
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package seal
|
||||
|
||||
sealed class Sealed
|
||||
|
||||
object SubSealed : Sealed()
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
import seal.*
|
||||
|
||||
class JavaSealedTest {
|
||||
Sealed sealedInsideClass = new SubSealed();
|
||||
|
||||
public void testSeal() {
|
||||
Sealed sealedInsideMethod = new SubSealed();
|
||||
|
||||
new SubSealed().toString();
|
||||
|
||||
// Will be deleted because Java doesn't allow a expression to be used as a statement
|
||||
new SubSealed();
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
import seal.*
|
||||
|
||||
val sealedOutsideClass = SubSealed()
|
||||
|
||||
class KotlinSealedTest {
|
||||
val sealedInsideClass = SubSealed()
|
||||
|
||||
fun testSeal() {
|
||||
val sealedInsideMethod = SubSealed()
|
||||
|
||||
SubSealed()
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package seal
|
||||
|
||||
sealed class Sealed
|
||||
|
||||
<caret>class SubSealed : Sealed()
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"mainFile": "Seal.kt",
|
||||
"inspectionClass": "org.jetbrains.kotlin.idea.inspections.CanSealedSubClassBeObjectInspection",
|
||||
"fix": "Convert Sealed Sub-class to Object"
|
||||
}
|
||||
Reference in New Issue
Block a user