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,
functions: &[Function],
metadata: &Metadata,
gas_usage_check: bool,
type_sizes: &TypeSizeMap
) -> Result<Self, AnnotationError>
pub fn create( n_statements: usize, 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>(
&self,
statement_idx: StatementIdx,
ref_ids: impl Iterator<Item = &'a VarId>
) -> Result<(StatementAnnotations, Vec<ReferenceValue>), AnnotationError>
pub fn get_annotations_after_take_args<'a>( &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.
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.