mirror of
https://github.com/python/cpython.git
synced 2026-01-03 22:12:27 +00:00
gh-128152: Argument Clinic: ignore pre-processor directives inside C comments (#128464)
This commit is contained in:
parent
03ede5afe2
commit
a4e773c540
3 changed files with 15 additions and 0 deletions
|
|
@ -740,6 +740,16 @@ def test_cloned_forced_text_signature_illegal(self):
|
|||
err = "Cannot use @text_signature when cloning a function"
|
||||
self.expect_failure(block, err, lineno=11)
|
||||
|
||||
def test_ignore_preprocessor_in_comments(self):
|
||||
for dsl in "clinic", "python":
|
||||
raw = dedent(f"""\
|
||||
/*[{dsl} input]
|
||||
# CPP directives, valid or not, should be ignored in C comments.
|
||||
#
|
||||
[{dsl} start generated code]*/
|
||||
""")
|
||||
self.clinic.parse(raw)
|
||||
|
||||
|
||||
class ParseFileUnitTest(TestCase):
|
||||
def expect_parsing_failure(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Fix a bug where Argument Clinic's C pre-processor parser tried to parse
|
||||
pre-processor directives inside C comments. Patch by Erlend Aasland.
|
||||
|
|
@ -132,6 +132,9 @@ def pop_stack() -> TokenAndCondition:
|
|||
if line_comment:
|
||||
line = before.rstrip()
|
||||
|
||||
if self.in_comment:
|
||||
return
|
||||
|
||||
if not line.startswith('#'):
|
||||
return
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue