Commits

Victor Stinner committed c404f9d

Don't log removal of docstring

Comments (0)

Files changed (1)

astoptimizer/optimizer.py

     def info(self, message):
         self.config.info_func(message)
 
-    def log_node_removal(self, node, reason=None):
+    def log_node_removal(self, node, message="Remove dead code"):
         if self.filename:
             filename = self.filename
         else:
             filename = "<string>"
-        where = "%s:%s" % (filename, node.lineno)
-        text = ast.dump(node)
-        if len(text) > 100:
-            text = text[:100] + "..."
-        if reason:
-            where += ' (%s)' % reason
-        self.info("Remove dead code at %s: %s" % (where, text))
+        code = ast.dump(node)
+        if len(code) > 100:
+            code = code[:100] + "..."
+        self.info("%s:%s: %s: %s"
+                  % (filename, node.lineno, message, code))
 
     def warning(self, message):
         self.config.warning_func(message)
         if truncate == len(node_list) - 1:
             return
         for node in node_list[truncate+1:]:
-            self.log_node_removal(node, 'unreachable')
+            self.log_node_removal(node, 'Remove unreachable code')
         del node_list[truncate+1:]
 
     def optimize_node_list(self, node_list):
             if not isinstance(expr, obj_types):
                 return False
         if (index == 0
-        and not self.config.remove_docstring
         and isinstance(expr, ast.Str)):
-            return False
-        return True
+            if self.config.remove_docstring:
+                # remove docstring, but don't log removal
+                return (True, False)
+            else:
+                return False
+        return (True, True)
 
     def visit_expr_list(self, node_list, conditional=False):
         if self.config.remove_dead_code and len(node_list):
             new_node_list = []
             for index, node in enumerate(node_list):
-                if self._remove_node(index, node):
-                    self.log_node_removal(node)
+                remove_log = self._remove_node(index, node)
+                if remove_log:
+                    if remove_log[1]:
+                        self.log_node_removal(node)
                 else:
                     new_node_list.append(node)
             if not new_node_list:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.