| 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):
|
|
|