diff options
Diffstat (limited to 'Lib/lib2to3/fixes/fix_intern.py')
-rw-r--r-- | Lib/lib2to3/fixes/fix_intern.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/Lib/lib2to3/fixes/fix_intern.py b/Lib/lib2to3/fixes/fix_intern.py index d752843..285c126 100644 --- a/Lib/lib2to3/fixes/fix_intern.py +++ b/Lib/lib2to3/fixes/fix_intern.py @@ -6,8 +6,9 @@ intern(s) -> sys.intern(s)""" # Local imports +from .. import pytree from .. import fixer_base -from ..fixer_util import ImportAndCall, touch_import +from ..fixer_util import Name, Attr, touch_import class FixIntern(fixer_base.BaseFix): @@ -30,10 +31,26 @@ class FixIntern(fixer_base.BaseFix): # PATTERN above but I don't know how to do it so... obj = results['obj'] if obj: + if obj.type == self.syms.star_expr: + return # Make no change. if (obj.type == self.syms.argument and - obj.children[0].value in {'**', '*'}): + obj.children[0].value == '**'): return # Make no change. - names = ('sys', 'intern') - new = ImportAndCall(node, results, names) - touch_import(None, 'sys', node) + syms = self.syms + obj = results["obj"].clone() + if obj.type == syms.arglist: + newarglist = obj.clone() + else: + newarglist = pytree.Node(syms.arglist, [obj.clone()]) + after = results["after"] + if after: + after = [n.clone() for n in after] + new = pytree.Node(syms.power, + Attr(Name(u"sys"), Name(u"intern")) + + [pytree.Node(syms.trailer, + [results["lpar"].clone(), + newarglist, + results["rpar"].clone()])] + after) + new.prefix = node.prefix + touch_import(None, u'sys', node) return new |