Skip to main content

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}