This commit is contained in:
Shunsuke Shibayama 2022-10-03 21:44:59 +09:00
parent 64be2da03b
commit 2f33c9b15d
9 changed files with 110 additions and 31 deletions

View file

@ -1203,6 +1203,17 @@ impl CodeGenerator {
}
}
fn emit_del_instr(&mut self, mut args: Args) {
let ident = enum_unwrap!(args.remove_left_or_key("obj").unwrap(), Expr::Accessor:(Accessor::Ident:(_)));
log!(info "entered {} ({ident})", fn_name!());
let escaped = escape_name(ident);
let name = self
.local_search(&escaped, Name)
.unwrap_or_else(|| self.register_name(escaped));
self.write_instr(DELETE_NAME);
self.write_arg(name.idx as u8);
}
fn emit_discard_instr(&mut self, mut args: Args) {
log!(info "entered {}", fn_name!());
while let Some(arg) = args.try_remove(0) {
@ -1446,6 +1457,7 @@ impl CodeGenerator {
log!(info "entered {}", fn_name!());
match &local.inspect()[..] {
"assert" => self.emit_assert_instr(args),
"Del" => self.emit_del_instr(args),
"discard" => self.emit_discard_instr(args),
"for" | "for!" => self.emit_for_instr(args),
"if" | "if!" => self.emit_if_instr(args),