pointlock_ir/
source_map.rs1use schemars::JsonSchema;
7use serde::{Deserialize, Serialize};
8
9use crate::primitives::{Identifier, JsonPointer};
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
13#[serde(rename_all = "camelCase", deny_unknown_fields)]
14pub struct SourceMapEntry {
15 pub ir_path: JsonPointer,
17 #[schemars(length(min = 1))]
19 pub file: String,
20 pub span: SourceSpan,
22 #[serde(skip_serializing_if = "Option::is_none")]
26 #[schemars(length(min = 1))]
27 pub origin: Option<Vec<MacroOriginFrame>>,
28}
29
30#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
32#[serde(rename_all = "camelCase", deny_unknown_fields)]
33pub struct SourceSpan {
34 #[schemars(range(min = 1))]
36 pub start_line: u32,
37 #[schemars(range(min = 1))]
39 pub start_col: u32,
40 #[schemars(range(min = 1))]
42 pub end_line: u32,
43 #[schemars(range(min = 1))]
45 pub end_col: u32,
46}
47
48#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
50#[serde(rename_all = "camelCase", deny_unknown_fields)]
51pub struct MacroOriginFrame {
52 pub r#macro: Identifier,
54 #[schemars(length(min = 1))]
56 pub file: String,
57 pub span: SourceSpan,
59}