codama_plugin_core/directive_resolver.rs
1use codama_attributes::ResolvableDirective;
2use codama_errors::CodamaResult;
3use codama_nodes::{InstructionInputValueNode, RegisteredTypeNode};
4
5/// Trait that allows plugins to resolve directives from other plugins.
6/// The framework builds a `DirectiveResolver` from all installed plugins
7/// and passes it to `resolve_type_directive` / `resolve_value_directive`.
8pub trait DirectiveResolver {
9 /// Resolve a resolvable directive into a type node.
10 /// Returns an error if no plugin can resolve it.
11 fn resolve_type_directive(
12 &self,
13 directive: &ResolvableDirective,
14 ) -> CodamaResult<RegisteredTypeNode>;
15
16 /// Resolve a resolvable directive into an instruction input value node.
17 /// Returns an error if no plugin can resolve it.
18 fn resolve_value_directive(
19 &self,
20 directive: &ResolvableDirective,
21 ) -> CodamaResult<InstructionInputValueNode>;
22}