MCPcopy Index your code
hub / github.com/aiscriptdev/aiscript / generate_call

Method generate_call

aiscript-vm/src/compiler/codegen.rs:1208–1242  ·  view source on GitHub ↗
(
        &mut self,
        callee: Box<Expr<'gc>>,
        is_constructor: bool,
        arguments: Vec<Expr<'gc>>,
        keyword_args: HashMap<String, Expr<'gc>>,
        error_handler: Option<Er

Source from the content-addressed store, hash-verified

1206 }
1207
1208 fn generate_call(
1209 &mut self,
1210 callee: Box<Expr<'gc>>,
1211 is_constructor: bool,
1212 arguments: Vec<Expr<'gc>>,
1213 keyword_args: HashMap<String, Expr<'gc>>,
1214 error_handler: Option<ErrorHandler<'gc>>,
1215 ) -> Result<(), VmError> {
1216 let arg_count = arguments.len() as u8;
1217 let kw_count = keyword_args.len() as u8;
1218 self.generate_expr(callee)?;
1219 for arg in arguments {
1220 self.generate_expr(arg)?;
1221 }
1222 self.generate_keyword_args(keyword_args)?;
1223
1224 if is_constructor {
1225 self.emit(OpCode::Constructor {
1226 positional_count: arg_count,
1227 keyword_count: kw_count,
1228 validate: error_handler.is_some(),
1229 });
1230 } else {
1231 // Emit call instruction - result will be on stack
1232 self.emit(OpCode::Call {
1233 positional_count: arg_count,
1234 keyword_count: kw_count,
1235 });
1236 }
1237
1238 if let Some(handler) = error_handler {
1239 self.generate_error_handler(handler)?;
1240 }
1241 Ok(())
1242 }
1243
1244 fn generate_invoke(
1245 &mut self,

Callers 1

generate_exprMethod · 0.80

Calls 5

lenMethod · 0.80
generate_exprMethod · 0.80
generate_keyword_argsMethod · 0.80
emitMethod · 0.80

Tested by

no test coverage detected