Patch up codegen
This commit is contained in:
parent
d8f0c6aa5d
commit
0a20c76eb0
|
@ -106,7 +106,7 @@ pub fn gen_definition_reader(m: &mut ModuleContext, n: &str, d: &Definition) {
|
|||
seq![ctxt.m.any_type(), ": _support::preserves::value::NestedValue"],
|
||||
seq!["_Dec: _support::DomainDecode<", ctxt.m.any_type(), "::Embedded>"],
|
||||
"_R: _support::Reader<'de>"],
|
||||
seq!["(r: &mut _support::preserves::value::ConfiguredReader<'de, ", ctxt.m.any_type(), ", _Dec, _R>) -> "],
|
||||
seq!["(r: &mut _support::preserves::value::ConfiguredReader<'de, ", ctxt.m.any_type(), ", _R, _Dec>) -> "],
|
||||
"std::result::Result<",
|
||||
names::render_constructor(n), ty.generic_arg(ctxt.m),
|
||||
", _support::ParseError> ",
|
||||
|
@ -143,13 +143,16 @@ pub fn gen_definition_reader(m: &mut ModuleContext, n: &str, d: &Definition) {
|
|||
|
||||
item(seq![
|
||||
"impl", anglebrackets![
|
||||
"'de",
|
||||
seq![ctxt.m.any_type(), ": _support::preserves::value::NestedValue"],
|
||||
seq!["_Dec: _support::DomainDecode<", ctxt.m.any_type(), "::Embedded>"],
|
||||
"_R: _support::Reader<'de>"], " ",
|
||||
"_support::Deserialize", anglebrackets!["'de", ctxt.m.any_type(), "_Dec", "_R"], " ",
|
||||
seq![ctxt.m.any_type(), ": _support::preserves::value::NestedValue"]], " ",
|
||||
"_support::Deserialize", anglebrackets![ctxt.m.any_type()], " ",
|
||||
"for ", names::render_constructor(n), ty.generic_arg(ctxt.m), " ", codeblock![
|
||||
seq!["fn deserialize(r: &mut _support::preserves::value::ConfiguredReader<'de, ", ctxt.m.any_type(), ", _Dec, _R>) -> ",
|
||||
seq![
|
||||
"fn deserialize",
|
||||
vertical(false, anglebrackets![
|
||||
"'de",
|
||||
seq!["_Dec: _support::DomainDecode<", ctxt.m.any_type(), "::Embedded>"],
|
||||
"_R: _support::Reader<'de>"]),
|
||||
"(r: &mut _support::preserves::value::ConfiguredReader<'de, ", ctxt.m.any_type(), ", _R, _Dec>) -> ",
|
||||
"std::result::Result<Self, _support::ParseError> ",
|
||||
codeblock(body)]]])
|
||||
});
|
||||
|
|
|
@ -62,9 +62,27 @@ impl compiler::Plugin for TypePlugin {
|
|||
if let ModuleContextMode::TargetGeneric = m.mode {
|
||||
let ty = definition_type(&m.module_path, n, d);
|
||||
m.define_type(item(ty.render(m, n)));
|
||||
if ty.has_embedded(m.bundle) {
|
||||
m.define_type(item(
|
||||
vertical(false, seq![
|
||||
seq!["impl<", m.any_type(), "> _support::preserves::value::Domain for ",
|
||||
names::render_constructor(n), ty.generic_arg(m)],
|
||||
seq!["where for<'value> ", m.any_type(),
|
||||
": _support::preserves::value::NestedValue<Embedded = ",
|
||||
names::render_constructor(n), ty.generic_arg(m), "> + 'value"],
|
||||
codeblock![
|
||||
seq!["type Decode = _support::SchemaDomainCodec<", m.any_type(), ">;"],
|
||||
seq!["type Encode = _support::SchemaDomainCodec<", m.any_type(), ">;"]
|
||||
]])));
|
||||
} else {
|
||||
m.define_type(item(seq![
|
||||
"impl", ty.generic_decl(m), " _support::preserves::value::Domain for ",
|
||||
names::render_constructor(n), ty.generic_arg(m), " {}"]));
|
||||
names::render_constructor(n), ty.generic_arg(m), " ",
|
||||
codeblock![
|
||||
seq!["type Decode = _support::SchemaDomainCodec<_support::preserves::value::PlainValue<", names::render_constructor(n), ty.generic_arg(m), ">>;"],
|
||||
seq!["type Encode = _support::SchemaDomainCodec<_support::preserves::value::PlainValue<", names::render_constructor(n), ty.generic_arg(m), ">>;"]
|
||||
]]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -278,8 +278,7 @@ pub struct Binding<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for Binding<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Binding<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Binding<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
|
@ -354,15 +353,13 @@ pub struct Bundle<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for Bundle<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Bundle<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Bundle<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for Bundle<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for Bundle<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -439,8 +436,7 @@ pub enum CompoundPattern<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for CompoundPattern<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = CompoundPattern<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = CompoundPattern<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
|
@ -570,8 +566,7 @@ fn read_compound_pattern_dict<
|
|||
Ok(CompoundPattern::Dict {entries: std::boxed::Box::new(_tmp2)})
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for CompoundPattern<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for CompoundPattern<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -733,8 +728,7 @@ pub enum Definition<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for Definition<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Definition<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Definition<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
|
@ -838,8 +832,7 @@ fn read_definition_pattern<
|
|||
Ok(Definition::Pattern(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for Definition<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for Definition<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -973,15 +966,13 @@ pub struct Definitions<
|
|||
>(pub _support::preserves::value::Map<std::string::String, Definition<_Value>>);
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for Definitions<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Definitions<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Definitions<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for Definitions<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for Definitions<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1037,15 +1028,13 @@ pub struct DictionaryEntries<
|
|||
>(pub _support::preserves::value::Map<_Value, NamedSimplePattern<_Value>>);
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for DictionaryEntries<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = DictionaryEntries<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = DictionaryEntries<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for DictionaryEntries<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for DictionaryEntries<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1257,15 +1246,13 @@ pub struct Modules<
|
|||
>(pub _support::preserves::value::Map<ModulePath, Schema<_Value>>);
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for Modules<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Modules<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Modules<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for Modules<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for Modules<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1324,15 +1311,13 @@ pub struct NamedAlternative<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for NamedAlternative<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = NamedAlternative<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = NamedAlternative<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for NamedAlternative<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for NamedAlternative<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1390,8 +1375,7 @@ pub enum NamedPattern<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for NamedPattern<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = NamedPattern<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = NamedPattern<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
|
@ -1417,8 +1401,7 @@ fn read_named_pattern_anonymous<
|
|||
Ok(NamedPattern::Anonymous(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for NamedPattern<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for NamedPattern<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1483,8 +1466,7 @@ pub enum NamedSimplePattern<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for NamedSimplePattern<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = NamedSimplePattern<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = NamedSimplePattern<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
|
@ -1510,8 +1492,7 @@ fn read_named_simple_pattern_anonymous<
|
|||
Ok(NamedSimplePattern::Anonymous(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for NamedSimplePattern<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for NamedSimplePattern<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1576,8 +1557,7 @@ pub enum Pattern<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for Pattern<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Pattern<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Pattern<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
|
@ -1603,8 +1583,7 @@ fn read_pattern_compound_pattern<
|
|||
Ok(Pattern::CompoundPattern(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for Pattern<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for Pattern<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1742,15 +1721,13 @@ pub struct Schema<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for Schema<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Schema<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = Schema<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for Schema<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for Schema<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
@ -1901,8 +1878,7 @@ pub enum SimplePattern<
|
|||
}
|
||||
|
||||
impl<_Value> _support::preserves::value::Domain for SimplePattern<_Value>
|
||||
where
|
||||
for<'value> _Value: _support::preserves::value::NestedValue<Embedded = SimplePattern<_Value>> + 'value
|
||||
where for<'value> _Value: _support::preserves::value::NestedValue<Embedded = SimplePattern<_Value>> + 'value
|
||||
{
|
||||
type Decode = _support::SchemaDomainCodec<_Value>;
|
||||
type Encode = _support::SchemaDomainCodec<_Value>;
|
||||
|
@ -2088,8 +2064,7 @@ fn read_simple_pattern_ref<
|
|||
Ok(SimplePattern::Ref(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
impl< _Value: _support::preserves::value::NestedValue,
|
||||
> _support::Deserialize<_Value> for SimplePattern<_Value> {
|
||||
impl<_Value: _support::preserves::value::NestedValue> _support::Deserialize<_Value> for SimplePattern<_Value> {
|
||||
fn deserialize<
|
||||
'de,
|
||||
_Dec: _support::DomainDecode<_Value::Embedded>,
|
||||
|
|
Loading…
Reference in New Issue