diff options
author | Torsten Marek <tmarek@google.com> | 2013-03-27 13:43:44 +0100 |
---|---|---|
committer | Torsten Marek <tmarek@google.com> | 2013-03-27 13:43:44 +0100 |
commit | 81a37d033676e3dccaab611bb723cf9eb08ec460 (patch) | |
tree | 730bb96809dde9596d0b6b9172da5512437949b2 /node_classes.py | |
parent | cef0d67e61af3f27b539c7b5492c8723f6787fe2 (diff) | |
download | astroid-git-81a37d033676e3dccaab611bb723cf9eb08ec460.tar.gz |
Add support for inference of subscript operations on dict literals. Closes #123074
actually fix Dict.getitem and enhance infer_subscript
--HG--
branch : stable
Diffstat (limited to 'node_classes.py')
-rw-r--r-- | node_classes.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/node_classes.py b/node_classes.py index 3073535e..e3f1c8db 100644 --- a/node_classes.py +++ b/node_classes.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 # copyright 2003-2010 Sylvain Thenault, all rights reserved. # contact mailto:thenault@gmail.com @@ -513,14 +513,16 @@ class Dict(NodeNG, Instance): def itered(self): return self.items[::2] - def getitem(self, key, context=None): - for i in xrange(0, len(self.items), 2): - for inferedkey in self.items[i].infer(context): + def getitem(self, lookup_key, context=None): + for key, value in self.items: + for inferedkey in key.infer(context): if inferedkey is YES: continue - if isinstance(inferedkey, Const) and inferedkey.value == key: - return self.items[i+1] - raise IndexError(key) + if isinstance(inferedkey, Const) and inferedkey.value == lookup_key: + return value + # This should raise KeyError, but all call sites only catch + # IndexError. Let's leave it like that for now. + raise IndexError(lookup_key) class Discard(Statement): |