use std::fmt::Write;
use zerodds_idl::ast::Annotation;
use zerodds_idl::semantics::annotations::{PlacementKind, lower_annotations};
use crate::error::JavaGenError;
pub(crate) const JAVA_LANG_ALIASES: &[&str] = &["java"];
fn fmt_err(_e: std::fmt::Error) -> JavaGenError {
JavaGenError::Internal("string formatting failed".into())
}
pub(crate) fn emit_verbatim_at(
out: &mut String,
indent: &str,
anns: &[Annotation],
placement: PlacementKind,
) -> Result<(), JavaGenError> {
let Ok(lowered) = lower_annotations(anns) else {
return Ok(());
};
for v in lowered.verbatims_for_language(JAVA_LANG_ALIASES) {
if v.placement != placement {
continue;
}
for line in v.text.lines() {
writeln!(out, "{indent}{line}").map_err(fmt_err)?;
}
}
Ok(())
}