preserves::value::merge has to return Option
This commit is contained in:
parent
5f2a3e3eb8
commit
e43e85ce8e
|
@ -199,8 +199,12 @@ impl<'a, 'm> FunctionContext<'a, 'm> {
|
|||
return item(seq!["Err", parens![self.conformance_err_code()]]);
|
||||
}
|
||||
|
||||
pub fn fully_qualified_error_context(&self) -> String {
|
||||
self.m.module_path.0.join(".") + "." + &self.error_context
|
||||
}
|
||||
|
||||
pub fn conformance_err_code(&self) -> Item {
|
||||
return item(seq!["_support::ParseError::conformance_error", parens![
|
||||
escape_string(&(self.m.module_path.0.join(".") + "." + &self.error_context))]]);
|
||||
escape_string(&self.fully_qualified_error_context())]]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::*;
|
||||
use crate::gen::schema::*;
|
||||
use crate::syntax::block::constructors::*;
|
||||
use crate::syntax::block::{Emittable, Item};
|
||||
use crate::syntax::block::{Emittable, Item, escape_string};
|
||||
|
||||
use std::cell::Cell;
|
||||
use std::rc::Rc;
|
||||
|
@ -82,8 +82,11 @@ pub fn gen_definition_unparser(m: &mut ModuleContext, n: &str, d: &Definition) {
|
|||
ps.extend(pattern_n);
|
||||
let (patpat, vc) = destruct(&mut ctxt, item(names::render_constructor(n)), true, &record_type(&ps));
|
||||
body.push(item(seq!["let ", patpat, " = value;"]));
|
||||
body.push(item(seq!["preserves::value::merge(vec!", brackets(ps.iter().map(
|
||||
|p| named_pattern_unparser(&mut ctxt, p, &vc)).collect()), ")"]));
|
||||
body.push(item(seq![
|
||||
"preserves::value::merge(vec!", brackets(ps.iter().map(
|
||||
|p| named_pattern_unparser(&mut ctxt, p, &vc)).collect()
|
||||
), ").expect", parens![escape_string(&(
|
||||
"merge of ".to_owned() + &ctxt.fully_qualified_error_context()))]]));
|
||||
}
|
||||
Definition::Pattern(p) => {
|
||||
let (patpat, vc) = destruct(&mut ctxt, item(names::render_constructor(n)), true, &pattern_type(p));
|
||||
|
|
Loading…
Reference in New Issue