]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Backport bugfixes from the trunk.
authorJeremy Hylton <jeremy@alum.mit.edu>
Mon, 17 Dec 2001 23:58:08 +0000 (23:58 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Mon, 17 Dec 2001 23:58:08 +0000 (23:58 +0000)
Add __getitem__() to a stack to support visitContinue().
Move mangle() here and define correctly.

Tools/compiler/compiler/misc.py

index 29ff86678025f1bcb5c52e54816792e5e525f59c..1727401b2d660b68e623d54659d6fafa7ce3106f 100644 (file)
@@ -39,3 +39,29 @@ class Stack:
         self.stack.append(elt)
     def top(self):
         return self.stack[-1]
+    def __getitem__(self, index): # needed by visitContinue()
+        return self.stack[index]
+
+MANGLE_LEN = 256 # magic constant from compile.c
+
+def mangle(name, klass):
+    if not name.startswith('__'):
+        return name
+    if len(name) + 2 >= MANGLE_LEN:
+        return name
+    if name.endswith('__'):
+        return name
+    try:
+        i = 0
+        while klass[i] == '_':
+            i = i + 1
+    except IndexError:
+        return name
+    klass = klass[i:]
+
+    tlen = len(klass) + len(name)
+    if tlen > MANGLE_LEN:
+        klass = klass[:MANGLE_LEN-tlen]
+
+    return "_%s%s" % (klass, name)
+