mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-230314 Create from usage: create instance field action should not be available inside records
GitOrigin-RevId: f0ddfe823e1731068625678cf2ae650a7fb6bd51
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5fcfcc5bcd
commit
58384aa2c0
+3
-2
@@ -55,7 +55,8 @@ public class CreateFieldFromUsageFix extends CreateVarFromUsageFix {
|
||||
final List<PsiClass> targetClasses = new ArrayList<>();
|
||||
for (PsiClass psiClass : super.getTargetClasses(element)) {
|
||||
if (canModify(psiClass) &&
|
||||
(!psiClass.isInterface() && !psiClass.isAnnotationType() || shouldCreateStaticMember(myReferenceExpression, psiClass))) {
|
||||
(!psiClass.isInterface() && !psiClass.isAnnotationType() && !psiClass.isRecord()
|
||||
|| shouldCreateStaticMember(myReferenceExpression, psiClass))) {
|
||||
targetClasses.add(psiClass);
|
||||
}
|
||||
}
|
||||
@@ -64,7 +65,7 @@ public class CreateFieldFromUsageFix extends CreateVarFromUsageFix {
|
||||
|
||||
@Override
|
||||
protected boolean canBeTargetClass(PsiClass psiClass) {
|
||||
return canModify(psiClass) && !psiClass.isInterface() && !psiClass.isAnnotationType();
|
||||
return canModify(psiClass) && !psiClass.isInterface() && !psiClass.isAnnotationType() && !psiClass.isRecord();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ class JavaElementActionsFactory : JvmElementActionsFactory() {
|
||||
override fun createAddFieldActions(targetClass: JvmClass, request: CreateFieldRequest): List<IntentionAction> {
|
||||
val javaClass = targetClass.toJavaClassOrNull() ?: return emptyList()
|
||||
|
||||
val constantRequested = request.isConstant || javaClass.isInterface || request.modifiers.containsAll(constantModifiers)
|
||||
val constantRequested = request.isConstant || javaClass.isInterface || javaClass.isRecord || request.modifiers.containsAll(constantModifiers)
|
||||
val result = ArrayList<IntentionAction>()
|
||||
if (constantRequested || request.fieldName.toUpperCase(Locale.ENGLISH) == request.fieldName) {
|
||||
result += CreateConstantAction(javaClass, request)
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
// "Create field 'foo'" "false"
|
||||
record R() {
|
||||
void test() {
|
||||
System.out.println(f<caret>oo);
|
||||
}
|
||||
}
|
||||
+1
@@ -30,6 +30,7 @@ public class CreateFieldFromUsageTest extends LightQuickFixTestCase {
|
||||
public void testSuperInterfaceConstant() { doSingleTest(); }
|
||||
public void testMultipleTypes() { doSingleTest(); }
|
||||
public void testMultipleTypes2() { doSingleTest(); }
|
||||
public void testRecord() { doSingleTest(); }
|
||||
public void testParametericMethod() { doSingleTest(); }
|
||||
public void testQualifyInner() { doSingleTest(); }
|
||||
public void testTypeArgsFormatted() { doSingleTest(); }
|
||||
|
||||
Reference in New Issue
Block a user