pub trait Visitor {
Show 102 methods
// Provided methods
fn visit_source_unit(
&mut self,
_source_unit: &SourceUnit,
) -> Result<VisitorAction> { ... }
fn visit_import_directive(
&mut self,
_directive: &ImportDirective,
) -> Result<VisitorAction> { ... }
fn visit_pragma_directive(
&mut self,
_directive: &PragmaDirective,
) -> Result<VisitorAction> { ... }
fn visit_block(&mut self, _block: &Block) -> Result<VisitorAction> { ... }
fn visit_statement(
&mut self,
_statement: &Statement,
) -> Result<VisitorAction> { ... }
fn visit_expression(
&mut self,
_expression: &Expression,
) -> Result<VisitorAction> { ... }
fn visit_function_call(
&mut self,
_function_call: &FunctionCall,
) -> Result<VisitorAction> { ... }
fn visit_user_defined_type_name(
&mut self,
_type_name: &UserDefinedTypeName,
) -> Result<VisitorAction> { ... }
fn visit_identifier_path(
&mut self,
_identifier_path: &IdentifierPath,
) -> Result<VisitorAction> { ... }
fn visit_type_name(
&mut self,
_type_name: &TypeName,
) -> Result<VisitorAction> { ... }
fn visit_parameter_list(
&mut self,
_parameter_list: &ParameterList,
) -> Result<VisitorAction> { ... }
fn visit_function_definition(
&mut self,
_definition: &FunctionDefinition,
) -> Result<VisitorAction> { ... }
fn visit_enum_definition(
&mut self,
_definition: &EnumDefinition,
) -> Result<VisitorAction> { ... }
fn visit_error_definition(
&mut self,
_definition: &ErrorDefinition,
) -> Result<VisitorAction> { ... }
fn visit_event_definition(
&mut self,
_definition: &EventDefinition,
) -> Result<VisitorAction> { ... }
fn visit_struct_definition(
&mut self,
_definition: &StructDefinition,
) -> Result<VisitorAction> { ... }
fn visit_modifier_definition(
&mut self,
_definition: &ModifierDefinition,
) -> Result<VisitorAction> { ... }
fn visit_variable_declaration(
&mut self,
_declaration: &VariableDeclaration,
) -> Result<VisitorAction> { ... }
fn visit_overrides(
&mut self,
_specifier: &OverrideSpecifier,
) -> Result<VisitorAction> { ... }
fn visit_user_defined_value_type(
&mut self,
_value_type: &UserDefinedValueTypeDefinition,
) -> Result<VisitorAction> { ... }
fn visit_contract_definition(
&mut self,
_definition: &ContractDefinition,
) -> Result<VisitorAction> { ... }
fn visit_using_for(
&mut self,
_directive: &UsingForDirective,
) -> Result<VisitorAction> { ... }
fn visit_unary_operation(
&mut self,
_unary_op: &UnaryOperation,
) -> Result<VisitorAction> { ... }
fn visit_binary_operation(
&mut self,
_binary_op: &BinaryOperation,
) -> Result<VisitorAction> { ... }
fn visit_conditional(
&mut self,
_conditional: &Conditional,
) -> Result<VisitorAction> { ... }
fn visit_tuple_expression(
&mut self,
_tuple_expression: &TupleExpression,
) -> Result<VisitorAction> { ... }
fn visit_new_expression(
&mut self,
_new_expression: &NewExpression,
) -> Result<VisitorAction> { ... }
fn visit_assignment(
&mut self,
_assignment: &Assignment,
) -> Result<VisitorAction> { ... }
fn visit_identifier(
&mut self,
_identifier: &Identifier,
) -> Result<VisitorAction> { ... }
fn visit_index_access(
&mut self,
_index_access: &IndexAccess,
) -> Result<VisitorAction> { ... }
fn visit_index_range_access(
&mut self,
_index_range_access: &IndexRangeAccess,
) -> Result<VisitorAction> { ... }
fn visit_while_statement(
&mut self,
_while_statement: &WhileStatement,
) -> Result<VisitorAction> { ... }
fn visit_for_statement(
&mut self,
_for_statement: &ForStatement,
) -> Result<VisitorAction> { ... }
fn visit_if_statement(
&mut self,
_if_statement: &IfStatement,
) -> Result<VisitorAction> { ... }
fn visit_do_while_statement(
&mut self,
_do_while_statement: &DoWhileStatement,
) -> Result<VisitorAction> { ... }
fn visit_emit_statement(
&mut self,
_emit_statement: &EmitStatement,
) -> Result<VisitorAction> { ... }
fn visit_unchecked_block(
&mut self,
_unchecked_block: &UncheckedBlock,
) -> Result<VisitorAction> { ... }
fn visit_try_statement(
&mut self,
_try_statement: &TryStatement,
) -> Result<VisitorAction> { ... }
fn visit_revert_statement(
&mut self,
_revert_statement: &RevertStatement,
) -> Result<VisitorAction> { ... }
fn visit_member_access(
&mut self,
_member_access: &MemberAccess,
) -> Result<VisitorAction> { ... }
fn visit_mapping(&mut self, _mapping: &Mapping) -> Result<VisitorAction> { ... }
fn visit_elementary_type_name(
&mut self,
_elementary_type_name: &ElementaryTypeName,
) -> Result<VisitorAction> { ... }
fn visit_literal(&mut self, _literal: &Literal) -> Result<VisitorAction> { ... }
fn visit_function_type_name(
&mut self,
_function_type_name: &FunctionTypeName,
) -> Result<VisitorAction> { ... }
fn visit_array_type_name(
&mut self,
_array_type_name: &ArrayTypeName,
) -> Result<VisitorAction> { ... }
fn visit_function_call_options(
&mut self,
_function_call: &FunctionCallOptions,
) -> Result<VisitorAction> { ... }
fn visit_return(&mut self, _return: &Return) -> Result<VisitorAction> { ... }
fn visit_inheritance_specifier(
&mut self,
_specifier: &InheritanceSpecifier,
) -> Result<VisitorAction> { ... }
fn visit_modifier_invocation(
&mut self,
_invocation: &ModifierInvocation,
) -> Result<VisitorAction> { ... }
fn visit_inline_assembly(
&mut self,
_assembly: &InlineAssembly,
) -> Result<VisitorAction> { ... }
fn visit_external_assembly_reference(
&mut self,
_ref: &ExternalInlineAssemblyReference,
) -> Result<VisitorAction> { ... }
fn post_visit_source_unit(
&mut self,
_source_unit: &SourceUnit,
) -> Result<()> { ... }
fn post_visit_import_directive(
&mut self,
_directive: &ImportDirective,
) -> Result<()> { ... }
fn post_visit_pragma_directive(
&mut self,
_directive: &PragmaDirective,
) -> Result<()> { ... }
fn post_visit_block(&mut self, _block: &Block) -> Result<()> { ... }
fn post_visit_statement(&mut self, _statement: &Statement) -> Result<()> { ... }
fn post_visit_expression(&mut self, _expression: &Expression) -> Result<()> { ... }
fn post_visit_function_call(
&mut self,
_function_call: &FunctionCall,
) -> Result<()> { ... }
fn post_visit_user_defined_type_name(
&mut self,
_type_name: &UserDefinedTypeName,
) -> Result<()> { ... }
fn post_visit_identifier_path(
&mut self,
_identifier_path: &IdentifierPath,
) -> Result<()> { ... }
fn post_visit_type_name(&mut self, _type_name: &TypeName) -> Result<()> { ... }
fn post_visit_parameter_list(
&mut self,
_parameter_list: &ParameterList,
) -> Result<()> { ... }
fn post_visit_function_definition(
&mut self,
_definition: &FunctionDefinition,
) -> Result<()> { ... }
fn post_visit_enum_definition(
&mut self,
_definition: &EnumDefinition,
) -> Result<()> { ... }
fn post_visit_error_definition(
&mut self,
_definition: &ErrorDefinition,
) -> Result<()> { ... }
fn post_visit_event_definition(
&mut self,
_definition: &EventDefinition,
) -> Result<()> { ... }
fn post_visit_struct_definition(
&mut self,
_definition: &StructDefinition,
) -> Result<()> { ... }
fn post_visit_modifier_definition(
&mut self,
_definition: &ModifierDefinition,
) -> Result<()> { ... }
fn post_visit_variable_declaration(
&mut self,
_declaration: &VariableDeclaration,
) -> Result<()> { ... }
fn post_visit_overrides(
&mut self,
_specifier: &OverrideSpecifier,
) -> Result<()> { ... }
fn post_visit_user_defined_value_type(
&mut self,
_value_type: &UserDefinedValueTypeDefinition,
) -> Result<()> { ... }
fn post_visit_contract_definition(
&mut self,
_definition: &ContractDefinition,
) -> Result<()> { ... }
fn post_visit_using_for(
&mut self,
_directive: &UsingForDirective,
) -> Result<()> { ... }
fn post_visit_unary_operation(
&mut self,
_unary_op: &UnaryOperation,
) -> Result<()> { ... }
fn post_visit_binary_operation(
&mut self,
_binary_op: &BinaryOperation,
) -> Result<()> { ... }
fn post_visit_conditional(
&mut self,
_conditional: &Conditional,
) -> Result<()> { ... }
fn post_visit_tuple_expression(
&mut self,
_tuple_expression: &TupleExpression,
) -> Result<()> { ... }
fn post_visit_new_expression(
&mut self,
_new_expression: &NewExpression,
) -> Result<()> { ... }
fn post_visit_assignment(&mut self, _assignment: &Assignment) -> Result<()> { ... }
fn post_visit_identifier(&mut self, _identifier: &Identifier) -> Result<()> { ... }
fn post_visit_index_access(
&mut self,
_index_access: &IndexAccess,
) -> Result<()> { ... }
fn post_visit_index_range_access(
&mut self,
_index_range_access: &IndexRangeAccess,
) -> Result<()> { ... }
fn post_visit_while_statement(
&mut self,
_while_statement: &WhileStatement,
) -> Result<()> { ... }
fn post_visit_for_statement(
&mut self,
_for_statement: &ForStatement,
) -> Result<()> { ... }
fn post_visit_if_statement(
&mut self,
_if_statement: &IfStatement,
) -> Result<()> { ... }
fn post_visit_do_while_statement(
&mut self,
_do_while_statement: &DoWhileStatement,
) -> Result<()> { ... }
fn post_visit_emit_statement(
&mut self,
_emit_statement: &EmitStatement,
) -> Result<()> { ... }
fn post_visit_unchecked_block(
&mut self,
_unchecked_block: &UncheckedBlock,
) -> Result<()> { ... }
fn post_visit_try_statement(
&mut self,
_try_statement: &TryStatement,
) -> Result<()> { ... }
fn post_visit_revert_statement(
&mut self,
_revert_statement: &RevertStatement,
) -> Result<()> { ... }
fn post_visit_member_access(
&mut self,
_member_access: &MemberAccess,
) -> Result<()> { ... }
fn post_visit_mapping(&mut self, _mapping: &Mapping) -> Result<()> { ... }
fn post_visit_elementary_type_name(
&mut self,
_elementary_type_name: &ElementaryTypeName,
) -> Result<()> { ... }
fn post_visit_literal(&mut self, _literal: &Literal) -> Result<()> { ... }
fn post_visit_function_type_name(
&mut self,
_function_type_name: &FunctionTypeName,
) -> Result<()> { ... }
fn post_visit_array_type_name(
&mut self,
_array_type_name: &ArrayTypeName,
) -> Result<()> { ... }
fn post_visit_function_call_options(
&mut self,
_function_call: &FunctionCallOptions,
) -> Result<()> { ... }
fn post_visit_return(&mut self, _return: &Return) -> Result<()> { ... }
fn post_visit_inheritance_specifier(
&mut self,
_specifier: &InheritanceSpecifier,
) -> Result<()> { ... }
fn post_visit_modifier_invocation(
&mut self,
_invocation: &ModifierInvocation,
) -> Result<()> { ... }
fn post_visit_inline_assembly(
&mut self,
_assembly: &InlineAssembly,
) -> Result<()> { ... }
fn post_visit_external_assembly_reference(
&mut self,
_ref: &ExternalInlineAssemblyReference,
) -> Result<()> { ... }
}Expand description
Trait for implementing AST visitors that can traverse Solidity source code.
This trait provides methods for visiting each type of AST node in a Solidity source unit. Implementors can override specific methods to perform custom analysis or transformations on the AST.
All methods have default implementations that do nothing, allowing implementors to only override the methods they need.
Provided Methods§
Sourcefn visit_source_unit(
&mut self,
_source_unit: &SourceUnit,
) -> Result<VisitorAction>
fn visit_source_unit( &mut self, _source_unit: &SourceUnit, ) -> Result<VisitorAction>
fn visit_import_directive( &mut self, _directive: &ImportDirective, ) -> Result<VisitorAction>
fn visit_pragma_directive( &mut self, _directive: &PragmaDirective, ) -> Result<VisitorAction>
fn visit_block(&mut self, _block: &Block) -> Result<VisitorAction>
fn visit_statement(&mut self, _statement: &Statement) -> Result<VisitorAction>
fn visit_expression( &mut self, _expression: &Expression, ) -> Result<VisitorAction>
fn visit_function_call( &mut self, _function_call: &FunctionCall, ) -> Result<VisitorAction>
fn visit_user_defined_type_name( &mut self, _type_name: &UserDefinedTypeName, ) -> Result<VisitorAction>
fn visit_identifier_path( &mut self, _identifier_path: &IdentifierPath, ) -> Result<VisitorAction>
fn visit_type_name(&mut self, _type_name: &TypeName) -> Result<VisitorAction>
fn visit_parameter_list( &mut self, _parameter_list: &ParameterList, ) -> Result<VisitorAction>
fn visit_function_definition( &mut self, _definition: &FunctionDefinition, ) -> Result<VisitorAction>
fn visit_enum_definition( &mut self, _definition: &EnumDefinition, ) -> Result<VisitorAction>
fn visit_error_definition( &mut self, _definition: &ErrorDefinition, ) -> Result<VisitorAction>
fn visit_event_definition( &mut self, _definition: &EventDefinition, ) -> Result<VisitorAction>
fn visit_struct_definition( &mut self, _definition: &StructDefinition, ) -> Result<VisitorAction>
fn visit_modifier_definition( &mut self, _definition: &ModifierDefinition, ) -> Result<VisitorAction>
fn visit_variable_declaration( &mut self, _declaration: &VariableDeclaration, ) -> Result<VisitorAction>
fn visit_overrides( &mut self, _specifier: &OverrideSpecifier, ) -> Result<VisitorAction>
fn visit_user_defined_value_type( &mut self, _value_type: &UserDefinedValueTypeDefinition, ) -> Result<VisitorAction>
fn visit_contract_definition( &mut self, _definition: &ContractDefinition, ) -> Result<VisitorAction>
fn visit_using_for( &mut self, _directive: &UsingForDirective, ) -> Result<VisitorAction>
fn visit_unary_operation( &mut self, _unary_op: &UnaryOperation, ) -> Result<VisitorAction>
fn visit_binary_operation( &mut self, _binary_op: &BinaryOperation, ) -> Result<VisitorAction>
fn visit_conditional( &mut self, _conditional: &Conditional, ) -> Result<VisitorAction>
fn visit_tuple_expression( &mut self, _tuple_expression: &TupleExpression, ) -> Result<VisitorAction>
fn visit_new_expression( &mut self, _new_expression: &NewExpression, ) -> Result<VisitorAction>
fn visit_assignment( &mut self, _assignment: &Assignment, ) -> Result<VisitorAction>
fn visit_identifier( &mut self, _identifier: &Identifier, ) -> Result<VisitorAction>
fn visit_index_access( &mut self, _index_access: &IndexAccess, ) -> Result<VisitorAction>
fn visit_index_range_access( &mut self, _index_range_access: &IndexRangeAccess, ) -> Result<VisitorAction>
fn visit_while_statement( &mut self, _while_statement: &WhileStatement, ) -> Result<VisitorAction>
fn visit_for_statement( &mut self, _for_statement: &ForStatement, ) -> Result<VisitorAction>
fn visit_if_statement( &mut self, _if_statement: &IfStatement, ) -> Result<VisitorAction>
fn visit_do_while_statement( &mut self, _do_while_statement: &DoWhileStatement, ) -> Result<VisitorAction>
fn visit_emit_statement( &mut self, _emit_statement: &EmitStatement, ) -> Result<VisitorAction>
fn visit_unchecked_block( &mut self, _unchecked_block: &UncheckedBlock, ) -> Result<VisitorAction>
fn visit_try_statement( &mut self, _try_statement: &TryStatement, ) -> Result<VisitorAction>
fn visit_revert_statement( &mut self, _revert_statement: &RevertStatement, ) -> Result<VisitorAction>
fn visit_member_access( &mut self, _member_access: &MemberAccess, ) -> Result<VisitorAction>
fn visit_mapping(&mut self, _mapping: &Mapping) -> Result<VisitorAction>
fn visit_elementary_type_name( &mut self, _elementary_type_name: &ElementaryTypeName, ) -> Result<VisitorAction>
fn visit_literal(&mut self, _literal: &Literal) -> Result<VisitorAction>
fn visit_function_type_name( &mut self, _function_type_name: &FunctionTypeName, ) -> Result<VisitorAction>
fn visit_array_type_name( &mut self, _array_type_name: &ArrayTypeName, ) -> Result<VisitorAction>
fn visit_function_call_options( &mut self, _function_call: &FunctionCallOptions, ) -> Result<VisitorAction>
fn visit_return(&mut self, _return: &Return) -> Result<VisitorAction>
fn visit_inheritance_specifier( &mut self, _specifier: &InheritanceSpecifier, ) -> Result<VisitorAction>
fn visit_modifier_invocation( &mut self, _invocation: &ModifierInvocation, ) -> Result<VisitorAction>
fn visit_inline_assembly( &mut self, _assembly: &InlineAssembly, ) -> Result<VisitorAction>
fn visit_external_assembly_reference( &mut self, _ref: &ExternalInlineAssemblyReference, ) -> Result<VisitorAction>
fn post_visit_source_unit(&mut self, _source_unit: &SourceUnit) -> Result<()>
fn post_visit_import_directive( &mut self, _directive: &ImportDirective, ) -> Result<()>
fn post_visit_pragma_directive( &mut self, _directive: &PragmaDirective, ) -> Result<()>
fn post_visit_block(&mut self, _block: &Block) -> Result<()>
fn post_visit_statement(&mut self, _statement: &Statement) -> Result<()>
fn post_visit_expression(&mut self, _expression: &Expression) -> Result<()>
fn post_visit_function_call( &mut self, _function_call: &FunctionCall, ) -> Result<()>
fn post_visit_user_defined_type_name( &mut self, _type_name: &UserDefinedTypeName, ) -> Result<()>
fn post_visit_identifier_path( &mut self, _identifier_path: &IdentifierPath, ) -> Result<()>
fn post_visit_type_name(&mut self, _type_name: &TypeName) -> Result<()>
fn post_visit_parameter_list( &mut self, _parameter_list: &ParameterList, ) -> Result<()>
fn post_visit_function_definition( &mut self, _definition: &FunctionDefinition, ) -> Result<()>
fn post_visit_enum_definition( &mut self, _definition: &EnumDefinition, ) -> Result<()>
fn post_visit_error_definition( &mut self, _definition: &ErrorDefinition, ) -> Result<()>
fn post_visit_event_definition( &mut self, _definition: &EventDefinition, ) -> Result<()>
fn post_visit_struct_definition( &mut self, _definition: &StructDefinition, ) -> Result<()>
fn post_visit_modifier_definition( &mut self, _definition: &ModifierDefinition, ) -> Result<()>
fn post_visit_variable_declaration( &mut self, _declaration: &VariableDeclaration, ) -> Result<()>
fn post_visit_overrides(&mut self, _specifier: &OverrideSpecifier) -> Result<()>
fn post_visit_user_defined_value_type( &mut self, _value_type: &UserDefinedValueTypeDefinition, ) -> Result<()>
fn post_visit_contract_definition( &mut self, _definition: &ContractDefinition, ) -> Result<()>
fn post_visit_using_for(&mut self, _directive: &UsingForDirective) -> Result<()>
fn post_visit_unary_operation( &mut self, _unary_op: &UnaryOperation, ) -> Result<()>
fn post_visit_binary_operation( &mut self, _binary_op: &BinaryOperation, ) -> Result<()>
fn post_visit_conditional(&mut self, _conditional: &Conditional) -> Result<()>
fn post_visit_tuple_expression( &mut self, _tuple_expression: &TupleExpression, ) -> Result<()>
fn post_visit_new_expression( &mut self, _new_expression: &NewExpression, ) -> Result<()>
fn post_visit_assignment(&mut self, _assignment: &Assignment) -> Result<()>
fn post_visit_identifier(&mut self, _identifier: &Identifier) -> Result<()>
fn post_visit_index_access(&mut self, _index_access: &IndexAccess) -> Result<()>
fn post_visit_index_range_access( &mut self, _index_range_access: &IndexRangeAccess, ) -> Result<()>
fn post_visit_while_statement( &mut self, _while_statement: &WhileStatement, ) -> Result<()>
fn post_visit_for_statement( &mut self, _for_statement: &ForStatement, ) -> Result<()>
fn post_visit_if_statement(&mut self, _if_statement: &IfStatement) -> Result<()>
fn post_visit_do_while_statement( &mut self, _do_while_statement: &DoWhileStatement, ) -> Result<()>
fn post_visit_emit_statement( &mut self, _emit_statement: &EmitStatement, ) -> Result<()>
fn post_visit_unchecked_block( &mut self, _unchecked_block: &UncheckedBlock, ) -> Result<()>
fn post_visit_try_statement( &mut self, _try_statement: &TryStatement, ) -> Result<()>
fn post_visit_revert_statement( &mut self, _revert_statement: &RevertStatement, ) -> Result<()>
fn post_visit_member_access( &mut self, _member_access: &MemberAccess, ) -> Result<()>
fn post_visit_mapping(&mut self, _mapping: &Mapping) -> Result<()>
fn post_visit_elementary_type_name( &mut self, _elementary_type_name: &ElementaryTypeName, ) -> Result<()>
fn post_visit_literal(&mut self, _literal: &Literal) -> Result<()>
fn post_visit_function_type_name( &mut self, _function_type_name: &FunctionTypeName, ) -> Result<()>
fn post_visit_array_type_name( &mut self, _array_type_name: &ArrayTypeName, ) -> Result<()>
fn post_visit_function_call_options( &mut self, _function_call: &FunctionCallOptions, ) -> Result<()>
fn post_visit_return(&mut self, _return: &Return) -> Result<()>
fn post_visit_inheritance_specifier( &mut self, _specifier: &InheritanceSpecifier, ) -> Result<()>
fn post_visit_modifier_invocation( &mut self, _invocation: &ModifierInvocation, ) -> Result<()>
fn post_visit_inline_assembly( &mut self, _assembly: &InlineAssembly, ) -> Result<()>
fn post_visit_external_assembly_reference( &mut self, _ref: &ExternalInlineAssemblyReference, ) -> Result<()>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".