Fix compiler.ast.flatten function so that it works on lists.

This commit is contained in:
Neil Schemenauer 2005-06-02 05:55:20 +00:00
parent 76276177de
commit f36947032f
3 changed files with 13 additions and 8 deletions

View File

@ -4,9 +4,9 @@ This file is automatically generated by Tools/compiler/astgen.py
"""
from consts import CO_VARARGS, CO_VARKEYWORDS
def flatten(list):
def flatten(seq):
l = []
for elt in list:
for elt in seq:
t = type(elt)
if t is tuple or t is list:
for elt2 in flatten(elt):
@ -15,8 +15,8 @@ def flatten(list):
l.append(elt)
return l
def flatten_nodes(list):
return [n for n in flatten(list) if isinstance(n, Node)]
def flatten_nodes(seq):
return [n for n in flatten(seq) if isinstance(n, Node)]
nodes = {}

View File

@ -1,4 +1,5 @@
import compiler
from compiler.ast import flatten
import os
import test.test_support
import unittest
@ -60,6 +61,10 @@ class CompilerTest(unittest.TestCase):
for child in node.getChildNodes():
self.check_lineno(child)
def testFlatten(self):
self.assertEquals(flatten([1, [2]]), [1, 2])
self.assertEquals(flatten((1, (2,))), [1, 2])
NOLINENO = (compiler.ast.Module, compiler.ast.Stmt, compiler.ast.Discard)
###############################################################################

View File

@ -234,9 +234,9 @@ This file is automatically generated by Tools/compiler/astgen.py
"""
from consts import CO_VARARGS, CO_VARKEYWORDS
def flatten(list):
def flatten(seq):
l = []
for elt in list:
for elt in seq:
t = type(elt)
if t is tuple or t is list:
for elt2 in flatten(elt):
@ -245,8 +245,8 @@ def flatten(list):
l.append(elt)
return l
def flatten_nodes(list):
return [n for n in flatten(list) if isinstance(n, Node)]
def flatten_nodes(seq):
return [n for n in flatten(seq) if isinstance(n, Node)]
nodes = {}