ranty 1.0.0

The Ranty procedural templating language
Documentation
use super::*;

pub fn proto(vm: &mut VM, map: RantyMapHandle) -> RantyStdResult {
    vm.cur_frame_mut().write(
        map.borrow()
            .proto()
            .map_or(RantyValue::Nothing, RantyValue::Map),
    );
    Ok(())
}

pub fn set_proto(
    vm: &mut VM,
    (map, proto): (RantyMapHandle, Option<RantyMapHandle>),
) -> RantyStdResult {
    if let Some(proto) = proto.as_ref() {
        if map.would_create_proto_cycle(proto) {
            runtime_error!(
                RuntimeErrorType::ArgumentError,
                "set-proto: prototype assignment would create a cycle"
            );
        }
    }

    map.borrow_mut().set_proto(proto);
    Ok(())
}