use super::super::syntax::ident_length;
use super::unit::CallHead;
#[expect(
clippy::string_slice,
reason = "name_len is an ASCII ident length, a char boundary"
)]
pub(crate) fn call_head(text: &str) -> Option<CallHead> {
let trimmed = text.trim_start();
let bytes = trimmed.as_bytes();
let name_len = ident_length(bytes)?;
let mut idx = name_len;
while matches!(bytes.get(idx), Some(b' ') | Some(b'\t')) {
idx += 1;
}
let sep = match bytes.get(idx) {
Some(b'(') => '(',
Some(b'{') => '{',
_ => return None,
};
Some(CallHead {
name: trimmed[..name_len].to_string(),
sep,
})
}