summaryrefslogtreecommitdiffstats
path: root/Lib/compiler/pycodegen.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/compiler/pycodegen.py')
-rw-r--r--Lib/compiler/pycodegen.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py
index 904d066..3ba31e4 100644
--- a/Lib/compiler/pycodegen.py
+++ b/Lib/compiler/pycodegen.py
@@ -45,7 +45,10 @@ class Module:
def compile(self, display=0):
tree = parse(self.source)
root, filename = os.path.split(self.filename)
- gen = ModuleCodeGenerator(filename)
+ if "nested_scopes" in future.find_futures(tree):
+ gen = NestedScopeCodeGenerator(filename)
+ else:
+ gen = ModuleCodeGenerator(filename)
walk(tree, gen, 1)
if display:
import pprint
@@ -646,7 +649,7 @@ class CodeGenerator:
def visitAugSlice(self, node, mode):
if mode == "load":
- self.visitlSice(node, 1)
+ self.visitSlice(node, 1)
elif mode == "store":
slice = 0
if node.lower:
@@ -889,10 +892,8 @@ class ModuleCodeGenerator(CodeGenerator):
self.graph = pyassem.PyFlowGraph("<module>", filename)
self.__super_init(filename)
self.symbols = None
- self.future = None
def visitModule(self, node):
- self.future = future.find_futures(node)
self.symbols = self.parseSymbols(node)
self.__super_visitModule(node)
@@ -900,6 +901,9 @@ class ModuleCodeGenerator(CodeGenerator):
# XXX not implemented
return None
+class NestedScopeCodeGenerator(ModuleCodeGenerator):
+ pass
+
class FunctionCodeGenerator(CodeGenerator):
super_init = CodeGenerator.__init__