pub struct ProgramAnnotations { /* private fields */ }
Expand description
Annotations of the program statements. See StatementAnnotations.
Implementations§
source§impl ProgramAnnotations
impl ProgramAnnotations
sourcepub fn create(
n_statements: usize,
backwards_jump_indices: UnorderedHashSet<StatementIdx>,
functions: &[Function],
metadata: &Metadata,
gas_usage_check: bool,
type_sizes: &TypeSizeMap,
) -> Result<Self, AnnotationError>
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.
sourcepub fn set_or_assert(
&mut self,
statement_idx: StatementIdx,
annotations: StatementAnnotations,
) -> Result<(), AnnotationError>
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.
sourcepub fn get_annotations_after_take_args<'a>(
&mut self,
statement_idx: StatementIdx,
ref_ids: impl Iterator<Item = &'a VarId>,
) -> Result<(StatementAnnotations, Vec<ReferenceValue>), AnnotationError>
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.
sourcepub 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>
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.
sourcepub fn validate_return_properties(
&self,
statement_idx: StatementIdx,
annotations: &StatementAnnotations,
functions: &[Function],
metadata: &Metadata,
return_refs: &[ReferenceValue],
) -> Result<(), AnnotationError>
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.
sourcepub fn validate_final_annotations(
&self,
statement_idx: StatementIdx,
annotations: &StatementAnnotations,
functions: &[Function],
metadata: &Metadata,
return_refs: &[ReferenceValue],
) -> Result<(), AnnotationError>
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§
impl Freeze for ProgramAnnotations
impl RefUnwindSafe for ProgramAnnotations
impl Send for ProgramAnnotations
impl Sync for ProgramAnnotations
impl Unpin for ProgramAnnotations
impl UnwindSafe for ProgramAnnotations
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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