diff options
author | cpopa <devnull@localhost> | 2013-12-16 20:26:24 +0200 |
---|---|---|
committer | cpopa <devnull@localhost> | 2013-12-16 20:26:24 +0200 |
commit | 7affddd64914fa309bd4dace72a8061933bb9a6b (patch) | |
tree | 207cabca94085de66a33024243cd79059fe753ad | |
parent | 1aace548e776880a1a27802cbbbfeba93ec4bf47 (diff) | |
download | astroid-7affddd64914fa309bd4dace72a8061933bb9a6b.tar.gz |
Add support for ast NameConstant, added in Python 3.4.
-rw-r--r-- | rebuilder.py | 7 | ||||
-rw-r--r-- | test/unittest_python3.py | 7 |
2 files changed, 13 insertions, 1 deletions
diff --git a/rebuilder.py b/rebuilder.py index 7f4c7a7..9f1f638 100644 --- a/rebuilder.py +++ b/rebuilder.py @@ -71,7 +71,6 @@ _CMP_OP_CLASSES = {Eq: '==', CONST_NAME_TRANSFORMS = {'None': None, 'True': True, 'False': False} - REDIRECT = {'arguments': 'Arguments', 'Attribute': 'Getattr', 'comprehension': 'Comprehension', @@ -838,6 +837,12 @@ class TreeRebuilder3k(TreeRebuilder): # XXX or we should instead introduce a Arg node in astroid ? return self.visit_assname(node, parent, node.arg) + def visit_nameconstant(self, node, parent): + # in Python 3.4 we have NameConstant for True/False/None + newnode = new.Const(node.value) + _set_infos(node, newnode, parent) + return newnode + def visit_arguments(self, node, parent): newnode = super(TreeRebuilder3k, self).visit_arguments(node, parent) self.asscontext = "Ass" diff --git a/test/unittest_python3.py b/test/unittest_python3.py index 84650fc..460e43a 100644 --- a/test/unittest_python3.py +++ b/test/unittest_python3.py @@ -39,5 +39,12 @@ class Python3TC(TestCase): self.assertTrue(isinstance(node.ass_type(), Assign)) + @require_version('3.4') + def test_nameconstant(self): + astroid = self.builder.string_build("def test(x=True): pass") + default = astroid.body[0].args.args[0] + self.assertEqual(default.name, 'x') + self.assertEqual(next(default.infer()).value, True) + if __name__ == '__main__': unittest_main() |