use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::primitives::{Identifier, JsonPointer};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct SourceMapEntry {
pub ir_path: JsonPointer,
#[schemars(length(min = 1))]
pub file: String,
pub span: SourceSpan,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(length(min = 1))]
pub origin: Option<Vec<MacroOriginFrame>>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct SourceSpan {
#[schemars(range(min = 1))]
pub start_line: u32,
#[schemars(range(min = 1))]
pub start_col: u32,
#[schemars(range(min = 1))]
pub end_line: u32,
#[schemars(range(min = 1))]
pub end_col: u32,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct MacroOriginFrame {
pub r#macro: Identifier,
#[schemars(length(min = 1))]
pub file: String,
pub span: SourceSpan,
}