[Python-Dev] Column offsets for attribute nodes (original) (raw)

Sven Brauch svenbrauch at googlemail.com
Mon Dec 27 20:42:59 CET 2010


Glenn wrote:

[...] but maybe bar at 4 and baz at 8 would be even better. In other words, I don't think pointing at the "." is useful? [...]

Hi,

here's a patch which results in what Glenn Linderman suggested:

--- python-orig/Python/ast.c 2010-10-19 03:22:07.000000000 +0200 +++ python-new/Python/ast.c 2010-12-27 20:33:55.000000000 +0100 @@ -1615,7 +1615,7 @@ if (!attr_id) return NULL; return Attribute(left_expr, attr_id, Load,

1)->n_col_offset, c->c_arena); } else { REQ(CHILD(n, 0), LSQB); @@ -1742,8 +1742,6 @@ tmp = ast_for_trailer(c, ch, e); if (!tmp) return NULL;

This gives 0, 4, 8 as column offsets for foo.bar.baz and 0, 6, 14 for foo. bar. baz, i.e. points to the beginning of the attribute identifier. What do you think?

Bye, Sven

2010/12/27 Nick Coghlan <ncoghlan at gmail.com>:

On Mon, Dec 27, 2010 at 9:34 AM, Benjamin Peterson <benjamin at python.org> wrote:

2010/12/26 Sven Brauch <svenbrauch at googlemail.com>:

In that discussion, there's been different opinions about which behaviour is better; main arguments were "consistency" for the current and "usefulness" for the suggested behaviour. It has been proposed to ask the question on this list, that's why I'm doing that now. :)

My argument against this change is that an attribute includes the expression from which the attribute is being taken. This is consistent with subscripts and calls, which both have the lineno and coloffset of their source expressions. I'd like to see the impact on existing uses of this information (primarily SyntaxErrors) before forming a firm opinion, but my initial inclination is that retaining the column information for the subattribute names is a better option. Cheers, Nick. -- Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia



More information about the Python-Dev mailing list