summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcpopa <devnull@localhost>2013-12-16 20:26:24 +0200
committercpopa <devnull@localhost>2013-12-16 20:26:24 +0200
commit7affddd64914fa309bd4dace72a8061933bb9a6b (patch)
tree207cabca94085de66a33024243cd79059fe753ad
parent1aace548e776880a1a27802cbbbfeba93ec4bf47 (diff)
downloadastroid-7affddd64914fa309bd4dace72a8061933bb9a6b.tar.gz
Add support for ast NameConstant, added in Python 3.4.
-rw-r--r--rebuilder.py7
-rw-r--r--test/unittest_python3.py7
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()