Skip to main content

LanguagePlugin

Trait LanguagePlugin 

Source
pub trait LanguagePlugin: Send + Sync {
    // Required methods
    fn id(&self) -> &'static str;
    fn display_name(&self) -> &'static str;
    fn detect_project(&self, root: &Path) -> Result<ProjectInfo>;
    fn discover_targets(&self, root: &Path) -> Result<Vec<VerificationTarget>>;
    fn generate_tests(
        &self,
        target: &VerificationTarget,
        plan: &VerificationPlan,
    ) -> Result<Vec<GeneratedArtifact>>;
    fn run_tests(
        &self,
        root: &Path,
        artifacts: &[GeneratedArtifact],
        plan: &VerificationPlan,
    ) -> Result<TestRunResult>;
    fn collect_coverage(&self, root: &Path) -> Result<Option<CoverageReport>>;

    // Provided methods
    fn capabilities(&self) -> Vec<PluginCapability> { ... }
    fn replay_behavior(
        &self,
        _root: &Path,
        _target: &VerificationTarget,
        _case: &BehaviorReplayCase,
    ) -> Result<Option<BehaviorReplayObservation>> { ... }
    fn replay_behaviors(
        &self,
        root: &Path,
        target: &VerificationTarget,
        cases: &[BehaviorReplayCase],
    ) -> Result<BTreeMap<String, BehaviorReplayObservation>> { ... }
    fn promote_regression(
        &self,
        _root: &Path,
        _report: &VerificationReport,
        finding: &Failure,
        index: usize,
    ) -> Result<Vec<GeneratedArtifact>> { ... }
}

Required Methods§

Provided Methods§

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§