1.1 --- a/micropython/inspect.py Sat Jul 14 21:46:38 2012 +0200
1.2 +++ b/micropython/inspect.py Sat Jul 14 23:27:43 2012 +0200
1.3 @@ -840,19 +840,30 @@
1.4 self.use_attribute(expr.name, attrname, value)
1.5 self._visitAttrUser(expr, attrname, node, self.expr)
1.6
1.7 + # No definite attribute can be identified, since the instance
1.8 + # being accessed may be a subclass of the method's class.
1.9 +
1.10 + attr = make_instance()
1.11 +
1.12 elif isinstance(value, Module):
1.13 self.store_module_attr(attrname, value)
1.14 + attr = value.get(attrname)
1.15
1.16 elif isinstance(value, Class):
1.17 self.store_class_attr(attrname, value)
1.18 + attr = value.get(attrname)
1.19
1.20 # Note usage of the attribute where a local is involved.
1.21
1.22 else:
1.23 self._visitAttrUser(expr, attrname, node, self.expr)
1.24 + attr = make_instance()
1.25
1.26 else:
1.27 self.use_name(attrname, node)
1.28 + attr = make_instance()
1.29 +
1.30 + node._attr = attr
1.31
1.32 def visitAssList(self, node):
1.33
1.34 @@ -1155,9 +1166,8 @@
1.35 visitGenExprInner = NOP
1.36
1.37 def visitGetattr(self, node):
1.38 - expr = self.dispatch(node.expr)
1.39 - attrname = node.attrname
1.40 - node._attr = self._visitAttr(expr, attrname, node)
1.41 + node._expr = self.dispatch(node.expr)
1.42 + node._attr = self._visitAttr(node._expr, node.attrname, node)
1.43 return node._attr
1.44
1.45 def visitGlobal(self, node):