Skip to content

Commit 0cf8b3a

Browse files
committed
fix miswork on TypeVar arguments
Signed-off-by: snowapril <sinjihng@gmail.com>
1 parent 46a1c36 commit 0cf8b3a

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

vm/src/builtins/genericalias.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -204,24 +204,24 @@ fn subs_tvars(
204204
argitems: &[PyObjectRef],
205205
vm: &VirtualMachine,
206206
) -> PyResult {
207-
let sub_params = obj.clone().get_attr("__parameters__", vm)?;
208-
if let Ok(sub_params) = PyTupleRef::try_from_object(vm, sub_params) {
209-
let sub_args = sub_params
210-
.as_slice()
211-
.iter()
212-
.map(|arg| {
213-
if let Some(idx) = tuple_index(params, arg) {
214-
argitems[idx].clone()
215-
} else {
216-
arg.clone()
217-
}
218-
})
219-
.collect::<Vec<_>>();
220-
let sub_args: PyObjectRef = PyTuple::new_ref(sub_args, &vm.ctx).into();
221-
obj.get_item(sub_args, vm)
222-
} else {
223-
Ok(obj)
207+
if let Some(sub_params) = obj.class().get_attr("__parameters__") {
208+
if let Ok(sub_params) = PyTupleRef::try_from_object(vm, sub_params) {
209+
let sub_args = sub_params
210+
.as_slice()
211+
.iter()
212+
.map(|arg| {
213+
if let Some(idx) = tuple_index(params, arg) {
214+
argitems[idx].clone()
215+
} else {
216+
arg.clone()
217+
}
218+
})
219+
.collect::<Vec<_>>();
220+
let sub_args: PyObjectRef = PyTuple::new_ref(sub_args, &vm.ctx).into();
221+
return obj.get_item(sub_args, vm);
222+
}
224223
}
224+
Ok(obj)
225225
}
226226

227227
impl AsMapping for PyGenericAlias {

0 commit comments

Comments
 (0)