provekit_noirc_artifacts 1.0.0-beta.20

Definitions of Nargo's build artifacts
use noirc_errors::call_stack::CallStack;
use serde::{Deserialize, Serialize};
use thiserror::Error;

#[derive(Debug, Clone, Serialize, Deserialize, Hash)]
pub enum SsaReport {
    Warning(InternalWarning),
    Bug(InternalBug),
}

#[derive(Debug, PartialEq, Eq, Clone, Error, Serialize, Deserialize, Hash)]
pub enum InternalWarning {
    #[error("Return variable contains a constant value")]
    ReturnConstant { call_stack: CallStack },
}

#[derive(Debug, PartialEq, Eq, Clone, Error, Serialize, Deserialize, Hash)]
pub enum InternalBug {
    #[error("Input to Brillig function is in a separate subgraph to output")]
    IndependentSubgraph { call_stack: CallStack },
    #[error("Brillig function call isn't properly covered by a manual constraint")]
    UncheckedBrilligCall { call_stack: CallStack },
    #[error("Assertion is always false")]
    AssertFailed { call_stack: CallStack, message: Option<String> },
}