Skip to content
This repository was archived by the owner on Mar 2, 2022. It is now read-only.

Commit 3f7be6b

Browse files
committed
Use Python 3.7 generator when running on Python 3.7
Summary: This is the start of actually being able to really use the Python 3.7 compiler - we'll now switch the default compilation mode based upon the version in sys.version_info. We also now need to define the SETUP_ANNOTATIONS opcode to be able to import the compiler on 3.7 similar to how we define LOAD_METHOD/CALL_METHOD on 3.6 Test Plan: ./python -m test.test_compiler
1 parent ea2deb8 commit 3f7be6b

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

compiler/pycodegen.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def compile(source, filename, mode, flags=None, dont_inherit=None):
5959
if flags is not None or dont_inherit is not None:
6060
raise RuntimeError("not implemented yet")
6161

62-
return make_compiler(source, filename, mode, CodeGenerator).getCode()
62+
return make_compiler(source, filename, mode, get_default_generator()).getCode()
6363

6464

6565
def make_compiler(source, filename, mode, generator=None):
@@ -73,7 +73,7 @@ def make_compiler(source, filename, mode, generator=None):
7373
tree = ast.parse(source, filename, mode)
7474

7575
if generator is None:
76-
generator = CodeGenerator
76+
generator = get_default_generator()
7777

7878
return generator.make_code_gen("<module>", tree, filename)
7979

@@ -1975,7 +1975,11 @@ def _visitAnnotation(self, node):
19751975
else:
19761976
self.visit(node)
19771977

1978+
def get_default_generator():
1979+
if sys.version_info >= (3, 7):
1980+
return Python37CodeGenerator
19781981

1982+
return CodeGenerator
19791983

19801984
def get_docstring(node):
19811985
if node.body and isinstance(node.body[0], ast.Expr) \

0 commit comments

Comments
 (0)