diff options
Diffstat (limited to 'Tools/compiler')
-rw-r--r-- | Tools/compiler/compiler/pycodegen.py | 2 | ||||
-rw-r--r-- | Tools/compiler/compiler/syntax.py | 9 | ||||
-rw-r--r-- | Tools/compiler/compiler/transformer.py | 4 |
3 files changed, 10 insertions, 5 deletions
diff --git a/Tools/compiler/compiler/pycodegen.py b/Tools/compiler/compiler/pycodegen.py index 04c115a7c3..7bc17958cf 100644 --- a/Tools/compiler/compiler/pycodegen.py +++ b/Tools/compiler/compiler/pycodegen.py @@ -49,7 +49,7 @@ def compile(filename, display=0): try: mod.compile(display) except SyntaxError, err: - print "SyntaxError:", err + raise else: f = open(filename + "c", "wb") mod.dump(f) diff --git a/Tools/compiler/compiler/syntax.py b/Tools/compiler/compiler/syntax.py index 14613ef787..88c1453a1f 100644 --- a/Tools/compiler/compiler/syntax.py +++ b/Tools/compiler/compiler/syntax.py @@ -39,7 +39,8 @@ class SyntaxErrorChecker: def visitAssign(self, node): # the transformer module handles many of these for target in node.nodes: - if isinstance(target, ast.AssList): - if target.lineno is None: - target.lineno = node.lineno - self.error(target, "can't assign to list comprehension") + pass +## if isinstance(target, ast.AssList): +## if target.lineno is None: +## target.lineno = node.lineno +## self.error(target, "can't assign to list comprehension") diff --git a/Tools/compiler/compiler/transformer.py b/Tools/compiler/compiler/transformer.py index 6e82b10c78..3607af11cb 100644 --- a/Tools/compiler/compiler/transformer.py +++ b/Tools/compiler/compiler/transformer.py @@ -943,6 +943,10 @@ class Transformer: def com_assign_list(self, node, assigning): assigns = [] for i in range(1, len(node), 2): + if i + 1 < len(node): + if node[i + 1][0] == symbol.list_for: + raise SyntaxError, "can't assign to list comprehension" + assert node[i + 1][0] == token.COMMA, node[i + 1] assigns.append(self.com_assign(node[i], assigning)) return AssList(assigns) |