use crate::Rc;
use thiserror::Error;
type String = Rc<str>;
#[derive(Debug, Clone, Error)]
pub enum TargetCompileError {
#[error("Multiple different targets specified: '{existing}' and '{conflicting}'")]
ConflictingTargets {
existing: String,
conflicting: String,
},
#[error("Target '{0}' not found in registry")]
TargetNotFound(String),
#[error("No target specified. When using compile_for_target, at least one module must specify a target using the __target__ annotation")]
NoTargetSpecified,
#[error("Modules with target '{target}' have different packages: '{existing_package}' and '{conflicting_package}'")]
ConflictingPackages {
target: String,
existing_package: String,
conflicting_package: String,
},
#[error(
"Target '{target_name}' requires a rule with name {effect_names} in package '{package}'"
)]
NoEffectRules {
target_name: String,
package: String,
effect_names: String,
},
#[error("Multiple effects have rules defined for target '{target_name}': {effect_names}. Only one effect should have rules defined in package '{path}'")]
MultipleEffectRules {
target_name: String,
effect_names: String,
path: String,
},
#[error("Missing default resource schema: {0}")]
MissingDefaultResourceSchema(String),
#[error("Incompatible default schema: {0}")]
IncompatibleDefaultSchema(String),
#[error("Invalid default schema type: {0}")]
InvalidDefaultSchemaType(String),
}