mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-27 19:59:07 +00:00
Update codegen.rs
This commit is contained in:
parent
eaded7ac5d
commit
73248f21df
1 changed files with 12 additions and 6 deletions
|
@ -2041,9 +2041,11 @@ impl PyCodeGenerator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn emit_with_instr_311(&mut self, args: Args) {
|
fn emit_with_instr_311(&mut self, mut args: Args) {
|
||||||
log!(info "entered {}", fn_name!());
|
log!(info "entered {}", fn_name!());
|
||||||
let mut args = args;
|
if !matches!(args.get(1).unwrap(), Expr::Lambda(_)) {
|
||||||
|
return self.deopt_instr(ControlKind::With, args);
|
||||||
|
}
|
||||||
let expr = args.remove(0);
|
let expr = args.remove(0);
|
||||||
let lambda = enum_unwrap!(args.remove(0), Expr::Lambda);
|
let lambda = enum_unwrap!(args.remove(0), Expr::Lambda);
|
||||||
let params = self.gen_param_names(&lambda.params);
|
let params = self.gen_param_names(&lambda.params);
|
||||||
|
@ -2087,9 +2089,11 @@ impl PyCodeGenerator {
|
||||||
self.emit_load_name_instr(stash);
|
self.emit_load_name_instr(stash);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn emit_with_instr_310(&mut self, args: Args) {
|
fn emit_with_instr_310(&mut self, mut args: Args) {
|
||||||
log!(info "entered {}", fn_name!());
|
log!(info "entered {}", fn_name!());
|
||||||
let mut args = args;
|
if !matches!(args.get(1).unwrap(), Expr::Lambda(_)) {
|
||||||
|
return self.deopt_instr(ControlKind::With, args);
|
||||||
|
}
|
||||||
let expr = args.remove(0);
|
let expr = args.remove(0);
|
||||||
let lambda = enum_unwrap!(args.remove(0), Expr::Lambda);
|
let lambda = enum_unwrap!(args.remove(0), Expr::Lambda);
|
||||||
let params = self.gen_param_names(&lambda.params);
|
let params = self.gen_param_names(&lambda.params);
|
||||||
|
@ -2138,9 +2142,11 @@ impl PyCodeGenerator {
|
||||||
self.emit_load_name_instr(stash);
|
self.emit_load_name_instr(stash);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn emit_with_instr_308(&mut self, args: Args) {
|
fn emit_with_instr_308(&mut self, mut args: Args) {
|
||||||
log!(info "entered {}", fn_name!());
|
log!(info "entered {}", fn_name!());
|
||||||
let mut args = args;
|
if !matches!(args.get(1).unwrap(), Expr::Lambda(_)) {
|
||||||
|
return self.deopt_instr(ControlKind::With, args);
|
||||||
|
}
|
||||||
let expr = args.remove(0);
|
let expr = args.remove(0);
|
||||||
let lambda = enum_unwrap!(args.remove(0), Expr::Lambda);
|
let lambda = enum_unwrap!(args.remove(0), Expr::Lambda);
|
||||||
let params = self.gen_param_names(&lambda.params);
|
let params = self.gen_param_names(&lambda.params);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue