mirror of https://github.com/python/cpython
gh-93345: Fix a crash in substitution of nested TypeVar after TypeVarTuple (GH-93346)
For example: tuple[*Ts, list[T]][int, str, bool]
This commit is contained in:
parent
5893b5db98
commit
f545fc955a
|
@ -768,12 +768,18 @@ class GenericAliasSubstitutionTests(BaseTestCase):
|
|||
('generic[T, *Ts]', '[int]', 'generic[int]'),
|
||||
('generic[T, *Ts]', '[int, str]', 'generic[int, str]'),
|
||||
('generic[T, *Ts]', '[int, str, bool]', 'generic[int, str, bool]'),
|
||||
('generic[list[T], *Ts]', '[int]', 'generic[list[int]]'),
|
||||
('generic[list[T], *Ts]', '[int, str]', 'generic[list[int], str]'),
|
||||
('generic[list[T], *Ts]', '[int, str, bool]', 'generic[list[int], str, bool]'),
|
||||
|
||||
('generic[T, *Ts]', '[*tuple[int, ...]]', 'TypeError'), # Should be generic[int, *tuple[int, ...]]
|
||||
|
||||
('generic[*Ts, T]', '[int]', 'generic[int]'),
|
||||
('generic[*Ts, T]', '[int, str]', 'generic[int, str]'),
|
||||
('generic[*Ts, T]', '[int, str, bool]', 'generic[int, str, bool]'),
|
||||
('generic[*Ts, T]', '[int, str, bool]', 'generic[int, str, bool]'),
|
||||
('generic[*Ts, list[T]]', '[int]', 'generic[list[int]]'),
|
||||
('generic[*Ts, list[T]]', '[int, str]', 'generic[int, list[str]]'),
|
||||
('generic[*Ts, list[T]]', '[int, str, bool]', 'generic[int, str, list[bool]]'),
|
||||
|
||||
('generic[T, *tuple_type[int, ...]]', '[str]', 'generic[str, *tuple_type[int, ...]]'),
|
||||
('generic[T1, T2, *tuple_type[int, ...]]', '[str, bool]', 'generic[str, bool, *tuple_type[int, ...]]'),
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix a crash in substitution of a ``TypeVar`` in nested generic alias after
|
||||
``TypeVarTuple``.
|
|
@ -296,7 +296,7 @@ subs_tvars(PyObject *obj, PyObject *params,
|
|||
else {
|
||||
if (iparam >= 0) {
|
||||
if (iparam > varparam) {
|
||||
iparam += nargs - nsubargs;
|
||||
iparam += nargs - nparams;
|
||||
}
|
||||
arg = argitems[iparam];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue