mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-28 04:09:05 +00:00
feat: add initializer, destructor syntax
This commit is contained in:
parent
928afaabdd
commit
6b681c5fd1
8 changed files with 135 additions and 6 deletions
|
@ -3453,11 +3453,20 @@ impl PyCodeGenerator {
|
|||
self.emit_load_const(name);
|
||||
self.emit_store_instr(Identifier::public("__qualname__"), Name);
|
||||
let mut methods = ClassDef::take_all_methods(class.methods_list);
|
||||
let __init__ = methods.remove_def("__init__");
|
||||
let __init__ = methods
|
||||
.remove_def("__init__")
|
||||
.or_else(|| methods.remove_def("__init__!"));
|
||||
self.emit_init_method(&class.sig, __init__, class.__new__.clone());
|
||||
if class.need_to_gen_new {
|
||||
self.emit_new_func(&class.sig, class.__new__);
|
||||
}
|
||||
let __del__ = methods
|
||||
.remove_def("__del__")
|
||||
.or_else(|| methods.remove_def("__del__!"));
|
||||
if let Some(mut __del__) = __del__ {
|
||||
__del__.sig.ident_mut().vi.py_name = Some(Str::from("__del__"));
|
||||
self.emit_def(__del__);
|
||||
}
|
||||
if !methods.is_empty() {
|
||||
self.emit_simple_block(methods);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue