mirror of
https://github.com/python/cpython.git
synced 2025-08-23 10:16:01 +00:00
gh-111366: Correctly show custom syntax error messages in the codeop module functions (#111384)
This commit is contained in:
parent
624ace5a2f
commit
cd6e0a04a1
3 changed files with 30 additions and 5 deletions
|
@ -70,10 +70,14 @@ def _maybe_compile(compiler, source, filename, symbol):
|
|||
return None
|
||||
# fallthrough
|
||||
|
||||
return compiler(source, filename, symbol)
|
||||
return compiler(source, filename, symbol, incomplete_input=False)
|
||||
|
||||
def _compile(source, filename, symbol):
|
||||
return compile(source, filename, symbol, PyCF_DONT_IMPLY_DEDENT | PyCF_ALLOW_INCOMPLETE_INPUT)
|
||||
def _compile(source, filename, symbol, incomplete_input=True):
|
||||
flags = 0
|
||||
if incomplete_input:
|
||||
flags |= PyCF_ALLOW_INCOMPLETE_INPUT
|
||||
flags |= PyCF_DONT_IMPLY_DEDENT
|
||||
return compile(source, filename, symbol, flags)
|
||||
|
||||
def compile_command(source, filename="<input>", symbol="single"):
|
||||
r"""Compile a command and determine whether it is incomplete.
|
||||
|
@ -104,8 +108,12 @@ class Compile:
|
|||
def __init__(self):
|
||||
self.flags = PyCF_DONT_IMPLY_DEDENT | PyCF_ALLOW_INCOMPLETE_INPUT
|
||||
|
||||
def __call__(self, source, filename, symbol):
|
||||
codeob = compile(source, filename, symbol, self.flags, True)
|
||||
def __call__(self, source, filename, symbol, **kwargs):
|
||||
flags = self.flags
|
||||
if kwargs.get('incomplete_input', True) is False:
|
||||
flags &= ~PyCF_DONT_IMPLY_DEDENT
|
||||
flags &= ~PyCF_ALLOW_INCOMPLETE_INPUT
|
||||
codeob = compile(source, filename, symbol, flags, True)
|
||||
for feature in _features:
|
||||
if codeob.co_flags & feature.compiler_flag:
|
||||
self.flags |= feature.compiler_flag
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue