IDEA-230314 Create from usage: create instance field action should not be available inside records

GitOrigin-RevId: f0ddfe823e1731068625678cf2ae650a7fb6bd51
This commit is contained in:
Tagir Valeev
2020-01-10 05:13:48 +00:00
committed by intellij-monorepo-bot
parent 5fcfcc5bcd
commit 58384aa2c0
4 changed files with 11 additions and 3 deletions
@@ -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
@@ -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)
@@ -0,0 +1,6 @@
// "Create field 'foo'" "false"
record R() {
void test() {
System.out.println(f<caret>oo);
}
}
@@ -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(); }