1.1 --- a/micropython/data.py Sun Aug 07 19:23:49 2011 +0200
1.2 +++ b/micropython/data.py Sun Aug 07 20:38:24 2011 +0200
1.3 @@ -238,7 +238,7 @@
1.4
1.5 if value is None:
1.6 print "Warning: name %r in namespace %r has an unknown value (evaluated to None)." % (name, self.full_name())
1.7 - value = Instance()
1.8 + value = make_instance()
1.9
1.10 if name in self.globals:
1.11 self.module.set(name, value, 0)
1.12 @@ -933,7 +933,7 @@
1.13 """
1.14
1.15 if self.context_values.issuperset(context_values) and \
1.16 - not (Instance(), Instance()) in context_values:
1.17 + not (make_instance(), make_instance()) in context_values:
1.18 return
1.19
1.20 if self.assignments is None:
1.21 @@ -1098,6 +1098,11 @@
1.22
1.23 __shortrepr__ = __repr__
1.24
1.25 +common_instance = Instance()
1.26 +
1.27 +def make_instance():
1.28 + return common_instance
1.29 +
1.30 class Constant:
1.31
1.32 "A superclass for all constant or context-free structures."
1.33 @@ -1462,7 +1467,7 @@
1.34
1.35 d = {}
1.36 for i, name in enumerate(self._get_position_list(instattr)):
1.37 - d[name] = Attr(i, Instance(), name)
1.38 + d[name] = Attr(i, make_instance(), name)
1.39 return d
1.40
1.41 def _get_position_list(self, positions):
1.42 @@ -1645,11 +1650,11 @@
1.43 "Add 'argnames' to the namespace."
1.44
1.45 for name in argnames:
1.46 - self.set(name, Instance())
1.47 + self.set(name, make_instance())
1.48
1.49 for name, top_level in self._flattened_parameters(argnames):
1.50 if not top_level:
1.51 - self.set(name, Instance())
1.52 + self.set(name, make_instance())
1.53
1.54 def _flattened_parameters(self, argnames, top_level=1):
1.55 l = []
1.56 @@ -1718,7 +1723,7 @@
1.57 name = "<context>"
1.58 self.argnames.insert(0, name)
1.59 self.positional_names.insert(0, name)
1.60 - self.set(name, Instance())
1.61 + self.set(name, make_instance())
1.62
1.63 # Namespace-related methods.
1.64