use core::hint::unreachable_unchecked;
use crate::{
ecmascript::{
Agent, Environment, PrivateEnvironment, builtins::ECMAScriptFunction,
syntax_directed_operations::function_definitions::instantiate_ordinary_function_object,
},
engine::NoGcScope,
};
use oxc_ast::ast;
pub(crate) fn instantiate_function_object<'a>(
agent: &mut Agent,
function: &ast::Function<'_>,
env: Environment<'a>,
private_env: Option<PrivateEnvironment<'a>>,
gc: NoGcScope<'a, '_>,
) -> ECMAScriptFunction<'a> {
if !function.r#async && !function.generator {
instantiate_ordinary_function_object(agent, function, env, private_env, gc)
} else
if !function.r#async && function.generator {
instantiate_ordinary_function_object(agent, function, env, private_env, gc)
} else
if function.r#async && function.generator {
instantiate_ordinary_function_object(agent, function, env, private_env, gc)
} else
if function.r#async && !function.generator {
instantiate_ordinary_function_object(agent, function, env, private_env, gc)
} else {
unsafe { unreachable_unchecked() };
}
}