use allocative::Allocative;
use starlark_derive::NoSerialize;
use starlark_derive::ProvidesStaticType;
use starlark_derive::StarlarkPagable;
use starlark_derive::starlark_value;
use crate as starlark;
use crate::static_starlark_value;
use crate::values::AllocFrozenValue;
use crate::values::FrozenHeap;
use crate::values::FrozenValue;
use crate::values::StarlarkValue;
#[derive(
Allocative,
NoSerialize,
Debug,
derive_more::Display,
ProvidesStaticType,
StarlarkPagable
)]
#[display("Ellipsis")]
pub(crate) struct Ellipsis;
static_starlark_value!(pub(crate) VALUE_ELLIPSIS: Ellipsis = Ellipsis);
#[starlark_value(type = "ellipsis", skip_pagable)]
impl<'v> StarlarkValue<'v> for Ellipsis {}
impl Ellipsis {
pub(crate) fn new_value() -> FrozenValue {
VALUE_ELLIPSIS.to_frozen_value()
}
}
impl AllocFrozenValue for Ellipsis {
fn alloc_frozen_value(self, _heap: &FrozenHeap) -> FrozenValue {
Ellipsis::new_value()
}
}
#[cfg(test)]
mod tests {
use crate::assert;
#[test]
fn test_ellipsis() {
assert::pass("...");
}
}