pub trait Visitor {
Show 120 methods
// Provided methods
fn visit_ast(&mut self, ast: &Ast)
where Self: Sized { ... }
fn visit_anonymous_call(&mut self, _node: &FunctionArgs) { ... }
fn visit_anonymous_call_end(&mut self, _node: &FunctionArgs) { ... }
fn visit_assignment(&mut self, _node: &Assignment) { ... }
fn visit_assignment_end(&mut self, _node: &Assignment) { ... }
fn visit_block(&mut self, _node: &Block) { ... }
fn visit_block_end(&mut self, _node: &Block) { ... }
fn visit_call(&mut self, _node: &Call) { ... }
fn visit_call_end(&mut self, _node: &Call) { ... }
fn visit_contained_span(&mut self, _node: &ContainedSpan) { ... }
fn visit_contained_span_end(&mut self, _node: &ContainedSpan) { ... }
fn visit_do(&mut self, _node: &Do) { ... }
fn visit_do_end(&mut self, _node: &Do) { ... }
fn visit_else_if(&mut self, _node: &ElseIf) { ... }
fn visit_else_if_end(&mut self, _node: &ElseIf) { ... }
fn visit_eof(&mut self, _node: &TokenReference) { ... }
fn visit_eof_end(&mut self, _node: &TokenReference) { ... }
fn visit_expression(&mut self, _node: &Expression) { ... }
fn visit_expression_end(&mut self, _node: &Expression) { ... }
fn visit_field(&mut self, _node: &Field) { ... }
fn visit_field_end(&mut self, _node: &Field) { ... }
fn visit_function_args(&mut self, _node: &FunctionArgs) { ... }
fn visit_function_args_end(&mut self, _node: &FunctionArgs) { ... }
fn visit_function_body(&mut self, _node: &FunctionBody) { ... }
fn visit_function_body_end(&mut self, _node: &FunctionBody) { ... }
fn visit_function_call(&mut self, _node: &FunctionCall) { ... }
fn visit_function_call_end(&mut self, _node: &FunctionCall) { ... }
fn visit_function_declaration(&mut self, _node: &FunctionDeclaration) { ... }
fn visit_function_declaration_end(&mut self, _node: &FunctionDeclaration) { ... }
fn visit_function_name(&mut self, _node: &FunctionName) { ... }
fn visit_function_name_end(&mut self, _node: &FunctionName) { ... }
fn visit_generic_for(&mut self, _node: &GenericFor) { ... }
fn visit_generic_for_end(&mut self, _node: &GenericFor) { ... }
fn visit_if(&mut self, _node: &If) { ... }
fn visit_if_end(&mut self, _node: &If) { ... }
fn visit_index(&mut self, _node: &Index) { ... }
fn visit_index_end(&mut self, _node: &Index) { ... }
fn visit_local_assignment(&mut self, _node: &LocalAssignment) { ... }
fn visit_local_assignment_end(&mut self, _node: &LocalAssignment) { ... }
fn visit_local_function(&mut self, _node: &LocalFunction) { ... }
fn visit_local_function_end(&mut self, _node: &LocalFunction) { ... }
fn visit_last_stmt(&mut self, _node: &LastStmt) { ... }
fn visit_last_stmt_end(&mut self, _node: &LastStmt) { ... }
fn visit_method_call(&mut self, _node: &MethodCall) { ... }
fn visit_method_call_end(&mut self, _node: &MethodCall) { ... }
fn visit_numeric_for(&mut self, _node: &NumericFor) { ... }
fn visit_numeric_for_end(&mut self, _node: &NumericFor) { ... }
fn visit_parameter(&mut self, _node: &Parameter) { ... }
fn visit_parameter_end(&mut self, _node: &Parameter) { ... }
fn visit_prefix(&mut self, _node: &Prefix) { ... }
fn visit_prefix_end(&mut self, _node: &Prefix) { ... }
fn visit_return(&mut self, _node: &Return) { ... }
fn visit_return_end(&mut self, _node: &Return) { ... }
fn visit_repeat(&mut self, _node: &Repeat) { ... }
fn visit_repeat_end(&mut self, _node: &Repeat) { ... }
fn visit_stmt(&mut self, _node: &Stmt) { ... }
fn visit_stmt_end(&mut self, _node: &Stmt) { ... }
fn visit_suffix(&mut self, _node: &Suffix) { ... }
fn visit_suffix_end(&mut self, _node: &Suffix) { ... }
fn visit_table_constructor(&mut self, _node: &TableConstructor) { ... }
fn visit_table_constructor_end(&mut self, _node: &TableConstructor) { ... }
fn visit_token_reference(&mut self, _node: &TokenReference) { ... }
fn visit_token_reference_end(&mut self, _node: &TokenReference) { ... }
fn visit_un_op(&mut self, _node: &UnOp) { ... }
fn visit_un_op_end(&mut self, _node: &UnOp) { ... }
fn visit_var(&mut self, _node: &Var) { ... }
fn visit_var_end(&mut self, _node: &Var) { ... }
fn visit_var_expression(&mut self, _node: &VarExpression) { ... }
fn visit_var_expression_end(&mut self, _node: &VarExpression) { ... }
fn visit_while(&mut self, _node: &While) { ... }
fn visit_while_end(&mut self, _node: &While) { ... }
fn visit_compound_assignment(&mut self, _node: &CompoundAssignment) { ... }
fn visit_compound_assignment_end(&mut self, _node: &CompoundAssignment) { ... }
fn visit_compound_op(&mut self, _node: &CompoundOp) { ... }
fn visit_compound_op_end(&mut self, _node: &CompoundOp) { ... }
fn visit_else_if_expression(&mut self, _node: &ElseIfExpression) { ... }
fn visit_else_if_expression_end(&mut self, _node: &ElseIfExpression) { ... }
fn visit_exported_type_declaration(
&mut self,
_node: &ExportedTypeDeclaration
) { ... }
fn visit_exported_type_declaration_end(
&mut self,
_node: &ExportedTypeDeclaration
) { ... }
fn visit_generic_declaration(&mut self, _node: &GenericDeclaration) { ... }
fn visit_generic_declaration_end(&mut self, _node: &GenericDeclaration) { ... }
fn visit_generic_declaration_parameter(
&mut self,
_node: &GenericDeclarationParameter
) { ... }
fn visit_generic_declaration_parameter_end(
&mut self,
_node: &GenericDeclarationParameter
) { ... }
fn visit_generic_parameter_info(&mut self, _node: &GenericParameterInfo) { ... }
fn visit_generic_parameter_info_end(&mut self, _node: &GenericParameterInfo) { ... }
fn visit_if_expression(&mut self, _node: &IfExpression) { ... }
fn visit_if_expression_end(&mut self, _node: &IfExpression) { ... }
fn visit_indexed_type_info(&mut self, _node: &IndexedTypeInfo) { ... }
fn visit_indexed_type_info_end(&mut self, _node: &IndexedTypeInfo) { ... }
fn visit_interpolated_string(&mut self, _node: &InterpolatedString) { ... }
fn visit_interpolated_string_end(&mut self, _node: &InterpolatedString) { ... }
fn visit_type_argument(&mut self, _node: &TypeArgument) { ... }
fn visit_type_argument_end(&mut self, _node: &TypeArgument) { ... }
fn visit_type_assertion(&mut self, _node: &TypeAssertion) { ... }
fn visit_type_assertion_end(&mut self, _node: &TypeAssertion) { ... }
fn visit_type_declaration(&mut self, _node: &TypeDeclaration) { ... }
fn visit_type_declaration_end(&mut self, _node: &TypeDeclaration) { ... }
fn visit_type_field(&mut self, _node: &TypeField) { ... }
fn visit_type_field_end(&mut self, _node: &TypeField) { ... }
fn visit_type_field_key(&mut self, _node: &TypeFieldKey) { ... }
fn visit_type_field_key_end(&mut self, _node: &TypeFieldKey) { ... }
fn visit_type_info(&mut self, _node: &TypeInfo) { ... }
fn visit_type_info_end(&mut self, _node: &TypeInfo) { ... }
fn visit_type_specifier(&mut self, _node: &TypeSpecifier) { ... }
fn visit_type_specifier_end(&mut self, _node: &TypeSpecifier) { ... }
fn visit_goto(&mut self, _node: &Goto) { ... }
fn visit_goto_end(&mut self, _node: &Goto) { ... }
fn visit_label(&mut self, _node: &Label) { ... }
fn visit_label_end(&mut self, _node: &Label) { ... }
fn visit_attribute(&mut self, _node: &Attribute) { ... }
fn visit_attribute_end(&mut self, _node: &Attribute) { ... }
fn visit_identifier(&mut self, _token: &Token) { ... }
fn visit_multi_line_comment(&mut self, _token: &Token) { ... }
fn visit_number(&mut self, _token: &Token) { ... }
fn visit_single_line_comment(&mut self, _token: &Token) { ... }
fn visit_string_literal(&mut self, _token: &Token) { ... }
fn visit_symbol(&mut self, _token: &Token) { ... }
fn visit_token(&mut self, _token: &Token) { ... }
fn visit_whitespace(&mut self, _token: &Token) { ... }
fn visit_interpolated_string_segment(&mut self, _token: &Token) { ... }
}
Expand description
A trait that implements functions to listen for specific nodes/tokens.
Unlike VisitorMut
, nodes/tokens passed are immutable.
// A visitor that logs every local assignment made
#[derive(Default)]
struct LocalVariableVisitor {
names: Vec<String>,
}
impl Visitor for LocalVariableVisitor {
fn visit_local_assignment(&mut self, local_assignment: &ast::LocalAssignment) {
self.names.extend(&mut local_assignment.names().iter().map(|name| name.token().to_string()));
}
}
let mut visitor = LocalVariableVisitor::default();
visitor.visit_ast(&full_moon::parse("local x = 1; local y, z = 2, 3")?);
assert_eq!(visitor.names, vec!["x", "y", "z"]);
Provided Methods§
fn visit_anonymous_call(&mut self, _node: &FunctionArgs)
fn visit_anonymous_call_end(&mut self, _node: &FunctionArgs)
fn visit_assignment(&mut self, _node: &Assignment)
fn visit_assignment_end(&mut self, _node: &Assignment)
fn visit_block(&mut self, _node: &Block)
fn visit_block_end(&mut self, _node: &Block)
fn visit_call(&mut self, _node: &Call)
fn visit_call_end(&mut self, _node: &Call)
fn visit_contained_span(&mut self, _node: &ContainedSpan)
fn visit_contained_span_end(&mut self, _node: &ContainedSpan)
fn visit_do(&mut self, _node: &Do)
fn visit_do_end(&mut self, _node: &Do)
fn visit_else_if(&mut self, _node: &ElseIf)
fn visit_else_if_end(&mut self, _node: &ElseIf)
fn visit_eof(&mut self, _node: &TokenReference)
fn visit_eof_end(&mut self, _node: &TokenReference)
fn visit_expression(&mut self, _node: &Expression)
fn visit_expression_end(&mut self, _node: &Expression)
fn visit_field(&mut self, _node: &Field)
fn visit_field_end(&mut self, _node: &Field)
fn visit_function_args(&mut self, _node: &FunctionArgs)
fn visit_function_args_end(&mut self, _node: &FunctionArgs)
fn visit_function_body(&mut self, _node: &FunctionBody)
fn visit_function_body_end(&mut self, _node: &FunctionBody)
fn visit_function_call(&mut self, _node: &FunctionCall)
fn visit_function_call_end(&mut self, _node: &FunctionCall)
fn visit_function_declaration(&mut self, _node: &FunctionDeclaration)
fn visit_function_declaration_end(&mut self, _node: &FunctionDeclaration)
fn visit_function_name(&mut self, _node: &FunctionName)
fn visit_function_name_end(&mut self, _node: &FunctionName)
fn visit_generic_for(&mut self, _node: &GenericFor)
fn visit_generic_for_end(&mut self, _node: &GenericFor)
fn visit_if(&mut self, _node: &If)
fn visit_if_end(&mut self, _node: &If)
fn visit_index(&mut self, _node: &Index)
fn visit_index_end(&mut self, _node: &Index)
fn visit_local_assignment(&mut self, _node: &LocalAssignment)
fn visit_local_assignment_end(&mut self, _node: &LocalAssignment)
fn visit_local_function(&mut self, _node: &LocalFunction)
fn visit_local_function_end(&mut self, _node: &LocalFunction)
fn visit_last_stmt(&mut self, _node: &LastStmt)
fn visit_last_stmt_end(&mut self, _node: &LastStmt)
fn visit_method_call(&mut self, _node: &MethodCall)
fn visit_method_call_end(&mut self, _node: &MethodCall)
fn visit_numeric_for(&mut self, _node: &NumericFor)
fn visit_numeric_for_end(&mut self, _node: &NumericFor)
fn visit_parameter(&mut self, _node: &Parameter)
fn visit_parameter_end(&mut self, _node: &Parameter)
fn visit_prefix(&mut self, _node: &Prefix)
fn visit_prefix_end(&mut self, _node: &Prefix)
fn visit_return(&mut self, _node: &Return)
fn visit_return_end(&mut self, _node: &Return)
fn visit_repeat(&mut self, _node: &Repeat)
fn visit_repeat_end(&mut self, _node: &Repeat)
fn visit_stmt(&mut self, _node: &Stmt)
fn visit_stmt_end(&mut self, _node: &Stmt)
fn visit_suffix(&mut self, _node: &Suffix)
fn visit_suffix_end(&mut self, _node: &Suffix)
fn visit_table_constructor(&mut self, _node: &TableConstructor)
fn visit_table_constructor_end(&mut self, _node: &TableConstructor)
fn visit_token_reference(&mut self, _node: &TokenReference)
fn visit_token_reference_end(&mut self, _node: &TokenReference)
fn visit_un_op(&mut self, _node: &UnOp)
fn visit_un_op_end(&mut self, _node: &UnOp)
fn visit_var(&mut self, _node: &Var)
fn visit_var_end(&mut self, _node: &Var)
fn visit_var_expression(&mut self, _node: &VarExpression)
fn visit_var_expression_end(&mut self, _node: &VarExpression)
fn visit_while(&mut self, _node: &While)
fn visit_while_end(&mut self, _node: &While)
sourcefn visit_compound_assignment(&mut self, _node: &CompoundAssignment)
fn visit_compound_assignment(&mut self, _node: &CompoundAssignment)
Available on crate feature
roblox
only.sourcefn visit_compound_assignment_end(&mut self, _node: &CompoundAssignment)
fn visit_compound_assignment_end(&mut self, _node: &CompoundAssignment)
Available on crate feature
roblox
only.sourcefn visit_compound_op(&mut self, _node: &CompoundOp)
fn visit_compound_op(&mut self, _node: &CompoundOp)
Available on crate feature
roblox
only.sourcefn visit_compound_op_end(&mut self, _node: &CompoundOp)
fn visit_compound_op_end(&mut self, _node: &CompoundOp)
Available on crate feature
roblox
only.sourcefn visit_else_if_expression(&mut self, _node: &ElseIfExpression)
fn visit_else_if_expression(&mut self, _node: &ElseIfExpression)
Available on crate feature
roblox
only.sourcefn visit_else_if_expression_end(&mut self, _node: &ElseIfExpression)
fn visit_else_if_expression_end(&mut self, _node: &ElseIfExpression)
Available on crate feature
roblox
only.sourcefn visit_exported_type_declaration(&mut self, _node: &ExportedTypeDeclaration)
fn visit_exported_type_declaration(&mut self, _node: &ExportedTypeDeclaration)
Available on crate feature
roblox
only.sourcefn visit_exported_type_declaration_end(
&mut self,
_node: &ExportedTypeDeclaration
)
fn visit_exported_type_declaration_end( &mut self, _node: &ExportedTypeDeclaration )
Available on crate feature
roblox
only.sourcefn visit_generic_declaration(&mut self, _node: &GenericDeclaration)
fn visit_generic_declaration(&mut self, _node: &GenericDeclaration)
Available on crate feature
roblox
only.sourcefn visit_generic_declaration_end(&mut self, _node: &GenericDeclaration)
fn visit_generic_declaration_end(&mut self, _node: &GenericDeclaration)
Available on crate feature
roblox
only.sourcefn visit_generic_declaration_parameter(
&mut self,
_node: &GenericDeclarationParameter
)
fn visit_generic_declaration_parameter( &mut self, _node: &GenericDeclarationParameter )
Available on crate feature
roblox
only.sourcefn visit_generic_declaration_parameter_end(
&mut self,
_node: &GenericDeclarationParameter
)
fn visit_generic_declaration_parameter_end( &mut self, _node: &GenericDeclarationParameter )
Available on crate feature
roblox
only.sourcefn visit_generic_parameter_info(&mut self, _node: &GenericParameterInfo)
fn visit_generic_parameter_info(&mut self, _node: &GenericParameterInfo)
Available on crate feature
roblox
only.sourcefn visit_generic_parameter_info_end(&mut self, _node: &GenericParameterInfo)
fn visit_generic_parameter_info_end(&mut self, _node: &GenericParameterInfo)
Available on crate feature
roblox
only.sourcefn visit_if_expression(&mut self, _node: &IfExpression)
fn visit_if_expression(&mut self, _node: &IfExpression)
Available on crate feature
roblox
only.sourcefn visit_if_expression_end(&mut self, _node: &IfExpression)
fn visit_if_expression_end(&mut self, _node: &IfExpression)
Available on crate feature
roblox
only.sourcefn visit_indexed_type_info(&mut self, _node: &IndexedTypeInfo)
fn visit_indexed_type_info(&mut self, _node: &IndexedTypeInfo)
Available on crate feature
roblox
only.sourcefn visit_indexed_type_info_end(&mut self, _node: &IndexedTypeInfo)
fn visit_indexed_type_info_end(&mut self, _node: &IndexedTypeInfo)
Available on crate feature
roblox
only.sourcefn visit_interpolated_string(&mut self, _node: &InterpolatedString)
fn visit_interpolated_string(&mut self, _node: &InterpolatedString)
Available on crate feature
roblox
only.sourcefn visit_interpolated_string_end(&mut self, _node: &InterpolatedString)
fn visit_interpolated_string_end(&mut self, _node: &InterpolatedString)
Available on crate feature
roblox
only.sourcefn visit_type_argument(&mut self, _node: &TypeArgument)
fn visit_type_argument(&mut self, _node: &TypeArgument)
Available on crate feature
roblox
only.sourcefn visit_type_argument_end(&mut self, _node: &TypeArgument)
fn visit_type_argument_end(&mut self, _node: &TypeArgument)
Available on crate feature
roblox
only.sourcefn visit_type_assertion(&mut self, _node: &TypeAssertion)
fn visit_type_assertion(&mut self, _node: &TypeAssertion)
Available on crate feature
roblox
only.sourcefn visit_type_assertion_end(&mut self, _node: &TypeAssertion)
fn visit_type_assertion_end(&mut self, _node: &TypeAssertion)
Available on crate feature
roblox
only.sourcefn visit_type_declaration(&mut self, _node: &TypeDeclaration)
fn visit_type_declaration(&mut self, _node: &TypeDeclaration)
Available on crate feature
roblox
only.sourcefn visit_type_declaration_end(&mut self, _node: &TypeDeclaration)
fn visit_type_declaration_end(&mut self, _node: &TypeDeclaration)
Available on crate feature
roblox
only.sourcefn visit_type_field(&mut self, _node: &TypeField)
fn visit_type_field(&mut self, _node: &TypeField)
Available on crate feature
roblox
only.sourcefn visit_type_field_end(&mut self, _node: &TypeField)
fn visit_type_field_end(&mut self, _node: &TypeField)
Available on crate feature
roblox
only.sourcefn visit_type_field_key(&mut self, _node: &TypeFieldKey)
fn visit_type_field_key(&mut self, _node: &TypeFieldKey)
Available on crate feature
roblox
only.sourcefn visit_type_field_key_end(&mut self, _node: &TypeFieldKey)
fn visit_type_field_key_end(&mut self, _node: &TypeFieldKey)
Available on crate feature
roblox
only.sourcefn visit_type_info(&mut self, _node: &TypeInfo)
fn visit_type_info(&mut self, _node: &TypeInfo)
Available on crate feature
roblox
only.sourcefn visit_type_info_end(&mut self, _node: &TypeInfo)
fn visit_type_info_end(&mut self, _node: &TypeInfo)
Available on crate feature
roblox
only.sourcefn visit_type_specifier(&mut self, _node: &TypeSpecifier)
fn visit_type_specifier(&mut self, _node: &TypeSpecifier)
Available on crate feature
roblox
only.sourcefn visit_type_specifier_end(&mut self, _node: &TypeSpecifier)
fn visit_type_specifier_end(&mut self, _node: &TypeSpecifier)
Available on crate feature
roblox
only.sourcefn visit_goto(&mut self, _node: &Goto)
fn visit_goto(&mut self, _node: &Goto)
Available on crate feature
lua52
only.sourcefn visit_goto_end(&mut self, _node: &Goto)
fn visit_goto_end(&mut self, _node: &Goto)
Available on crate feature
lua52
only.sourcefn visit_label(&mut self, _node: &Label)
fn visit_label(&mut self, _node: &Label)
Available on crate feature
lua52
only.sourcefn visit_label_end(&mut self, _node: &Label)
fn visit_label_end(&mut self, _node: &Label)
Available on crate feature
lua52
only.sourcefn visit_attribute(&mut self, _node: &Attribute)
fn visit_attribute(&mut self, _node: &Attribute)
Available on crate feature
lua54
only.sourcefn visit_attribute_end(&mut self, _node: &Attribute)
fn visit_attribute_end(&mut self, _node: &Attribute)
Available on crate feature
lua54
only.fn visit_identifier(&mut self, _token: &Token)
fn visit_multi_line_comment(&mut self, _token: &Token)
fn visit_number(&mut self, _token: &Token)
fn visit_single_line_comment(&mut self, _token: &Token)
fn visit_string_literal(&mut self, _token: &Token)
fn visit_symbol(&mut self, _token: &Token)
fn visit_token(&mut self, _token: &Token)
fn visit_whitespace(&mut self, _token: &Token)
sourcefn visit_interpolated_string_segment(&mut self, _token: &Token)
fn visit_interpolated_string_segment(&mut self, _token: &Token)
Available on crate feature
roblox
only.