#[derive(Clone, Debug, PartialEq)]
pub struct FunctionDef {
pub name: String,
pub container: String,
pub signature: String,
pub start_line: usize,
pub end_line: usize,
pub content: String,
}
impl FunctionDef {
pub fn qualified_name(&self) -> String {
if self.container.is_empty() {
self.name.clone()
} else {
format!("{}::{}", self.container, self.name)
}
}
pub fn symbol_identity(&self) -> String {
let qualified = self.qualified_name();
if self.signature.is_empty() {
qualified
} else {
format!("{qualified}|{}", self.signature)
}
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct CallSite {
pub name: String,
pub qualifier: Vec<String>,
}
#[derive(Clone, Debug, PartialEq)]
pub struct Import {
pub raw: String,
pub kind: ImportKind,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ImportKind {
Use,
ExternCrate,
Require,
Import,
}