pub struct DefRecord {
pub id: String,
pub name: String,
pub namespace: String,
pub kind: String,
pub line: usize,
pub methods: Vec<String>,
pub properties: Vec<String>,
pub fields: Vec<String>,
pub method_returns: Vec<(String, String)>,
pub extension_methods: Vec<ExtensionMethod>,
pub bases: Vec<String>,
pub type_params: Vec<String>,
pub base_generic_args: Vec<(String, Vec<String>)>,
pub test_methods: Vec<String>,
pub property_types: Vec<(String, Fact)>,
pub field_types: Vec<(String, Fact)>,
pub method_return_args: Vec<(String, Vec<String>)>,
pub non_public_methods: Vec<String>,
pub method_arities: Vec<(String, Vec<(usize, i64)>)>,
pub method_params: Vec<(String, Vec<Vec<String>>)>,
pub override_methods: Vec<String>,
pub end_line: usize,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ExtensionMethod {
pub name: String,
pub this_type: String,
pub arity_min: usize,
pub arity_max: i64,
pub this_args: Option<Vec<String>>,
}
pub struct RefRecord {
pub kind: String,
pub name: String,
pub qualified: Option<String>,
pub member: Option<String>,
pub line: usize,
pub namespace: Option<String>,
pub type_arg_count: Option<usize>,
pub generic: bool,
pub receiver_type: Option<String>,
pub arg_count: Option<usize>,
pub receiver_args: Option<Vec<String>>,
pub outer_types: Vec<String>,
pub args: Option<Vec<String>>,
pub receiver_property_owner: Option<String>,
pub receiver_call_owner: Option<String>,
pub receiver_call_member: Option<String>,
pub receiver_base: bool,
pub receiver_awaited: bool,
pub receiver_local: bool,
pub receiver_lambda: Option<LambdaSlot>,
}
pub enum UsingRecord {
Alias {
alias: String,
target: String,
global: bool,
},
Plain {
text: String,
global: bool,
},
}
pub struct Extraction {
pub purpose: Option<String>,
pub defs: Vec<DefRecord>,
pub usings: Vec<UsingRecord>,
pub refs: Vec<RefRecord>,
pub names: Vec<NameRecord>,
pub registrations: Vec<RegistrationRecord>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct RegistrationRecord {
pub service: String,
pub implementation: String,
pub namespace: String,
pub line: usize,
}
#[derive(Debug, Clone, PartialEq)]
pub struct NameRecord {
pub name: String,
pub kind: String,
pub line: usize,
pub owner: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct LambdaSlot {
pub owner: String,
pub member: String,
pub arg_count: usize,
pub arg_index: usize,
pub arity: usize,
pub index: usize,
}
#[derive(Clone, PartialEq, Eq)]
pub struct Fact {
pub type_name: String,
pub args: Option<Vec<String>>,
pub call: Option<String>,
pub awaited: bool,
pub is_array: bool,
pub lambda: Option<LambdaSlot>,
}