///|
/// Scheme from a rich unit: the `.scm` text with source comments and the `.symbols.10n` sidecar that carries
/// the unit's metadata unchanged (`pkgs/morphir-scheme/backend/README.mbt.md`, "Units, sidecar and source comments").
fn scheme_unit_generation(
unit : @data.IRUnit,
source_path : String,
) -> Array[GeneratedFile] raise {
let output = @backend.emit_unit(
{
unit_id: unit.id,
ir: unit.distribution,
metadata: unit.metadata.map(m => { node_id: m.node_id, data: m.data, }),
annotations: unit.annotations.copy(),
provenance: unit.provenance.copy(),
},
source_path=Some(source_path),
)
[
{
path: unit.id + ".scm",
content: @data.Text(output.source),
format: "scheme",
},
{
path: unit.id + @backend.SYMBOLS_SUFFIX,
content: @data.Binary(output.symbols),
format: "ion-binary",
},
]
}