Index: third_party/logilab/astroid/rebuilder.py |
diff --git a/third_party/logilab/astroid/rebuilder.py b/third_party/logilab/astroid/rebuilder.py |
index 8fa7ee9232bbf2035b3c005730467edcb452a5d1..3f852513bdb6dfbad544b2db15dc9108a5d02f7c 100644 |
--- a/third_party/logilab/astroid/rebuilder.py |
+++ b/third_party/logilab/astroid/rebuilder.py |
@@ -99,7 +99,6 @@ def _init_set_doc(node, newnode): |
newnode.doc = None |
try: |
if isinstance(node.body[0], Discard) and isinstance(node.body[0].value, Str): |
- newnode.tolineno = node.body[0].lineno |
newnode.doc = node.body[0].value.s |
node.body = node.body[1:] |
@@ -108,10 +107,8 @@ def _init_set_doc(node, newnode): |
def _lineno_parent(oldnode, newnode, parent): |
newnode.parent = parent |
- if hasattr(oldnode, 'lineno'): |
- newnode.lineno = oldnode.lineno |
- if hasattr(oldnode, 'col_offset'): |
- newnode.col_offset = oldnode.col_offset |
+ newnode.lineno = oldnode.lineno |
+ newnode.col_offset = oldnode.col_offset |
def _set_infos(oldnode, newnode, parent): |
newnode.parent = parent |
@@ -119,14 +116,12 @@ def _set_infos(oldnode, newnode, parent): |
newnode.lineno = oldnode.lineno |
if hasattr(oldnode, 'col_offset'): |
newnode.col_offset = oldnode.col_offset |
- newnode.set_line_info(newnode.last_child()) # set_line_info accepts None |
def _create_yield_node(node, parent, rebuilder, factory): |
newnode = factory() |
_lineno_parent(node, newnode, parent) |
if node.value is not None: |
newnode.value = rebuilder.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
@@ -142,14 +137,14 @@ class TreeRebuilder(object): |
self._visit_meths = {} |
self._transform = manager.transform |
- def visit_module(self, node, modname, package): |
+ def visit_module(self, node, modname, modpath, package): |
"""visit a Module node by returning a fresh instance of it""" |
newnode = new.Module(modname, None) |
newnode.package = package |
- _lineno_parent(node, newnode, parent=None) |
+ newnode.parent = None |
_init_set_doc(node, newnode) |
newnode.body = [self.visit(child, newnode) for child in node.body] |
- newnode.set_line_info(newnode.last_child()) |
+ newnode.file = newnode.path = modpath |
return self._transform(newnode) |
def visit(self, node, parent): |
@@ -174,7 +169,7 @@ class TreeRebuilder(object): |
def visit_arguments(self, node, parent): |
"""visit a Arguments node by returning a fresh instance of it""" |
newnode = new.Arguments() |
- _lineno_parent(node, newnode, parent) |
+ newnode.parent = parent |
self.asscontext = "Ass" |
newnode.args = [self.visit(child, newnode) for child in node.args] |
self.asscontext = None |
@@ -210,7 +205,6 @@ class TreeRebuilder(object): |
newnode.parent.set_local(vararg, newnode) |
if kwarg: |
newnode.parent.set_local(kwarg, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_assattr(self, node, parent): |
@@ -221,7 +215,6 @@ class TreeRebuilder(object): |
newnode.expr = self.visit(node.expr, newnode) |
self.asscontext = assc |
self._delayed_assattr.append(newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_assert(self, node, parent): |
@@ -231,7 +224,6 @@ class TreeRebuilder(object): |
newnode.test = self.visit(node.test, newnode) |
if node.msg is not None: |
newnode.fail = self.visit(node.msg, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_assign(self, node, parent): |
@@ -259,7 +251,6 @@ class TreeRebuilder(object): |
meth.extra_decorators.append(newnode.value) |
except (AttributeError, KeyError): |
continue |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_assname(self, node, parent, node_name=None): |
@@ -279,7 +270,6 @@ class TreeRebuilder(object): |
newnode.target = self.visit(node.target, newnode) |
self.asscontext = None |
newnode.value = self.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_backquote(self, node, parent): |
@@ -287,7 +277,6 @@ class TreeRebuilder(object): |
newnode = new.Backquote() |
_lineno_parent(node, newnode, parent) |
newnode.value = self.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_binop(self, node, parent): |
@@ -297,7 +286,6 @@ class TreeRebuilder(object): |
newnode.left = self.visit(node.left, newnode) |
newnode.right = self.visit(node.right, newnode) |
newnode.op = _BIN_OP_CLASSES[node.op.__class__] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_boolop(self, node, parent): |
@@ -306,7 +294,6 @@ class TreeRebuilder(object): |
_lineno_parent(node, newnode, parent) |
newnode.values = [self.visit(child, newnode) for child in node.values] |
newnode.op = _BOOL_OP_CLASSES[node.op.__class__] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_break(self, node, parent): |
@@ -325,8 +312,8 @@ class TreeRebuilder(object): |
newnode.starargs = self.visit(node.starargs, newnode) |
if node.kwargs is not None: |
newnode.kwargs = self.visit(node.kwargs, newnode) |
- newnode.args.extend(self.visit(child, newnode) for child in node.keywords) |
- newnode.set_line_info(newnode.last_child()) |
+ for child in node.keywords: |
+ newnode.args.append(self.visit(child, newnode)) |
return newnode |
def visit_class(self, node, parent): |
@@ -338,7 +325,6 @@ class TreeRebuilder(object): |
newnode.body = [self.visit(child, newnode) for child in node.body] |
if 'decorator_list' in node._fields and node.decorator_list:# py >= 2.6 |
newnode.decorators = self.visit_decorators(node, newnode) |
- newnode.set_line_info(newnode.last_child()) |
newnode.parent.frame().set_local(newnode.name, newnode) |
return newnode |
@@ -361,19 +347,17 @@ class TreeRebuilder(object): |
newnode.left = self.visit(node.left, newnode) |
newnode.ops = [(_CMP_OP_CLASSES[op.__class__], self.visit(expr, newnode)) |
for (op, expr) in zip(node.ops, node.comparators)] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_comprehension(self, node, parent): |
"""visit a Comprehension node by returning a fresh instance of it""" |
newnode = new.Comprehension() |
- _lineno_parent(node, newnode, parent) |
+ newnode.parent = parent |
self.asscontext = "Ass" |
newnode.target = self.visit(node.target, newnode) |
self.asscontext = None |
newnode.iter = self.visit(node.iter, newnode) |
newnode.ifs = [self.visit(child, newnode) for child in node.ifs] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_decorators(self, node, parent): |
@@ -387,7 +371,6 @@ class TreeRebuilder(object): |
else: |
decorators = node.decorator_list |
newnode.nodes = [self.visit(child, newnode) for child in decorators] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_delete(self, node, parent): |
@@ -397,7 +380,6 @@ class TreeRebuilder(object): |
self.asscontext = "Del" |
newnode.targets = [self.visit(child, newnode) for child in node.targets] |
self.asscontext = None |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_dict(self, node, parent): |
@@ -406,7 +388,6 @@ class TreeRebuilder(object): |
_lineno_parent(node, newnode, parent) |
newnode.items = [(self.visit(key, newnode), self.visit(value, newnode)) |
for key, value in zip(node.keys, node.values)] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_dictcomp(self, node, parent): |
@@ -417,7 +398,6 @@ class TreeRebuilder(object): |
newnode.value = self.visit(node.value, newnode) |
newnode.generators = [self.visit(child, newnode) |
for child in node.generators] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_discard(self, node, parent): |
@@ -425,7 +405,6 @@ class TreeRebuilder(object): |
newnode = new.Discard() |
_lineno_parent(node, newnode, parent) |
newnode.value = self.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_ellipsis(self, node, parent): |
@@ -452,7 +431,6 @@ class TreeRebuilder(object): |
newnode.name = self.visit(node.name, newnode) |
self.asscontext = None |
newnode.body = [self.visit(child, newnode) for child in node.body] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_exec(self, node, parent): |
@@ -464,15 +442,13 @@ class TreeRebuilder(object): |
newnode.globals = self.visit(node.globals, newnode) |
if node.locals is not None: |
newnode.locals = self.visit(node.locals, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_extslice(self, node, parent): |
"""visit an ExtSlice node by returning a fresh instance of it""" |
newnode = new.ExtSlice() |
- _lineno_parent(node, newnode, parent) |
+ newnode.parent = parent |
newnode.dims = [self.visit(dim, newnode) for dim in node.dims] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_for(self, node, parent): |
@@ -485,7 +461,6 @@ class TreeRebuilder(object): |
newnode.iter = self.visit(node.iter, newnode) |
newnode.body = [self.visit(child, newnode) for child in node.body] |
newnode.orelse = [self.visit(child, newnode) for child in node.orelse] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_from(self, node, parent): |
@@ -514,7 +489,6 @@ class TreeRebuilder(object): |
newnode.decorators = self.visit_decorators(node, newnode) |
if PY3K and node.returns: |
newnode.returns = self.visit(node.returns, newnode) |
- newnode.set_line_info(newnode.last_child()) |
self._global_names.pop() |
frame = newnode.parent.frame() |
if isinstance(frame, new.Class): |
@@ -538,7 +512,6 @@ class TreeRebuilder(object): |
_lineno_parent(node, newnode, parent) |
newnode.elt = self.visit(node.elt, newnode) |
newnode.generators = [self.visit(child, newnode) for child in node.generators] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_getattr(self, node, parent): |
@@ -558,7 +531,6 @@ class TreeRebuilder(object): |
newnode.expr = self.visit(node.value, newnode) |
self.asscontext = asscontext |
newnode.attrname = node.attr |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_global(self, node, parent): |
@@ -577,7 +549,6 @@ class TreeRebuilder(object): |
newnode.test = self.visit(node.test, newnode) |
newnode.body = [self.visit(child, newnode) for child in node.body] |
newnode.orelse = [self.visit(child, newnode) for child in node.orelse] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_ifexp(self, node, parent): |
@@ -587,7 +558,6 @@ class TreeRebuilder(object): |
newnode.test = self.visit(node.test, newnode) |
newnode.body = self.visit(node.body, newnode) |
newnode.orelse = self.visit(node.orelse, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_import(self, node, parent): |
@@ -604,18 +574,16 @@ class TreeRebuilder(object): |
def visit_index(self, node, parent): |
"""visit a Index node by returning a fresh instance of it""" |
newnode = new.Index() |
- _lineno_parent(node, newnode, parent) |
+ newnode.parent = parent |
newnode.value = self.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_keyword(self, node, parent): |
"""visit a Keyword node by returning a fresh instance of it""" |
newnode = new.Keyword() |
- _lineno_parent(node, newnode, parent) |
+ newnode.parent = parent |
newnode.arg = node.arg |
newnode.value = self.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_lambda(self, node, parent): |
@@ -624,7 +592,6 @@ class TreeRebuilder(object): |
_lineno_parent(node, newnode, parent) |
newnode.args = self.visit(node.args, newnode) |
newnode.body = self.visit(node.body, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_list(self, node, parent): |
@@ -632,7 +599,6 @@ class TreeRebuilder(object): |
newnode = new.List() |
_lineno_parent(node, newnode, parent) |
newnode.elts = [self.visit(child, newnode) for child in node.elts] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_listcomp(self, node, parent): |
@@ -642,7 +608,6 @@ class TreeRebuilder(object): |
newnode.elt = self.visit(node.elt, newnode) |
newnode.generators = [self.visit(child, newnode) |
for child in node.generators] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_name(self, node, parent): |
@@ -665,7 +630,6 @@ class TreeRebuilder(object): |
# XXX REMOVE me : |
if self.asscontext in ('Del', 'Ass'): # 'Aug' ?? |
self._save_assignment(newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_bytes(self, node, parent): |
@@ -700,7 +664,6 @@ class TreeRebuilder(object): |
if node.dest is not None: |
newnode.dest = self.visit(node.dest, newnode) |
newnode.values = [self.visit(child, newnode) for child in node.values] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_raise(self, node, parent): |
@@ -713,7 +676,6 @@ class TreeRebuilder(object): |
newnode.inst = self.visit(node.inst, newnode) |
if node.tback is not None: |
newnode.tback = self.visit(node.tback, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_return(self, node, parent): |
@@ -722,7 +684,6 @@ class TreeRebuilder(object): |
_lineno_parent(node, newnode, parent) |
if node.value is not None: |
newnode.value = self.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_set(self, node, parent): |
@@ -730,7 +691,6 @@ class TreeRebuilder(object): |
newnode = new.Set() |
_lineno_parent(node, newnode, parent) |
newnode.elts = [self.visit(child, newnode) for child in node.elts] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_setcomp(self, node, parent): |
@@ -740,20 +700,18 @@ class TreeRebuilder(object): |
newnode.elt = self.visit(node.elt, newnode) |
newnode.generators = [self.visit(child, newnode) |
for child in node.generators] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_slice(self, node, parent): |
"""visit a Slice node by returning a fresh instance of it""" |
newnode = new.Slice() |
- _lineno_parent(node, newnode, parent) |
+ newnode.parent = parent |
if node.lower is not None: |
newnode.lower = self.visit(node.lower, newnode) |
if node.upper is not None: |
newnode.upper = self.visit(node.upper, newnode) |
if node.step is not None: |
newnode.step = self.visit(node.step, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_subscript(self, node, parent): |
@@ -764,7 +722,6 @@ class TreeRebuilder(object): |
newnode.value = self.visit(node.value, newnode) |
newnode.slice = self.visit(node.slice, newnode) |
self.asscontext = subcontext |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_tryexcept(self, node, parent): |
@@ -774,7 +731,6 @@ class TreeRebuilder(object): |
newnode.body = [self.visit(child, newnode) for child in node.body] |
newnode.handlers = [self.visit(child, newnode) for child in node.handlers] |
newnode.orelse = [self.visit(child, newnode) for child in node.orelse] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_tryfinally(self, node, parent): |
@@ -783,7 +739,6 @@ class TreeRebuilder(object): |
_lineno_parent(node, newnode, parent) |
newnode.body = [self.visit(child, newnode) for child in node.body] |
newnode.finalbody = [self.visit(n, newnode) for n in node.finalbody] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_tuple(self, node, parent): |
@@ -791,7 +746,6 @@ class TreeRebuilder(object): |
newnode = new.Tuple() |
_lineno_parent(node, newnode, parent) |
newnode.elts = [self.visit(child, newnode) for child in node.elts] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_unaryop(self, node, parent): |
@@ -800,7 +754,6 @@ class TreeRebuilder(object): |
_lineno_parent(node, newnode, parent) |
newnode.operand = self.visit(node.operand, newnode) |
newnode.op = _UNARY_OP_CLASSES[node.op.__class__] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_while(self, node, parent): |
@@ -810,7 +763,6 @@ class TreeRebuilder(object): |
newnode.test = self.visit(node.test, newnode) |
newnode.body = [self.visit(child, newnode) for child in node.body] |
newnode.orelse = [self.visit(child, newnode) for child in node.orelse] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_with(self, node, parent): |
@@ -825,7 +777,6 @@ class TreeRebuilder(object): |
self.asscontext = None |
newnode.items = [(expr, vars)] |
newnode.body = [self.visit(child, newnode) for child in node.body] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_yield(self, node, parent): |
@@ -867,7 +818,6 @@ class TreeRebuilder3k(TreeRebuilder): |
if node.name is not None: |
newnode.name = self.visit_assname(node, newnode, node.name) |
newnode.body = [self.visit(child, newnode) for child in node.body] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_nonlocal(self, node, parent): |
@@ -885,7 +835,6 @@ class TreeRebuilder3k(TreeRebuilder): |
newnode.exc = self.visit(node.exc, newnode) |
if node.cause is not None: |
newnode.cause = self.visit(node.cause, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_starred(self, node, parent): |
@@ -893,7 +842,6 @@ class TreeRebuilder3k(TreeRebuilder): |
newnode = new.Starred() |
_lineno_parent(node, newnode, parent) |
newnode.value = self.visit(node.value, newnode) |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_try(self, node, parent): |
@@ -908,7 +856,6 @@ class TreeRebuilder3k(TreeRebuilder): |
excnode.body = [self.visit(child, excnode) for child in node.body] |
excnode.handlers = [self.visit(child, excnode) for child in node.handlers] |
excnode.orelse = [self.visit(child, excnode) for child in node.orelse] |
- excnode.set_line_info(excnode.last_child()) |
newnode.body = [excnode] |
else: |
newnode.body = [self.visit(child, newnode) for child in node.body] |
@@ -918,7 +865,6 @@ class TreeRebuilder3k(TreeRebuilder): |
newnode.body = [self.visit(child, newnode) for child in node.body] |
newnode.handlers = [self.visit(child, newnode) for child in node.handlers] |
newnode.orelse = [self.visit(child, newnode) for child in node.orelse] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_with(self, node, parent): |
@@ -940,7 +886,6 @@ class TreeRebuilder3k(TreeRebuilder): |
newnode.items = [visit_child(child) |
for child in node.items] |
newnode.body = [self.visit(child, newnode) for child in node.body] |
- newnode.set_line_info(newnode.last_child()) |
return newnode |
def visit_yieldfrom(self, node, parent): |