cairo_lang_sierra_to_casm::annotations

Struct ProgramAnnotations

source
pub struct ProgramAnnotations { /* private fields */ }
Expand description

Annotations of the program statements. See StatementAnnotations.

Implementations§

source§

impl ProgramAnnotations

source

pub fn create( n_statements: usize, backwards_jump_indices: UnorderedHashSet<StatementIdx>, functions: &[Function], metadata: &Metadata, gas_usage_check: bool, type_sizes: &TypeSizeMap, ) -> Result<Self, AnnotationError>

Creates a ProgramAnnotations object based on ‘n_statements’, a given functions list and metadata for the program.

source

pub fn set_or_assert( &mut self, statement_idx: StatementIdx, annotations: StatementAnnotations, ) -> Result<(), AnnotationError>

Sets the annotations at ‘statement_idx’ to ‘annotations’ If the annotations for this statement were set previously asserts that the previous assignment is consistent with the new assignment and verifies that convergence_allowed is true.

source

pub fn get_annotations_after_take_args<'a>( &mut self, statement_idx: StatementIdx, ref_ids: impl Iterator<Item = &'a VarId>, ) -> Result<(StatementAnnotations, Vec<ReferenceValue>), AnnotationError>

Returns the result of applying take_args to the StatementAnnotations at statement_idx. Can be called only once per item, the item is removed from the annotations, and can no longer be used for merges.

source

pub fn propagate_annotations( &mut self, source_statement_idx: StatementIdx, destination_statement_idx: StatementIdx, annotations: StatementAnnotations, branch_info: &BranchInfo, branch_changes: BranchChanges, must_set: bool, ) -> Result<(), AnnotationError>

Propagates the annotations from statement_idx to ‘destination_statement_idx’.

annotations is the result of calling get_annotations_after_take_args at source_statement_idx and branch_changes are the reference changes at each branch. if must_set is true, asserts that destination_statement_idx wasn’t annotated before.

source

pub fn validate_return_properties( &self, statement_idx: StatementIdx, annotations: &StatementAnnotations, functions: &[Function], metadata: &Metadata, return_refs: &[ReferenceValue], ) -> Result<(), AnnotationError>

Validates the ap change and return types in a return statement.

source

pub fn validate_final_annotations( &self, statement_idx: StatementIdx, annotations: &StatementAnnotations, functions: &[Function], metadata: &Metadata, return_refs: &[ReferenceValue], ) -> Result<(), AnnotationError>

Validates the final annotation in a return statement.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T
where T: ?Sized,

source§

fn upcast(&self) -> &T

source§

impl<T> UpcastMut<T> for T
where T: ?Sized,

source§

fn upcast_mut(&mut self) -> &mut T

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more