diff --git a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java index f3426faf7ad0..d416f1b29aa6 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java @@ -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)); } } } diff --git a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java index 4c8d23b422e7..55feead595cc 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java +++ b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java @@ -302,7 +302,7 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor { final List fixes = new ArrayList(); 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()); diff --git a/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java index 9ea0507482a2..8ecd8a5d9b03 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java @@ -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(