Skip to main content

miden_assembly_syntax/ast/instruction/
inline_call.rs

1use alloc::sync::Arc;
2
3use miden_debug_types::FileLineCol;
4#[cfg(feature = "serde")]
5use serde::{Deserialize, Serialize};
6
7/// Debug information describing one source-level function in an active inline call chain.
8#[derive(Clone, Debug, Eq, PartialEq)]
9#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
10pub struct DebugInlineCallInfo {
11    name: Arc<str>,
12    linkage_name: Option<Arc<str>>,
13    declaration: FileLineCol,
14    call_site: FileLineCol,
15}
16
17impl DebugInlineCallInfo {
18    pub fn new(
19        name: impl Into<Arc<str>>,
20        declaration: FileLineCol,
21        call_site: FileLineCol,
22    ) -> Self {
23        Self {
24            name: name.into(),
25            linkage_name: None,
26            declaration,
27            call_site,
28        }
29    }
30
31    pub fn with_linkage_name(mut self, linkage_name: impl Into<Arc<str>>) -> Self {
32        self.linkage_name = Some(linkage_name.into());
33        self
34    }
35
36    pub fn name(&self) -> &str {
37        &self.name
38    }
39
40    pub fn linkage_name(&self) -> Option<&str> {
41        self.linkage_name.as_deref()
42    }
43
44    pub fn declaration(&self) -> &FileLineCol {
45        &self.declaration
46    }
47
48    pub fn call_site(&self) -> &FileLineCol {
49        &self.call_site
50    }
51}