Last change
on this file was 391, checked in by dmik, 11 years ago |
python: Merge vendor 2.7.6 to trunk.
|
-
Property svn:eol-style
set to
native
|
File size:
1.2 KB
|
Line | |
---|
1 | """Fixer that addes parentheses where they are required
|
---|
2 |
|
---|
3 | This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``."""
|
---|
4 |
|
---|
5 | # By Taek Joo Kim and Benjamin Peterson
|
---|
6 |
|
---|
7 | # Local imports
|
---|
8 | from .. import fixer_base
|
---|
9 | from ..fixer_util import LParen, RParen
|
---|
10 |
|
---|
11 | # XXX This doesn't support nested for loops like [x for x in 1, 2 for x in 1, 2]
|
---|
12 | class FixParen(fixer_base.BaseFix):
|
---|
13 | BM_compatible = True
|
---|
14 |
|
---|
15 | PATTERN = """
|
---|
16 | atom< ('[' | '(')
|
---|
17 | (listmaker< any
|
---|
18 | comp_for<
|
---|
19 | 'for' NAME 'in'
|
---|
20 | target=testlist_safe< any (',' any)+ [',']
|
---|
21 | >
|
---|
22 | [any]
|
---|
23 | >
|
---|
24 | >
|
---|
25 | |
|
---|
26 | testlist_gexp< any
|
---|
27 | comp_for<
|
---|
28 | 'for' NAME 'in'
|
---|
29 | target=testlist_safe< any (',' any)+ [',']
|
---|
30 | >
|
---|
31 | [any]
|
---|
32 | >
|
---|
33 | >)
|
---|
34 | (']' | ')') >
|
---|
35 | """
|
---|
36 |
|
---|
37 | def transform(self, node, results):
|
---|
38 | target = results["target"]
|
---|
39 |
|
---|
40 | lparen = LParen()
|
---|
41 | lparen.prefix = target.prefix
|
---|
42 | target.prefix = u"" # Make it hug the parentheses
|
---|
43 | target.insert_child(0, lparen)
|
---|
44 | target.append_child(RParen())
|
---|
Note:
See
TracBrowser
for help on using the repository browser.