use crate::hir::HirProto;
use super::super::common::{ClosureCaptureEvidence, FunctionNamingEvidence};
pub(super) fn build_function_evidence(
hir: &HirProto,
capture_evidence: Option<&ClosureCaptureEvidence>,
) -> FunctionNamingEvidence {
let param_debug_names = hir.param_debug_hints.clone();
let mut local_debug_names = hir.local_debug_hints.clone();
if hir.signature.has_vararg_param_reg
&& let Some(slot) = local_debug_names.first_mut()
&& slot.is_none()
{
*slot = hir
.param_debug_hints
.get(hir.params.len())
.cloned()
.flatten();
}
let upvalue_debug_names = hir.upvalue_debug_hints.clone();
let upvalue_capture_sources = capture_evidence
.map(|evidence| evidence.captures.clone())
.unwrap_or_else(|| vec![None; hir.upvalues.len()]);
FunctionNamingEvidence {
param_debug_names,
local_debug_names,
upvalue_debug_names,
upvalue_capture_sources,
temp_debug_names: hir.temp_debug_locals.clone(),
}
}