1.1 --- a/simplified.py Sat Oct 14 02:17:40 2006 +0200
1.2 +++ b/simplified.py Sun Oct 15 01:03:44 2006 +0200
1.3 @@ -110,22 +110,25 @@
1.4 choices Any choices which may be included in the final program.
1.5 """
1.6
1.7 - def __init__(self, original=None, **kw):
1.8 + def __init__(self, original=None, defining=0, **kw):
1.9
1.10 """
1.11 - Initialise a program node with an optional link to an 'original' AST
1.12 - node.
1.13 + Initialise a program node with a link to an optional 'original' AST
1.14 + node. An optional 'defining' parameter (if set to a true value), sets
1.15 + this node as the defining node in the original.
1.16 """
1.17
1.18 self.original = original
1.19 - if self.original is not None:
1.20 + self.defining = defining
1.21 +
1.22 + if self.original is not None and defining:
1.23 self.original._node = self
1.24 for name, value in kw.items():
1.25 setattr(self, name, value)
1.26
1.27 def __repr__(self):
1.28 if hasattr(self, "full_name"):
1.29 - s = "%s '%s'" % (self.__class__.__name__, self.full_name)
1.30 + s = "%s '%s'" % (self.__class__.__name__, self.full_name())
1.31 elif hasattr(self, "name"):
1.32 s = "%s '%s'" % (self.__class__.__name__, self.name)
1.33 elif hasattr(self, "index"):
1.34 @@ -276,7 +279,10 @@
1.35 "Node naming."
1.36
1.37 def __init__(self):
1.38 - self.full_name = name(self, self.name or "$untitled")
1.39 + self._full_name = name(self, self.name or "$untitled")
1.40 +
1.41 + def full_name(self):
1.42 + return self._full_name
1.43
1.44 class Module(Node, WithName):
1.45
1.46 @@ -310,8 +316,11 @@
1.47
1.48 "An instance."
1.49
1.50 + def full_name(self):
1.51 + return self.namespace.load("__class__")[0].type.full_name()
1.52 +
1.53 def __repr__(self):
1.54 - return "Instance of type '%s'" % self.namespace.load("__class__")[0].type.full_name
1.55 + return "Instance of type '%s'" % self.full_name()
1.56
1.57 class Constant(Instance):
1.58