1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
use super::{Context, Executable}; use crate::{syntax::ast::node::New, BoaProfiler, Result, Value}; impl Executable for New { fn run(&self, interpreter: &mut Context) -> Result<Value> { let _timer = BoaProfiler::global().start_event("New", "exec"); let func_object = self.expr().run(interpreter)?; let mut v_args = Vec::with_capacity(self.args().len()); for arg in self.args() { v_args.push(arg.run(interpreter)?); } match func_object { Value::Object(ref object) => object.construct(&v_args, interpreter), _ => Ok(Value::undefined()), } } }