-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
topic-argument-clinictype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
The following code is silently accepted by Argument Clinic:
/*[clinic input]
module m
module m
[clinic start generated code]*/
The duplicate module m
should have been caught by Argument Clinic, but the guard is faulty:
cpython/Tools/clinic/clinic.py
Lines 4481 to 4482 in 9e6590b
if name in module.classes: | |
fail("Already defined module " + repr(name) + "!") |
The check should be against .modules
, not .classes
:
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index 1bcdb6b1c3..dc4a7f9318 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -4478,7 +4478,7 @@ def directive_module(self, name: str) -> None:
if cls:
fail("Can't nest a module inside a class!")
- if name in module.classes:
+ if name in module.modules:
fail("Already defined module " + repr(name) + "!")
m = Module(name, module)
See also the Module
class:
cpython/Tools/clinic/clinic.py
Lines 2384 to 2392 in 9e6590b
class Module: | |
name: str | |
module: Module | Clinic | |
def __post_init__(self) -> None: | |
self.parent = self.module | |
self.modules: ModuleDict = {} | |
self.classes: ClassDict = {} | |
self.functions: list[Function] = [] |
Linked PRs
Metadata
Metadata
Assignees
Labels
topic-argument-clinictype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error