##// END OF EJS Templates
catch `MemoryError` in compiling
yangyang -
Show More
@@ -153,13 +153,13 b' def _should_be_async(cell: str) -> bool:'
153 try:
153 try:
154 code = compile(cell, "<>", "exec", flags=getattr(ast,'PyCF_ALLOW_TOP_LEVEL_AWAIT', 0x0))
154 code = compile(cell, "<>", "exec", flags=getattr(ast,'PyCF_ALLOW_TOP_LEVEL_AWAIT', 0x0))
155 return inspect.CO_COROUTINE & code.co_flags == inspect.CO_COROUTINE
155 return inspect.CO_COROUTINE & code.co_flags == inspect.CO_COROUTINE
156 except SyntaxError:
156 except (SyntaxError, MemoryError):
157 return False
157 return False
158 try:
158 try:
159 # we can't limit ourself to ast.parse, as it __accepts__ to parse on
159 # we can't limit ourself to ast.parse, as it __accepts__ to parse on
160 # 3.7+, but just does not _compile_
160 # 3.7+, but just does not _compile_
161 code = compile(cell, "<>", "exec")
161 code = compile(cell, "<>", "exec")
162 except SyntaxError:
162 except (SyntaxError, MemoryError):
163 try:
163 try:
164 parse_tree = _async_parse_cell(cell)
164 parse_tree = _async_parse_cell(cell)
165
165
@@ -167,7 +167,7 b' def _should_be_async(cell: str) -> bool:'
167 v = _AsyncSyntaxErrorVisitor()
167 v = _AsyncSyntaxErrorVisitor()
168 v.visit(parse_tree)
168 v.visit(parse_tree)
169
169
170 except SyntaxError:
170 except (SyntaxError, MemoryError):
171 return False
171 return False
172 return True
172 return True
173 return False
173 return False
General Comments 0
You need to be logged in to leave comments. Login now