1.1 --- a/lib/builtins.py Mon May 28 00:51:46 2007 +0200
1.2 +++ b/lib/builtins.py Mon May 28 02:18:09 2007 +0200
1.3 @@ -795,7 +795,7 @@
1.4 return s
1.5
1.6 class tuple:
1.7 - def __init__(self, *args):
1.8 + def __init__(self, args):
1.9 for arg in args:
1.10 self.value = value
1.11
1.12 @@ -828,10 +828,10 @@
1.13 return int()
1.14
1.15 def __add__(self, other):
1.16 - result = tuple(self)
1.17 + result = list(self)
1.18 for value in other:
1.19 result.append(value)
1.20 - return result
1.21 + return tuple(result)
1.22
1.23 def __str__(self):
1.24 return str()
2.1 --- a/simplify/annotate.py Mon May 28 00:51:46 2007 +0200
2.2 +++ b/simplify/annotate.py Mon May 28 02:18:09 2007 +0200
2.3 @@ -83,6 +83,7 @@
2.4
2.5 self.init(node, attr)
2.6 self.combine(getattr(node, attr), types)
2.7 + node.annotated = 1
2.8
2.9 def combine(self, target, types):
2.10
3.1 --- a/simplify/simplified/program.py Mon May 28 00:51:46 2007 +0200
3.2 +++ b/simplify/simplified/program.py Mon May 28 02:18:09 2007 +0200
3.3 @@ -25,6 +25,7 @@
3.4
3.5 from simplify.simplified.utils import Structure, WithName, name
3.6 import sys
3.7 +import operator
3.8
3.9 # Simplified program nodes.
3.10
3.11 @@ -92,6 +93,7 @@
3.12 # Annotations.
3.13
3.14 self.types = set()
3.15 + self.annotated = 0
3.16
3.17 def __repr__(self):
3.18
3.19 @@ -212,6 +214,15 @@
3.20
3.21 return self.copies.values() or [self]
3.22
3.23 + def is_annotated(self):
3.24 +
3.25 + """
3.26 + Return whether active copies of this node (or this node itself) is
3.27 + annotated.
3.28 + """
3.29 +
3.30 + return reduce(operator.or_, [n.annotated for n in self.active()])
3.31 +
3.32 # Node manipulation functions.
3.33
3.34 def copy(self, instance=None, new_name=None):
4.1 --- a/simplify/viewer.py Mon May 28 00:51:46 2007 +0200
4.2 +++ b/simplify/viewer.py Mon May 28 02:18:09 2007 +0200
4.3 @@ -90,6 +90,10 @@
4.4 float: right;
4.5 }
4.6
4.7 + .no-types {
4.8 + background-color: #FF0000;
4.9 + }
4.10 +
4.11 .op,
4.12 .name,
4.13 .attr,
4.14 @@ -621,11 +625,17 @@
4.15 self.stream.write("<span class='assattr'>\n")
4.16 self.dispatch(node.expr)
4.17 self.stream.write("<span class='attr'>\n")
4.18 - self.stream.write(".%s\n" % self._text(node.attrname))
4.19 + self.stream.write(".")
4.20 + types = self._types(targets)
4.21 + if not target.is_annotated() or types:
4.22 + self._name_start(node.attrname)
4.23 + else:
4.24 + self._name_start(node.attrname, "no-types")
4.25 self._popup(
4.26 self._scopes(targets) +
4.27 - self._types(targets)
4.28 + types
4.29 )
4.30 + self._name_end()
4.31 self.stream.write("</span>\n")
4.32 self.stream.write("</span>\n")
4.33
4.34 @@ -639,10 +649,14 @@
4.35 def visitAssName(self, node):
4.36 target = node._node
4.37 targets = target.active()
4.38 - self._name_start(target.name)
4.39 + types = self._types(targets)
4.40 + if not target.is_annotated() or types:
4.41 + self._name_start(target.name)
4.42 + else:
4.43 + self._name_start(target.name, "no-types")
4.44 self._popup(
4.45 self._scopes(targets) +
4.46 - self._types(targets)
4.47 + types
4.48 )
4.49 self._name_end()
4.50
4.51 @@ -735,11 +749,17 @@
4.52 self.stream.write("<span class='getattr'>\n")
4.53 self.dispatch(node.expr)
4.54 self.stream.write("<span class='attr'>\n")
4.55 - self.stream.write(".%s\n" % self._text(node.attrname))
4.56 + self.stream.write(".")
4.57 + types = self._types(targets)
4.58 + if not target.is_annotated() or types:
4.59 + self._name_start(node.attrname)
4.60 + else:
4.61 + self._name_start(node.attrname, "no-types")
4.62 self._popup(
4.63 self._scopes(targets) +
4.64 - self._types(targets)
4.65 + types
4.66 )
4.67 + self._name_end()
4.68 self.stream.write("</span>\n")
4.69 self.stream.write("</span>\n")
4.70
4.71 @@ -814,10 +834,14 @@
4.72 def visitName(self, node):
4.73 target = node._node
4.74 targets = target.active()
4.75 - self._name_start(target.name)
4.76 + types = self._types(targets)
4.77 + if not target.is_annotated() or types:
4.78 + self._name_start(target.name)
4.79 + else:
4.80 + self._name_start(target.name, "no-types")
4.81 self._popup(
4.82 self._scopes(targets) +
4.83 - self._types(targets)
4.84 + types
4.85 )
4.86 self._name_end()
4.87
5.1 --- a/tests/tuple.py Mon May 28 00:51:46 2007 +0200
5.2 +++ b/tests/tuple.py Mon May 28 02:18:09 2007 +0200
5.3 @@ -1,2 +1,3 @@
5.4 t = (1, "2", 3)
5.5 a, b, c = t
5.6 +d, e, f, g, h = t + ("4", 5)