use crate::analysis::facts::ReturnFact;
pub(crate) fn extract_return_facts(body: &str, start_line: usize) -> Vec<ReturnFact> {
let mut returns = Vec::new();
for (offset, line) in body.lines().enumerate() {
let trimmed = line.trim();
if trimmed.starts_with("return ")
|| trimmed.contains(" return ")
|| trimmed.contains("Ok(")
|| trimmed.contains("Err(")
|| trimmed.contains("Some(")
|| trimmed.contains("None")
{
returns.push(ReturnFact {
line: start_line + offset,
text: trimmed.to_string(),
});
}
}
returns.sort_by(|a, b| a.line.cmp(&b.line).then(a.text.cmp(&b.text)));
returns.dedup_by(|a, b| a.line == b.line && a.text == b.text);
returns
}