diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AssignFieldFromParameterAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AssignFieldFromParameterAction.java index 85b51af88bac..d1e2bd23c2a4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/AssignFieldFromParameterAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/AssignFieldFromParameterAction.java @@ -43,19 +43,10 @@ public class AssignFieldFromParameterAction extends BaseIntentionAction { final PsiParameter myParameter = FieldFromParameterUtils.findParameterAtCursor(file, editor); final PsiType type = FieldFromParameterUtils.getType(myParameter); final PsiClass targetClass = PsiTreeUtil.getParentOfType(myParameter, PsiClass.class); - if (myParameter == null - || !myParameter.isValid() - || !myParameter.getManager().isInProject(myParameter) - || !(myParameter.getDeclarationScope() instanceof PsiMethod) - || ((PsiMethod)myParameter.getDeclarationScope()).getBody() == null - || type == null - || !type.isValid() - || targetClass == null - || targetClass.isInterface() - || FieldFromParameterUtils.getParameterAssignedToField(myParameter) != null) { + if (!FieldFromParameterUtils.isAvailable(myParameter, type, targetClass)) { return false; } - final PsiField field = findFieldToAssign(myParameter); + final PsiField field = findFieldToAssign(project, myParameter); if (field == null) return false; if (!field.getLanguage().isKindOf(JavaLanguage.INSTANCE)) return false; setText(CodeInsightBundle.message("intention.assign.field.from.parameter.text", field.getName())); @@ -71,12 +62,12 @@ public class AssignFieldFromParameterAction extends BaseIntentionAction { @Override public void invoke(@NotNull Project project, Editor editor, PsiFile file) { - PsiParameter myParameter = FieldFromParameterUtils.findParameterAtCursor(file, editor); + final PsiParameter myParameter = FieldFromParameterUtils.findParameterAtCursor(file, editor); if (!CodeInsightUtilBase.prepareFileForWrite(myParameter.getContainingFile())) return; IdeDocumentHistory.getInstance(project).includeCurrentPlaceAsChangePlace(); try { - PsiField field = findFieldToAssign(myParameter); + PsiField field = findFieldToAssign(project, myParameter); if (field != null) addFieldAssignmentStatement(project, field, myParameter, editor); } catch (IncorrectOperationException e) { @@ -84,53 +75,18 @@ public class AssignFieldFromParameterAction extends BaseIntentionAction { } } - public static void addFieldAssignmentStatement(@NotNull Project project, - @NotNull PsiField field, - @NotNull PsiParameter parameter, - @NotNull Editor editor) throws IncorrectOperationException { - final PsiMethod method = (PsiMethod)parameter.getDeclarationScope(); - PsiCodeBlock methodBody = method.getBody(); - if (methodBody == null) return; - PsiManager psiManager = PsiManager.getInstance(project); - PsiElementFactory factory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory(); - String fieldName = field.getName(); - String parameterName = parameter.getName(); - final boolean isMethodStatic = method.hasModifierProperty(PsiModifier.STATIC); - PsiClass targetClass = method.getContainingClass(); - - String stmtText = fieldName + " = " + parameterName + ";"; - if (Comparing.strEqual(fieldName, parameterName) || JavaPsiFacade.getInstance(project).getResolveHelper().resolveReferencedVariable(fieldName, methodBody) != field) { - @NonNls String prefix = isMethodStatic ? targetClass.getName() == null ? "" : targetClass.getName() + "." : "this."; - stmtText = prefix + stmtText; - } - - PsiStatement assignmentStmt = factory.createStatementFromText(stmtText, methodBody); - assignmentStmt = (PsiStatement)CodeStyleManager.getInstance(project).reformat(assignmentStmt); - PsiStatement[] statements = methodBody.getStatements(); - int i = FieldFromParameterUtils.findFieldAssignmentAnchor(statements, null, targetClass, parameter); - PsiElement inserted; - if (i == statements.length) { - inserted = methodBody.add(assignmentStmt); - } - else { - inserted = methodBody.addAfter(assignmentStmt, i > 0 ? statements[i - 1] : null); - } - editor.getCaretModel().moveToOffset(inserted.getTextRange().getEndOffset()); - editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); - } - @Nullable - private static PsiField findFieldToAssign(final PsiParameter myParameter) { - final JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(myParameter.getProject()); + private static PsiField findFieldToAssign(@NotNull Project project, + @NotNull PsiParameter myParameter) { + final JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(project); final String parameterName = myParameter.getName(); - String propertyName = styleManager.variableNameToPropertyName(parameterName, VariableKind.PARAMETER); + final String propertyName = styleManager.variableNameToPropertyName(parameterName, VariableKind.PARAMETER); final PsiMethod method = (PsiMethod)myParameter.getDeclarationScope(); final boolean isMethodStatic = method.hasModifierProperty(PsiModifier.STATIC); - - VariableKind kind = isMethodStatic ? VariableKind.STATIC_FIELD : VariableKind.FIELD; - SuggestedNameInfo suggestedNameInfo = styleManager.suggestVariableName(kind, propertyName, null, FieldFromParameterUtils.getSubstitutedType(myParameter)); + final VariableKind kind = isMethodStatic ? VariableKind.STATIC_FIELD : VariableKind.FIELD; + final SuggestedNameInfo suggestedNameInfo = styleManager.suggestVariableName(kind, propertyName, null, FieldFromParameterUtils.getSubstitutedType(myParameter)); final String fieldName = suggestedNameInfo.names[0]; @@ -143,5 +99,37 @@ public class AssignFieldFromParameterAction extends BaseIntentionAction { return field; } + public static void addFieldAssignmentStatement(@NotNull Project project, + @NotNull PsiField field, + @NotNull PsiParameter parameter, + @NotNull Editor editor) throws IncorrectOperationException { + final PsiMethod method = (PsiMethod)parameter.getDeclarationScope(); + final PsiCodeBlock methodBody = method.getBody(); + if (methodBody == null) return; + final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory(); + final String fieldName = field.getName(); + final String parameterName = parameter.getName(); + final boolean isMethodStatic = method.hasModifierProperty(PsiModifier.STATIC); + final PsiClass targetClass = method.getContainingClass(); + if (targetClass == null) return; + String stmtText = fieldName + " = " + parameterName + ";"; + if (Comparing.strEqual(fieldName, parameterName) || JavaPsiFacade.getInstance(project).getResolveHelper().resolveReferencedVariable(fieldName, methodBody) != field) { + @NonNls String prefix = isMethodStatic ? targetClass.getName() == null ? "" : targetClass.getName() + "." : "this."; + stmtText = prefix + stmtText; + } + + final PsiStatement assignmentStmt = (PsiStatement)CodeStyleManager.getInstance(project).reformat(factory.createStatementFromText(stmtText, methodBody)); + final PsiStatement[] statements = methodBody.getStatements(); + final int i = FieldFromParameterUtils.findFieldAssignmentAnchor(statements, null, targetClass, parameter); + final PsiElement inserted; + if (i == statements.length) { + inserted = methodBody.add(assignmentStmt); + } + else { + inserted = methodBody.addAfter(assignmentStmt, i > 0 ? statements[i - 1] : null); + } + editor.getCaretModel().moveToOffset(inserted.getTextRange().getEndOffset()); + editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); + } } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateAssignFieldsFromParametersAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateAssignFieldsFromParametersAction.java index d0363eb66eca..859ac737ece9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateAssignFieldsFromParametersAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateAssignFieldsFromParametersAction.java @@ -33,8 +33,6 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.SuggestedNameInfo; import com.intellij.psi.codeStyle.VariableKind; -import com.intellij.psi.search.LocalSearchScope; -import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.ui.SimpleColoredComponent; import com.intellij.ui.SimpleTextAttributes; @@ -70,7 +68,8 @@ public class CreateAssignFieldsFromParametersAction extends BaseIntentionAction for (PsiParameter parameter : parameters) { params.add(SmartPointerManager.getInstance(project).createSmartPsiElementPointer(parameter)); } - if (params.size() <= 1) return false; + if (params.isEmpty()) return false; + if (params.size() == 1 && psiParameter != null) return false; if (psiParameter == null) { psiParameter = params.iterator().next().getElement(); LOG.assertTrue(psiParameter != null); @@ -115,18 +114,9 @@ public class CreateAssignFieldsFromParametersAction extends BaseIntentionAction private static boolean isAvailable(PsiParameter psiParameter) { final PsiType type = FieldFromParameterUtils.getSubstitutedType(psiParameter); - PsiClass targetClass = PsiTreeUtil.getParentOfType(psiParameter, PsiClass.class); - return psiParameter.isValid() - && psiParameter.getLanguage().isKindOf(JavaLanguage.INSTANCE) - && psiParameter.getDeclarationScope() instanceof PsiMethod - && ((PsiMethod)psiParameter.getDeclarationScope()).getBody() != null - && psiParameter.getManager().isInProject(psiParameter) - && type != null - && type.isValid() - && FieldFromParameterUtils.getParameterAssignedToField(psiParameter) == null - && targetClass != null - && !targetClass.isInterface() - ; + final PsiClass targetClass = PsiTreeUtil.getParentOfType(psiParameter, PsiClass.class); + return FieldFromParameterUtils.isAvailable(psiParameter, type, targetClass) && + psiParameter.getLanguage().isKindOf(JavaLanguage.INSTANCE); } @NotNull diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterAction.java index 1dbcd23cbda1..b9e258256cfb 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterAction.java @@ -54,16 +54,8 @@ public class CreateFieldFromParameterAction extends BaseIntentionAction { private static boolean isAvailable(PsiParameter psiParameter) { final PsiType type = FieldFromParameterUtils.getSubstitutedType(psiParameter); final PsiClass targetClass = PsiTreeUtil.getParentOfType(psiParameter, PsiClass.class); - return psiParameter.isValid() - && psiParameter.getLanguage().isKindOf(JavaLanguage.INSTANCE) - && psiParameter.getDeclarationScope() instanceof PsiMethod - && ((PsiMethod)psiParameter.getDeclarationScope()).getBody() != null - && psiParameter.getManager().isInProject(psiParameter) - && type != null - && type.isValid() - && FieldFromParameterUtils.getParameterAssignedToField(psiParameter) == null - && targetClass != null - && !targetClass.isInterface(); + return FieldFromParameterUtils.isAvailable(psiParameter, type, targetClass) && + psiParameter.getLanguage().isKindOf(JavaLanguage.INSTANCE); } @Override diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterDialog.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterDialog.java index 5952bbfd1762..be900bb78b8c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterDialog.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/CreateFieldFromParameterDialog.java @@ -50,7 +50,8 @@ class CreateFieldFromParameterDialog extends DialogWrapper { public CreateFieldFromParameterDialog(Project project, String[] names, PsiClass targetClass, - final boolean fieldMayBeFinal, PsiType... types) { + boolean fieldMayBeFinal, + PsiType... types) { super(project, true); myProject = project; myNames = names; diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java index 007308d7adba..ccec3c3cab07 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java @@ -16,7 +16,6 @@ package com.intellij.codeInsight.intention.impl; import com.intellij.codeInsight.NullableNotNullManager; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; @@ -254,6 +253,20 @@ public final class FieldFromParameterUtils { } } + public static boolean isAvailable(@Nullable PsiParameter myParameter, + @Nullable PsiType type, + @Nullable PsiClass targetClass){ + return myParameter != null + && myParameter.isValid() + && myParameter.getManager().isInProject(myParameter) + && myParameter.getDeclarationScope() instanceof PsiMethod + && ((PsiMethod)myParameter.getDeclarationScope()).getBody() != null + && type != null + && type.isValid() + && targetClass != null + && !targetClass.isInterface() + && getParameterAssignedToField(myParameter) == null; + } private FieldFromParameterUtils() { } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after1.java index 9dbbc85d010a..5713ccc42f54 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after1.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'id'" "true" +// "Create Field for Parameter 'id'" "true" class Person { private String __fname; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after2.java index b769339bdcdf..0f01568e6d38 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after2.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after2.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'test'" "true" +// "Create Field for Parameter 'test'" "true" package codeInsight.createFieldFromParameterAction.test1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after3.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after3.java index d13cf8c4c44e..833a468f8e94 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after3.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after3.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'length'" "true" +// "Create Field for Parameter 'length'" "true" package codeInsight.createFieldFromParameterAction.test1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after4.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after4.java index ce58b7fe5fab..8cb66a36de0a 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after4.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after4.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ private final int myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after5.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after5.java index e7561df5c260..03106cebe8ef 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after5.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after5.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ int myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after6.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after6.java index bf2db7f26a17..a9c49918418e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after6.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after6.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ int myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after8.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after8.java index 11173931e038..dcdb49681bea 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after8.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/after8.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ private static int p1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterArrayType.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterArrayType.java index f8e0381d8ca2..badf63b2edc3 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterArrayType.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterArrayType.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ private String[] myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java index 84a331dfe443..18bc20165e75 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" import java.util.*; class Test{ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterCaretOnMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterCaretOnMethod.java deleted file mode 100644 index 04e42b402bba..000000000000 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterCaretOnMethod.java +++ /dev/null @@ -1,10 +0,0 @@ -// "Create Field For Parameter 'p1'" "true" - -class Test{ - private String myP1; - - void f(T p1){ - myP1 = p1; - } -} - diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterClassTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterClassTypeParameter.java index 86d6d6562bde..2d08c0012a60 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterClassTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterClassTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ private T myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListClassTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListClassTypeParameter.java index 1eba966dcd17..124af1837c3f 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListClassTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListClassTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" import java.util.*; class Test{ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListTypeParameter.java index 712bfd0805d3..95fbe98d59ee 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterListTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" import java.util.*; class Test{ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNotNull.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNotNull.java index 0a1abd0f5378..6eb71094cb8e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNotNull.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNotNull.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'name'" "true" +// "Create Field for Parameter 'name'" "true" import org.jetbrains.annotations.NotNull; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNullable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNullable.java index 8fa7c4148ef9..e829e59e1a3f 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNullable.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterNullable.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'name'" "true" +// "Create Field for Parameter 'name'" "true" package codeInsight.createFieldFromParameterAction.test1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterSimpleTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterSimpleTypeParameter.java index 091a1327cf58..547d158ecec8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterSimpleTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterSimpleTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ private Object myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterTypeParameter.java index 04e42b402bba..9984b0e58a23 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ private String myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before1.java index 51720998410b..a338c6d37eea 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before1.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'id'" "true" +// "Create Field for Parameter 'id'" "true" class Person { private String __fname, __lname, __street; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before2.java index e25aa9d9d176..c8f1169e37bb 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before2.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before2.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'test'" "true" +// "Create Field for Parameter 'test'" "true" package codeInsight.createFieldFromParameterAction.test1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before3.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before3.java index 3726e69aba1a..2507769d5a0b 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before3.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before3.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'length'" "true" +// "Create Field for Parameter 'length'" "true" package codeInsight.createFieldFromParameterAction.test1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before4.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before4.java index 89613c86222c..aba9e872d3e7 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before4.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before4.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ int myP2; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before5.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before5.java index a7269db78dde..3a2478eb387e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before5.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before5.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ int myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before6.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before6.java index 1f7270b105c6..890c78067bcf 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before6.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before6.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ int myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before7.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before7.java index 8590d640e842..5ce0bc7a9134 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before7.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before7.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "false" +// "Create Field for Parameter 'p1'" "false" class Test{ int myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before8.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before8.java index d8ccf3596125..a1109547a2a1 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before8.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/before8.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ static void f(int p1){ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeArrayType.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeArrayType.java index 692a30c3196a..1a0c209798e9 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeArrayType.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeArrayType.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ void f(String[] p1){ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeBoundListTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeBoundListTypeParameter.java index c2f20ed7eccb..e74e5e603c10 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeBoundListTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeBoundListTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" import java.util.*; class Test{ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethod.java index bd7b4b96da2f..f76f4f4bbd4a 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethod.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethod.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "false" class Test{ void f(T p1){ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithOnlyAssignedParams.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithOnlyAssignedParams.java index 184c8b1cfe2d..5c32f2765bd2 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithOnlyAssignedParams.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithOnlyAssignedParams.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "false" +// "Create Field for Parameter 'p1'" "false" class Test{ private final String myP1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithoutParams.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithoutParams.java index 58b98be08c79..328bce5248c1 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithoutParams.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeCaretOnMethodWithoutParams.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "false" +// "Create Field for Parameter 'p1'" "false" class Test{ void f(){ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeClassTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeClassTypeParameter.java index 4af4b0b9702a..fc86e4b93513 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeClassTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeClassTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ void f(T p1){ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListClassTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListClassTypeParameter.java index 54a5511b00bb..67815a21bb0f 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListClassTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListClassTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" import java.util.*; class Test{ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListTypeParameter.java index 766c8eba8091..cf4e5af2ae92 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeListTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" import java.util.*; class Test{ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNotNull.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNotNull.java index 03965ba81a8f..fb64ef994689 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNotNull.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNotNull.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'name'" "true" +// "Create Field for Parameter 'name'" "true" import org.jetbrains.annotations.NotNull; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNullable.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNullable.java index ab09596813f7..7749fcaa6fe8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNullable.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeNullable.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'name'" "true" +// "Create Field for Parameter 'name'" "true" package codeInsight.createFieldFromParameterAction.test1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeSimpleTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeSimpleTypeParameter.java index 8d5f7bccf604..bd2cb7778fb5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeSimpleTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeSimpleTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ void f(T p1){ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeTypeParameter.java index b869f6860f8e..dc8fecbcc776 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/beforeTypeParameter.java @@ -1,4 +1,4 @@ -// "Create Field For Parameter 'p1'" "true" +// "Create Field for Parameter 'p1'" "true" class Test{ void f(T p1){ diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateAssignFieldsFromParametersTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateAssignFieldsFromParametersTest.java new file mode 100644 index 000000000000..9205e0250353 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateAssignFieldsFromParametersTest.java @@ -0,0 +1,46 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.daemon.quickFix; + +import com.intellij.codeInsight.daemon.LightIntentionActionTestCase; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CodeStyleSettingsManager; + +/** + * @author Danila Ponomarenko + */ +public class CreateAssignFieldsFromParametersTest extends LightIntentionActionTestCase { + @Override + protected void setUp() throws Exception { + super.setUp(); + CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()); + settings.FIELD_NAME_PREFIX = "my"; + } + + @Override + protected void tearDown() throws Exception { + CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()); + settings.FIELD_NAME_PREFIX = ""; + super.tearDown(); + } + + public void test() throws Exception { doAllTests(); } + + @Override + protected String getBasePath() { + return "/codeInsight/daemonCodeAnalyzer/quickFix/createAssignFieldsFromParameters"; + } +} diff --git a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties index 93c564167c51..499bdaaebf18 100644 --- a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties +++ b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties @@ -192,8 +192,8 @@ intention.assign.field.from.parameter.text=Assign Parameter to Field ''{0}'' intention.assign.field.from.parameter.family=Assign Parameter to Field intention.create.field.from.parameter.text=Create Field for Parameter ''{0}'' intention.create.field.from.parameter.family=Create Field for Parameter -intention.create.assign.fields.from.parameters.text=Create/Assign Fields for {0} Parameters -intention.create.assign.fields.from.parameters.family=Create/Assign Fields for Parameters +intention.create.assign.fields.from.parameters.text=Create/Assign Fields from {0} Parameters +intention.create.assign.fields.from.parameters.family=Create/Assign Fields from Parameters intention.implement.abstract.method.searching.for.descendants.progress=Searching For Descendants... intention.implement.abstract.method.error.no.classes.message=There are no classes found where this method can be implemented intention.implement.abstract.method.error.no.classes.title=No Classes Found diff --git a/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/after.java.template b/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/after.java.template new file mode 100644 index 000000000000..52a8366b3b17 --- /dev/null +++ b/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/after.java.template @@ -0,0 +1,12 @@ +public class X { + int p1; + int p2; + int p3; + + void f(int p1, int p2, int p3) { + this.p1 = p1; + this.p2 = p2; + this.p3 = p3; + } +} + diff --git a/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/before.java.template b/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/before.java.template new file mode 100644 index 000000000000..48a3c9279bc1 --- /dev/null +++ b/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/before.java.template @@ -0,0 +1,6 @@ +public class X { + int p1; + + void f(int p1, int p2, int p3) { + } +} \ No newline at end of file diff --git a/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/description.html b/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/description.html new file mode 100644 index 000000000000..a02cdeded6c6 --- /dev/null +++ b/resources-en/src/intentionDescriptions/CreateAssignFieldsFromParametersAction/description.html @@ -0,0 +1,5 @@ + + +This intention allows to create or assign multiple fields from method parameters. + + \ No newline at end of file