diff options
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | inference.py | 2 | ||||
-rw-r--r-- | rebuilder.py | 2 | ||||
-rw-r--r-- | test/unittest_inference.py | 14 |
4 files changed, 16 insertions, 3 deletions
@@ -9,6 +9,7 @@ Change log for the astng package in lambdas. * #123068: Make sure .as_string() returns valid code for yields in expressions. + * #47957: Set literals are now correctly treated as inference leaves. 2013-02-27 -- 0.24.2 * pylint-brain: more subprocess.Popen faking (see #46273) diff --git a/inference.py b/inference.py index e33ea492..49d2424a 100644 --- a/inference.py +++ b/inference.py @@ -137,7 +137,7 @@ nodes.Const.infer = infer_end nodes.List.infer = infer_end nodes.Tuple.infer = infer_end nodes.Dict.infer = infer_end - +nodes.Set.infer = infer_end def infer_name(self, context=None): """infer a Name: use name lookup rules""" diff --git a/rebuilder.py b/rebuilder.py index c4ce726b..5e2ed99f 100644 --- a/rebuilder.py +++ b/rebuilder.py @@ -698,7 +698,7 @@ class TreeRebuilder(object): return newnode def visit_set(self, node, parent): - """visit a Tuple node by returning a fresh instance of it""" + """visit a Set node by returning a fresh instance of it""" newnode = new.Set() _lineno_parent(node, newnode, parent) newnode.elts = [self.visit(child, newnode) for child in node.elts] diff --git a/test/unittest_inference.py b/test/unittest_inference.py index aacca461..3853e353 100644 --- a/test/unittest_inference.py +++ b/test/unittest_inference.py @@ -1,4 +1,4 @@ -# copyright 2003-2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved. # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr # # This file is part of logilab-astng. @@ -432,6 +432,18 @@ s2 = '_' infered = n.infer().next() self.assertEqual(infered.getitem(0).value, '_') + def test_builtin_types_py27(self): + if sys.version_info < (2, 7): + self.skipTest('set literal introduced in python 2.7') + code = 's = {1}' + astng = builder.string_build(code, __name__, __file__) + n = astng['s'] + infered = n.infer().next() + self.assertIsInstance(infered, nodes.Set) + self.assertIsInstance(infered, Instance) + self.assertEqual(infered.name, 'set') + self.assertIn('remove', infered._proxied.locals) + def test_unicode_type(self): if sys.version_info >= (3, 0): self.skipTest('unicode removed on py >= 3.0') |