Skip to main content

ktrs_compose/core/
compose_kt_visitor.rs

1//! Port of `core/ComposeKtVisitor.kt`.
2
3use ktrs_ast::Ast;
4use ktrs_ast::psi::{KtClass, KtClassOrObject, KtFile, KtFunction};
5
6use crate::core::compose_kt_config::ComposeKtConfig;
7use crate::core::emitter::Emitter;
8
9/// `ComposeKtVisitor`: every hook defaults to doing nothing. The tree is `&mut` because a fix edits it inside
10/// `Decision::if_fix`; read-only code passes it on as `&Ast`.
11pub trait ComposeKtVisitor {
12    fn is_opt_in(&self) -> bool {
13        false
14    }
15
16    fn visit_function(&self, _ast: &mut Ast, _function: KtFunction, _emitter: &mut dyn Emitter, _config: &dyn ComposeKtConfig) {}
17
18    fn visit_composable(&self, _ast: &mut Ast, _function: KtFunction, _emitter: &mut dyn Emitter, _config: &dyn ComposeKtConfig) {}
19
20    fn visit_class(&self, _ast: &mut Ast, _clazz: KtClass, _emitter: &mut dyn Emitter, _config: &dyn ComposeKtConfig) {}
21
22    fn visit_class_or_object(
23        &self,
24        _ast: &mut Ast,
25        _clazz: KtClassOrObject,
26        _emitter: &mut dyn Emitter,
27        _config: &dyn ComposeKtConfig,
28    ) {
29    }
30
31    fn visit_file(&self, _ast: &mut Ast, _file: KtFile, _emitter: &mut dyn Emitter, _config: &dyn ComposeKtConfig) {}
32}