Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita75f26b

Browse files
authored
Fake PEP-0695 with empty __type_params__ (RustPython#5098)
1 parentd32cb7e commita75f26b

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

‎vm/src/builtins/function.rs‎

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ pub struct PyFunction {
3535
defaults_and_kwdefaults:PyMutex<(Option<PyTupleRef>,Option<PyDictRef>)>,
3636
name:PyMutex<PyStrRef>,
3737
qualname:PyMutex<PyStrRef>,
38+
type_params:PyMutex<PyTupleRef>,
3839
#[cfg(feature ="jit")]
3940
jitted_code:OnceCell<CompiledCode>,
4041
}
@@ -54,7 +55,8 @@ impl PyFunction {
5455
closure:Option<PyTupleTyped<PyCellRef>>,
5556
defaults:Option<PyTupleRef>,
5657
kw_only_defaults:Option<PyDictRef>,
57-
qualname:PyMutex<PyStrRef>,
58+
qualname:PyStrRef,
59+
type_params:PyTupleRef,
5860
) ->Self{
5961
let name =PyMutex::new(code.obj_name.to_owned());
6062
PyFunction{
@@ -63,7 +65,8 @@ impl PyFunction {
6365
closure,
6466
defaults_and_kwdefaults:PyMutex::new((defaults, kw_only_defaults)),
6567
name,
66-
qualname,
68+
qualname:PyMutex::new(qualname),
69+
type_params:PyMutex::new(type_params),
6770
#[cfg(feature ="jit")]
6871
jitted_code:OnceCell::new(),
6972
}
@@ -428,6 +431,30 @@ impl PyFunction {
428431
Ok(())
429432
}
430433

434+
#[pygetset(magic)]
435+
fntype_params(&self) ->PyTupleRef{
436+
self.type_params.lock().clone()
437+
}
438+
439+
#[pygetset(magic, setter)]
440+
fnset_type_params(
441+
&self,
442+
value:PySetterValue<PyTupleRef>,
443+
vm:&VirtualMachine,
444+
) ->PyResult<()>{
445+
match value{
446+
PySetterValue::Assign(value) =>{
447+
*self.type_params.lock() = value;
448+
}
449+
PySetterValue::Delete =>{
450+
returnErr(
451+
vm.new_type_error("__type_params__ must be set to a tuple object".to_string())
452+
);
453+
}
454+
}
455+
Ok(())
456+
}
457+
431458
#[cfg(feature ="jit")]
432459
#[pymethod(magic)]
433460
fnjit(zelf:PyRef<Self>,vm:&VirtualMachine) ->PyResult<()>{

‎vm/src/frame.rs‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1642,7 +1642,8 @@ impl ExecutingFrame<'_> {
16421642
closure,
16431643
defaults,
16441644
kw_only_defaults,
1645-
PyMutex::new(qualified_name.clone()),
1645+
qualified_name.clone(),
1646+
vm.ctx.empty_tuple.clone(),// FIXME: fake implementation
16461647
)
16471648
.into_pyobject(vm);
16481649

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp