Arc at ref boundaries

This commit is contained in:
Tony Garnock-Jones 2021-06-30 15:06:28 +02:00
parent 5b9c4d29f6
commit 00759673ce
2 changed files with 2 additions and 2 deletions

View File

@ -102,7 +102,7 @@ pub fn compile(config: &CompilerConfig) -> Result<(), std::io::Error> {
m.define_type(item(seq!["pub type _Ptr = ", match &v.embedded_type {
EmbeddedTypeName::False => item("preserves::value::IOValue".to_owned()),
EmbeddedTypeName::Ref(r) => m.render_ref(&**r),
EmbeddedTypeName::Ref(r) => item(seq!["std::sync::Arc", anglebrackets![m.render_ref(&**r)]]),
}, ";"]));
m.define_type(item(seq!["pub type _Any = preserves::value::ArcValue<_Ptr>;"]));

View File

@ -133,7 +133,7 @@ fn simple_pattern_unparser(
}
}
SimplePattern::Embedded { .. } =>
item(seq!["preserves::value::Value::Domain(", src.as_ref().unwrap().to_owned(), ").wrap()"]),
item(seq!["preserves::value::Value::Domain(", src.as_ref().unwrap().to_owned(), ".clone()).wrap()"]),
SimplePattern::Lit { value } =>
item(seq![parens![ctxt.m.define_literal(value)], ".clone()"]),
SimplePattern::Seqof { pattern } => {