fixed PY-4479 Add field to class: select created field for editing, not passed to constructor parameter

This commit is contained in:
Ekaterina Tuzova
2014-05-08 14:26:51 +04:00
parent e7f0c335b0
commit 136ade1713
3 changed files with 11 additions and 5 deletions
@@ -758,7 +758,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection {
actions.add(new AddMethodQuickFix(refText, cls.getName(), true));
}
else if (!(reference instanceof PyOperatorReference)) {
actions.add(new AddFieldQuickFix(refText, "None", type.getName()));
actions.add(new AddFieldQuickFix(refText, "None", type.getName(), true));
}
}
}
@@ -302,7 +302,7 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor {
final List<LocalQuickFix> fixes = new ArrayList<LocalQuickFix>();
if (mayBeField) {
fixes.add(new AddFieldQuickFix(name, name, containingClass.getName()));
fixes.add(new AddFieldQuickFix(name, name, containingClass.getName(), false));
}
if (canRemove) {
fixes.add(new PyRemoveParameterQuickFix());
@@ -55,11 +55,13 @@ public class AddFieldQuickFix implements LocalQuickFix {
private final String myInitializer;
private final String myClassName;
private String myIdentifier;
private boolean replaceInitializer = false;
public AddFieldQuickFix(@NotNull final String identifier, @NotNull final String initializer, final String className) {
public AddFieldQuickFix(@NotNull final String identifier, @NotNull final String initializer, final String className, boolean replace) {
myIdentifier = identifier;
myInitializer = initializer;
myClassName = className;
replaceInitializer = replace;
}
@NotNull
@@ -128,8 +130,12 @@ public class AddFieldQuickFix implements LocalQuickFix {
if (initStatement instanceof PyAssignmentStatement) {
final TemplateBuilder builder = TemplateBuilderFactory.getInstance().createTemplateBuilder(initStatement);
final PyExpression assignedValue = ((PyAssignmentStatement)initStatement).getAssignedValue();
if (assignedValue != null) {
builder.replaceElement(assignedValue, myInitializer);
final PyExpression leftExpression = ((PyAssignmentStatement)initStatement).getLeftHandSideExpression();
if (assignedValue != null && leftExpression != null) {
if (replaceInitializer)
builder.replaceElement(assignedValue, myInitializer);
else
builder.replaceElement(leftExpression.getLastChild(), myIdentifier);
final VirtualFile virtualFile = file.getVirtualFile();
if (virtualFile == null) return;
final Editor editor = FileEditorManager.getInstance(file.getProject()).openTextEditor(