Skip to content

Commit

Permalink
FrozenStarlarkCallable
Browse files Browse the repository at this point in the history
Summary:
Marker type for easier to read code.

Used later in D53969058.

Reviewed By: JakobDegen

Differential Revision: D53969059

fbshipit-source-id: a2dd98629702bc4f5f649407bf72f29c177a5a1e
  • Loading branch information
stepancheg authored and facebook-github-bot committed Feb 21, 2024
1 parent 737c6f7 commit 7ec5643
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
33 changes: 33 additions & 0 deletions starlark/src/values/typing/callable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ use crate::values::layout::heap::repr::AValueRepr;
use crate::values::type_repr::StarlarkTypeRepr;
use crate::values::AllocFrozenValue;
use crate::values::AllocValue;
use crate::values::Freeze;
use crate::values::Freezer;
use crate::values::FrozenHeap;
use crate::values::FrozenValue;
use crate::values::Heap;
Expand Down Expand Up @@ -92,6 +94,37 @@ impl<'v> AllocValue<'v> for StarlarkCallable<'v> {
}
}

/// Marker for a callable value.
#[derive(Debug, Copy, Clone, Dupe, Trace, Allocative)]
pub struct FrozenStarlarkCallable(pub FrozenValue);

impl StarlarkTypeRepr for FrozenStarlarkCallable {
fn starlark_type_repr() -> Ty {
StarlarkCallable::starlark_type_repr()
}
}

impl AllocFrozenValue for FrozenStarlarkCallable {
fn alloc_frozen_value(self, _heap: &FrozenHeap) -> FrozenValue {
self.0
}
}

impl<'v> Freeze for StarlarkCallable<'v> {
type Frozen = FrozenStarlarkCallable;
fn freeze(self, freezer: &Freezer) -> anyhow::Result<Self::Frozen> {
Ok(FrozenStarlarkCallable(self.0.freeze(freezer)?))
}
}

impl FrozenStarlarkCallable {
/// Convert to `Value`-version.
#[inline]
pub fn to_callable<'v>(self) -> StarlarkCallable<'v> {
StarlarkCallable(self.0.to_value())
}
}

#[cfg(test)]
mod tests {
use crate::assert;
Expand Down
1 change: 1 addition & 0 deletions starlark/src/values/typing/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ pub(crate) mod ty;
pub(crate) mod type_compiled;

pub use crate::values::types::type_instance_id::TypeInstanceId;
pub use crate::values::typing::callable::FrozenStarlarkCallable;
pub use crate::values::typing::callable::StarlarkCallable;
pub use crate::values::typing::iter::StarlarkIter;
pub use crate::values::typing::never::StarlarkNever;
Expand Down

0 comments on commit 7ec5643

Please sign in to comment.