Use to handle legacy async/await handling in assert_equivalent

This commit is contained in:
Łukasz Langa 2019-05-08 23:33:39 +02:00
parent f5381c7c5f
commit 6bb90f22ed
No known key found for this signature in database
GPG Key ID: B26995E310250568

View File

@ -3382,10 +3382,15 @@ def __str__(self) -> str:
def parse_ast(src: str) -> Union[ast3.AST, ast27.AST]:
try:
return ast3.parse(src)
except SyntaxError:
return ast27.parse(src)
for feature_version in (7, 6):
try:
print(f"-- 3.{feature_version}")
return ast3.parse(src, feature_version=feature_version)
except SyntaxError:
continue
print(f"-- 2.7")
return ast27.parse(src)
def assert_equivalent(src: str, dst: str) -> None:
@ -3438,11 +3443,9 @@ def _v(node: Union[ast3.AST, ast27.AST], depth: int = 0) -> Iterator[str]:
try:
src_ast = parse_ast(src)
except Exception as exc:
major, minor = sys.version_info[:2]
raise AssertionError(
f"cannot use --safe with this file; failed to parse source file "
f"with Python {major}.{minor}'s builtin AST. Re-run with --fast "
f"or stop using deprecated Python 2 syntax. AST error message: {exc}"
f"cannot use --safe with this file; failed to parse source file. "
f"AST error message: {exc}"
)
try: