KT-22665 "Create object" quick fix produce wrong code for enum (#2883)
* "Create object" quick fix: do not suggest for enum #KT-22665 Fixed
This commit is contained in:
committed by
GitHub
parent
076eacb3d1
commit
330502a0a6
+1
-1
@@ -93,7 +93,7 @@ object CreateClassFromReferenceExpressionActionFactory : CreateClassFromUsageFac
|
||||
return allKinds.filter { classKind ->
|
||||
targetParents.any { targetParent ->
|
||||
(expectedType == null || getClassKindFilter(expectedType, targetParent)(classKind)) && when (classKind) {
|
||||
ClassKind.OBJECT -> true
|
||||
ClassKind.OBJECT -> expectedType == null || !isEnum(targetParent)
|
||||
ClassKind.ENUM_ENTRY -> isEnum(targetParent)
|
||||
else -> false
|
||||
}
|
||||
|
||||
Vendored
-1
@@ -1,6 +1,5 @@
|
||||
// "Create enum constant 'A'" "false"
|
||||
// ACTION: Convert to block body
|
||||
// ACTION: Create object 'A'
|
||||
// ACTION: Rename reference
|
||||
// ERROR: Unresolved reference: A
|
||||
package p
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
// "Create object 'RED'" "true"
|
||||
enum class SampleEnum {}
|
||||
|
||||
fun usage() {
|
||||
SampleEnum.RED<caret>
|
||||
}
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
// "Create object 'RED'" "true"
|
||||
enum class SampleEnum {
|
||||
;
|
||||
|
||||
object RED {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun usage() {
|
||||
SampleEnum.RED
|
||||
}
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
// "Create object 'RED'" "false"
|
||||
// ACTION: Add 'sample =' to argument
|
||||
// ACTION: Create enum constant 'RED'
|
||||
// ACTION: Rename reference
|
||||
// ERROR: Unresolved reference: RED
|
||||
enum class SampleEnum {}
|
||||
|
||||
fun usage() {
|
||||
foo(SampleEnum.RED<caret>)
|
||||
}
|
||||
|
||||
fun foo(sample: SampleEnum) {}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
// "Create object 'RED'" "false"
|
||||
// ACTION: Create enum constant 'RED'
|
||||
// ACTION: Expand boolean expression to 'if else'
|
||||
// ACTION: Rename reference
|
||||
// ERROR: Unresolved reference: RED
|
||||
enum class SampleEnum {}
|
||||
|
||||
fun usage(sample: SampleEnum) {
|
||||
if (sample == SampleEnum.RED<caret>) {
|
||||
}
|
||||
}
|
||||
@@ -3789,6 +3789,21 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
runTest("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/objectByQualifier.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("objectForEnum.kt")
|
||||
public void testObjectForEnum() throws Exception {
|
||||
runTest("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/objectForEnum.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("objectForEnumInArgument.kt")
|
||||
public void testObjectForEnumInArgument() throws Exception {
|
||||
runTest("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/objectForEnumInArgument.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("objectForEnumInEquals.kt")
|
||||
public void testObjectForEnumInEquals() throws Exception {
|
||||
runTest("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/objectForEnumInEquals.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("objectInPackage.kt")
|
||||
public void testObjectInPackage() throws Exception {
|
||||
runTest("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/objectInPackage.kt");
|
||||
|
||||
Reference in New Issue
Block a user