1.1 --- a/micropython/inspect.py Sat Nov 08 21:15:11 2008 +0100
1.2 +++ b/micropython/inspect.py Sat Nov 08 21:47:26 2008 +0100
1.3 @@ -85,14 +85,6 @@
1.4 capable of being used as an AST visitor.
1.5 """
1.6
1.7 - predefined_constants = {
1.8 - "None" : None,
1.9 - "True" : True,
1.10 - "False" : False,
1.11 - "Ellipsis" : Ellipsis,
1.12 - "NotImplemented" : NotImplemented
1.13 - }
1.14 -
1.15 def __init__(self, name, importer):
1.16
1.17 """
1.18 @@ -111,15 +103,6 @@
1.19 self.builtins = self.importer.modules.get("__builtins__")
1.20 self.loaded = 0
1.21
1.22 - # Constant records.
1.23 -
1.24 - self.constant_values = importer.constant_values
1.25 -
1.26 - # Ensure the predefined constants.
1.27 -
1.28 - for name, value in self.predefined_constants.items():
1.29 - self._make_constant(value)
1.30 -
1.31 # Current expression state.
1.32
1.33 self.expr = None
1.34 @@ -299,12 +282,6 @@
1.35 self.dispatch(n)
1.36 return Instance()
1.37
1.38 - def _make_constant(self, value):
1.39 - if not self.constant_values.has_key(value):
1.40 - const = Const(value)
1.41 - self.constant_values[value] = const
1.42 - return self.constant_values[value]
1.43 -
1.44 def _visitFunction(self, node, name):
1.45
1.46 """
1.47 @@ -401,7 +378,7 @@
1.48 def visitAssList(self, node):
1.49 for i, n in enumerate(node.nodes):
1.50 self.dispatch(n)
1.51 - self._make_constant(i) # for __getitem__(i) at run-time
1.52 + self.importer.make_constant(i) # for __getitem__(i) at run-time
1.53 return None
1.54
1.55 def visitAssName(self, node):
1.56 @@ -479,7 +456,7 @@
1.57 visitCompare = OP
1.58
1.59 def visitConst(self, node):
1.60 - return self._make_constant(node.value)
1.61 + return self.importer.make_constant(node.value)
1.62
1.63 visitContinue = NOP
1.64
1.65 @@ -602,7 +579,7 @@
1.66
1.67 def visitKeyword(self, node):
1.68 self.dispatch(node.expr)
1.69 - self._make_constant(node.name)
1.70 + self.importer.make_constant(node.name)
1.71 self.keyword_names.add(node.name)
1.72 return None
1.73
1.74 @@ -632,8 +609,8 @@
1.75
1.76 def visitName(self, node):
1.77 name = node.name
1.78 - if self.predefined_constants.has_key(name):
1.79 - attr = self._make_constant(self.predefined_constants[name])
1.80 + if self.importer.predefined_constants.has_key(name):
1.81 + attr = self.importer.get_predefined_constant(name)
1.82 elif self.namespaces and self.namespaces[-1].has_key(name):
1.83 attr = self.namespaces[-1][name]
1.84 elif self.has_key(name):