2021-06-28 14:35:45 +00:00
#![ allow(unused_parens) ]
use std ::convert ::TryFrom ;
2021-06-28 20:25:41 +00:00
use preserves ::value ::NestedValue ;
2021-06-29 20:32:35 +00:00
use crate ::support ::* ;
2021-06-28 14:35:45 +00:00
lazy_static! {
2021-06-30 07:53:32 +00:00
pub static ref LIT15 : _Any = /* #f */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 128 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT28 : _Any = /* 1 */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 145 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT0 : _Any = /* Boolean */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 7 , 66 , 111 , 111 , 108 , 101 , 97 , 110 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT5 : _Any = /* ByteString */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 10 , 66 , 121 , 116 , 101 , 83 , 116 , 114 , 105 , 110 , 103 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT2 : _Any = /* Double */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 6 , 68 , 111 , 117 , 98 , 108 , 101 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT1 : _Any = /* Float */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 5 , 70 , 108 , 111 , 97 , 116 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT3 : _Any = /* SignedInteger */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 13 , 83 , 105 , 103 , 110 , 101 , 100 , 73 , 110 , 116 , 101 , 103 , 101 , 114 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT4 : _Any = /* String */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 6 , 83 , 116 , 114 , 105 , 110 , 103 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT6 : _Any = /* Symbol */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 6 , 83 , 121 , 109 , 98 , 111 , 108 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT14 : _Any = /* and */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 3 , 97 , 110 , 100 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT21 : _Any = /* any */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 3 , 97 , 110 , 121 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT22 : _Any = /* atom */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 4 , 97 , 116 , 111 , 109 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT8 : _Any = /* bundle */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 6 , 98 , 117 , 110 , 100 , 108 , 101 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT18 : _Any = /* definitions */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 11 , 100 , 101 , 102 , 105 , 110 , 105 , 116 , 105 , 111 , 110 , 115 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT12 : _Any = /* dict */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 4 , 100 , 105 , 99 , 116 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT27 : _Any = /* dictof */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 6 , 100 , 105 , 99 , 116 , 111 , 102 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT23 : _Any = /* embedded */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 8 , 101 , 109 , 98 , 101 , 100 , 100 , 101 , 100 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT19 : _Any = /* embeddedType */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 12 , 101 , 109 , 98 , 101 , 100 , 100 , 101 , 100 , 84 , 121 , 112 , 101 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT24 : _Any = /* lit */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 3 , 108 , 105 , 116 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT7 : _Any = /* named */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 5 , 110 , 97 , 109 , 101 , 100 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT13 : _Any = /* or */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 2 , 111 , 114 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT9 : _Any = /* rec */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 3 , 114 , 101 , 99 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT16 : _Any = /* ref */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 3 , 114 , 101 , 102 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT17 : _Any = /* schema */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 6 , 115 , 99 , 104 , 101 , 109 , 97 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT25 : _Any = /* seqof */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 5 , 115 , 101 , 113 , 111 , 102 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT26 : _Any = /* setof */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 5 , 115 , 101 , 116 , 111 , 102 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT10 : _Any = /* tuple */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 5 , 116 , 117 , 112 , 108 , 101 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT11 : _Any = /* tuplePrefix */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 11 , 116 , 117 , 112 , 108 , 101 , 80 , 114 , 101 , 102 , 105 , 120 ] ) . unwrap ( ) ) . unwrap ( ) ;
pub static ref LIT20 : _Any = /* version */ _Any ::from_io_value ( & preserves ::value ::packed ::from_bytes ( & vec! [ 179 , 7 , 118 , 101 , 114 , 115 , 105 , 111 , 110 ] ) . unwrap ( ) ) . unwrap ( ) ;
2021-06-28 14:35:45 +00:00
}
2021-06-29 21:19:22 +00:00
pub type _Ptr = preserves ::value ::IOValue ;
2021-06-30 07:53:32 +00:00
pub type _Any = preserves ::value ::ArcValue < _Ptr > ;
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum AtomKind { Boolean , Float , Double , SignedInteger , String , ByteString , Symbol }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:26:41 +00:00
pub struct Binding { pub name : std ::string ::String , pub pattern : SimplePattern }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:26:41 +00:00
pub struct Bundle { pub modules : Modules }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum CompoundPattern {
2021-06-28 14:35:45 +00:00
Rec { label : std ::boxed ::Box < NamedPattern > , fields : std ::boxed ::Box < NamedPattern > } ,
Tuple { patterns : std ::vec ::Vec < NamedPattern > } ,
TuplePrefix {
fixed : std ::vec ::Vec < NamedPattern > ,
variable : std ::boxed ::Box < NamedSimplePattern >
} ,
Dict { entries : std ::boxed ::Box < DictionaryEntries > }
}
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum Definition {
2021-06-28 14:35:45 +00:00
Or {
pattern_0 : std ::boxed ::Box < NamedAlternative > ,
pattern_1 : std ::boxed ::Box < NamedAlternative > ,
pattern_n : std ::vec ::Vec < NamedAlternative >
} ,
And {
pattern_0 : std ::boxed ::Box < NamedPattern > ,
pattern_1 : std ::boxed ::Box < NamedPattern > ,
pattern_n : std ::vec ::Vec < NamedPattern >
} ,
Pattern ( std ::boxed ::Box < Pattern > )
}
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub struct Definitions ( pub preserves ::value ::Map < std ::string ::String , Definition > ) ;
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
pub struct DictionaryEntries ( pub preserves ::value ::Map < _Any , NamedSimplePattern > ) ;
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum EmbeddedTypeName { Ref ( std ::boxed ::Box < Ref > ) , False }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub struct ModulePath ( pub std ::vec ::Vec < std ::string ::String > ) ;
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub struct Modules ( pub preserves ::value ::Map < ModulePath , Schema > ) ;
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:26:41 +00:00
pub struct NamedAlternative { pub variant_label : std ::string ::String , pub pattern : Pattern }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum NamedPattern { Named ( std ::boxed ::Box < Binding > ) , Anonymous ( std ::boxed ::Box < Pattern > ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum NamedSimplePattern { Named ( std ::boxed ::Box < Binding > ) , Anonymous ( std ::boxed ::Box < SimplePattern > ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum Pattern {
2021-06-28 14:35:45 +00:00
SimplePattern ( std ::boxed ::Box < SimplePattern > ) ,
CompoundPattern ( std ::boxed ::Box < CompoundPattern > )
}
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:26:41 +00:00
pub struct Ref { pub module : ModulePath , pub name : std ::string ::String }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub struct Schema {
2021-06-28 15:26:41 +00:00
pub definitions : Definitions ,
pub embedded_type : EmbeddedTypeName ,
pub version : Version
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub enum SimplePattern {
2021-06-28 14:35:45 +00:00
Any ,
Atom { atom_kind : std ::boxed ::Box < AtomKind > } ,
Embedded { interface : std ::boxed ::Box < SimplePattern > } ,
2021-06-30 07:53:32 +00:00
Lit { value : _Any } ,
2021-06-28 14:35:45 +00:00
Seqof { pattern : std ::boxed ::Box < SimplePattern > } ,
Setof { pattern : std ::boxed ::Box < SimplePattern > } ,
Dictof { key : std ::boxed ::Box < SimplePattern > , value : std ::boxed ::Box < SimplePattern > } ,
Ref ( std ::boxed ::Box < Ref > )
}
2021-06-30 07:53:32 +00:00
#[ derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash) ]
2021-06-28 15:08:44 +00:00
pub struct Version ;
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
fn _parse_atom_kind_boolean ( value : & _Any ) -> std ::result ::Result < AtomKind , ( ) > { if value ! = & * LIT0 { return Err ( ( ) ) ; } let _tmp0 = ( ) ; Ok ( AtomKind ::Boolean ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
fn _parse_atom_kind_float ( value : & _Any ) -> std ::result ::Result < AtomKind , ( ) > { if value ! = & * LIT1 { return Err ( ( ) ) ; } let _tmp0 = ( ) ; Ok ( AtomKind ::Float ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
fn _parse_atom_kind_double ( value : & _Any ) -> std ::result ::Result < AtomKind , ( ) > { if value ! = & * LIT2 { return Err ( ( ) ) ; } let _tmp0 = ( ) ; Ok ( AtomKind ::Double ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
fn _parse_atom_kind_signed_integer ( value : & _Any ) -> std ::result ::Result < AtomKind , ( ) > {
2021-06-28 14:35:45 +00:00
if value ! = & * LIT3 { return Err ( ( ) ) ; }
let _tmp0 = ( ) ;
Ok ( AtomKind ::SignedInteger )
}
2021-06-30 07:53:32 +00:00
fn _parse_atom_kind_string ( value : & _Any ) -> std ::result ::Result < AtomKind , ( ) > { if value ! = & * LIT4 { return Err ( ( ) ) ; } let _tmp0 = ( ) ; Ok ( AtomKind ::String ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
fn _parse_atom_kind_byte_string ( value : & _Any ) -> std ::result ::Result < AtomKind , ( ) > {
2021-06-28 14:35:45 +00:00
if value ! = & * LIT5 { return Err ( ( ) ) ; }
let _tmp0 = ( ) ;
Ok ( AtomKind ::ByteString )
}
2021-06-30 07:53:32 +00:00
fn _parse_atom_kind_symbol ( value : & _Any ) -> std ::result ::Result < AtomKind , ( ) > { if value ! = & * LIT6 { return Err ( ( ) ) ; } let _tmp0 = ( ) ; Ok ( AtomKind ::Symbol ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for AtomKind {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_atom_kind_boolean ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_atom_kind_float ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_atom_kind_double ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_atom_kind_signed_integer ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_atom_kind_string ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_atom_kind_byte_string ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_atom_kind_symbol ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & AtomKind > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & AtomKind ) -> Self {
match value {
AtomKind ::Boolean = > ( & * LIT0 ) . clone ( ) ,
AtomKind ::Float = > ( & * LIT1 ) . clone ( ) ,
AtomKind ::Double = > ( & * LIT2 ) . clone ( ) ,
AtomKind ::SignedInteger = > ( & * LIT3 ) . clone ( ) ,
AtomKind ::String = > ( & * LIT4 ) . clone ( ) ,
AtomKind ::ByteString = > ( & * LIT5 ) . clone ( ) ,
AtomKind ::Symbol = > ( & * LIT6 ) . clone ( ) ,
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Binding {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT7 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
let _tmp2 = ( & _tmp0 . fields ( ) [ 0 ] ) . value ( ) . to_symbol ( ) . map_err ( | _ | ( ) ) ? ;
2021-06-30 07:53:32 +00:00
let _tmp3 = SimplePattern ::try_from ( ( & _tmp0 . fields ( ) [ 1 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( Binding { name : _tmp2 . clone ( ) , pattern : _tmp3 } )
2021-06-28 14:35:45 +00:00
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Binding > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Binding ) -> Self {
let Binding { name : _tmp0 , pattern : _tmp1 } = value ;
{
let mut _tmp2 = preserves ::value ::Record ( vec! [ ( & * LIT7 ) . clone ( ) ] ) ;
_tmp2 . fields_vec_mut ( ) . push ( preserves ::value ::Value ::symbol ( _tmp0 ) . wrap ( ) ) ;
2021-06-30 07:53:32 +00:00
_tmp2 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp1 ) ) ;
2021-06-29 14:54:29 +00:00
_tmp2 . finish ( ) . wrap ( )
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Bundle {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT8 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = Modules ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( Bundle { modules : _tmp2 } )
2021-06-28 14:35:45 +00:00
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Bundle > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Bundle ) -> Self {
let Bundle { modules : _tmp0 } = value ;
{
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT8 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp1 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 ) ) ;
2021-06-29 14:54:29 +00:00
_tmp1 . finish ( ) . wrap ( )
}
}
}
2021-06-30 07:53:32 +00:00
fn _parse_compound_pattern_rec ( value : & _Any ) -> std ::result ::Result < CompoundPattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT9 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = NamedPattern ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
let _tmp3 = NamedPattern ::try_from ( ( & _tmp0 . fields ( ) [ 1 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( CompoundPattern ::Rec { label : std ::boxed ::Box ::new ( _tmp2 ) , fields : std ::boxed ::Box ::new ( _tmp3 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_compound_pattern_tuple ( value : & _Any ) -> std ::result ::Result < CompoundPattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT10 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
let _tmp3 = ( & _tmp0 . fields ( ) [ 0 ] ) . value ( ) . to_sequence ( ) . map_err ( | _ | ( ) ) ? ;
let mut _tmp2 = std ::vec ::Vec ::new ( ) ;
2021-06-30 07:53:32 +00:00
for _tmp4 in & _tmp3 [ 0 .. ] { let _tmp5 = NamedPattern ::try_from ( _tmp4 . clone ( ) ) ? ; _tmp2 . push ( _tmp5 ) ; }
2021-06-28 20:25:41 +00:00
Ok ( CompoundPattern ::Tuple { patterns : _tmp2 } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_compound_pattern_tuple_prefix ( value : & _Any ) -> std ::result ::Result < CompoundPattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT11 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
let _tmp3 = ( & _tmp0 . fields ( ) [ 0 ] ) . value ( ) . to_sequence ( ) . map_err ( | _ | ( ) ) ? ;
let mut _tmp2 = std ::vec ::Vec ::new ( ) ;
2021-06-30 07:53:32 +00:00
for _tmp4 in & _tmp3 [ 0 .. ] { let _tmp5 = NamedPattern ::try_from ( _tmp4 . clone ( ) ) ? ; _tmp2 . push ( _tmp5 ) ; }
let _tmp6 = NamedSimplePattern ::try_from ( ( & _tmp0 . fields ( ) [ 1 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( CompoundPattern ::TuplePrefix { fixed : _tmp2 , variable : std ::boxed ::Box ::new ( _tmp6 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_compound_pattern_dict ( value : & _Any ) -> std ::result ::Result < CompoundPattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT12 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = DictionaryEntries ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( CompoundPattern ::Dict { entries : std ::boxed ::Box ::new ( _tmp2 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for CompoundPattern {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_compound_pattern_rec ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_compound_pattern_tuple ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_compound_pattern_tuple_prefix ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_compound_pattern_dict ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & CompoundPattern > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & CompoundPattern ) -> Self {
match value {
CompoundPattern ::Rec { label : _tmp0 , fields : _tmp1 } = > {
let mut _tmp2 = preserves ::value ::Record ( vec! [ ( & * LIT9 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp2 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
_tmp2 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp1 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp2 . finish ( ) . wrap ( )
} ,
CompoundPattern ::Tuple { patterns : _tmp0 } = > {
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT10 ) . clone ( ) ] ) ;
_tmp1 . fields_vec_mut ( ) . push (
{
let mut _tmp2 = vec! [ ] ;
2021-06-30 07:53:32 +00:00
for _tmp3 in _tmp0 { _tmp2 . push ( _Any ::from ( _tmp3 ) ) ; }
2021-06-29 14:54:29 +00:00
preserves ::value ::Value ::Sequence ( _tmp2 ) . wrap ( )
}
) ;
_tmp1 . finish ( ) . wrap ( )
} ,
CompoundPattern ::TuplePrefix { fixed : _tmp0 , variable : _tmp1 } = > {
let mut _tmp2 = preserves ::value ::Record ( vec! [ ( & * LIT11 ) . clone ( ) ] ) ;
_tmp2 . fields_vec_mut ( ) . push (
{
let mut _tmp3 = vec! [ ] ;
2021-06-30 07:53:32 +00:00
for _tmp4 in _tmp0 { _tmp3 . push ( _Any ::from ( _tmp4 ) ) ; }
2021-06-29 14:54:29 +00:00
preserves ::value ::Value ::Sequence ( _tmp3 ) . wrap ( )
}
) ;
2021-06-30 07:53:32 +00:00
_tmp2 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp1 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp2 . finish ( ) . wrap ( )
} ,
CompoundPattern ::Dict { entries : _tmp0 } = > {
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT12 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp1 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp1 . finish ( ) . wrap ( )
} ,
}
}
}
2021-06-30 07:53:32 +00:00
fn _parse_definition_or ( value : & _Any ) -> std ::result ::Result < Definition , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT13 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
let _tmp2 = ( & _tmp0 . fields ( ) [ 0 ] ) . value ( ) . to_sequence ( ) . map_err ( | _ | ( ) ) ? ;
if _tmp2 . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp3 = NamedAlternative ::try_from ( ( & _tmp2 [ 0 ] ) . clone ( ) ) ? ;
let _tmp4 = NamedAlternative ::try_from ( ( & _tmp2 [ 1 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
let mut _tmp5 = std ::vec ::Vec ::new ( ) ;
2021-06-30 07:53:32 +00:00
for _tmp6 in & _tmp2 [ 2 .. ] { let _tmp7 = NamedAlternative ::try_from ( _tmp6 . clone ( ) ) ? ; _tmp5 . push ( _tmp7 ) ; }
2021-06-28 14:35:45 +00:00
Ok ( Definition ::Or {
2021-06-28 20:25:41 +00:00
pattern_0 : std ::boxed ::Box ::new ( _tmp3 ) ,
pattern_1 : std ::boxed ::Box ::new ( _tmp4 ) ,
pattern_n : _tmp5
2021-06-28 14:35:45 +00:00
} )
}
2021-06-30 07:53:32 +00:00
fn _parse_definition_and ( value : & _Any ) -> std ::result ::Result < Definition , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT14 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
let _tmp2 = ( & _tmp0 . fields ( ) [ 0 ] ) . value ( ) . to_sequence ( ) . map_err ( | _ | ( ) ) ? ;
if _tmp2 . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp3 = NamedPattern ::try_from ( ( & _tmp2 [ 0 ] ) . clone ( ) ) ? ;
let _tmp4 = NamedPattern ::try_from ( ( & _tmp2 [ 1 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
let mut _tmp5 = std ::vec ::Vec ::new ( ) ;
2021-06-30 07:53:32 +00:00
for _tmp6 in & _tmp2 [ 2 .. ] { let _tmp7 = NamedPattern ::try_from ( _tmp6 . clone ( ) ) ? ; _tmp5 . push ( _tmp7 ) ; }
2021-06-28 14:35:45 +00:00
Ok ( Definition ::And {
2021-06-28 20:25:41 +00:00
pattern_0 : std ::boxed ::Box ::new ( _tmp3 ) ,
pattern_1 : std ::boxed ::Box ::new ( _tmp4 ) ,
pattern_n : _tmp5
2021-06-28 14:35:45 +00:00
} )
}
2021-06-30 07:53:32 +00:00
fn _parse_definition_pattern ( value : & _Any ) -> std ::result ::Result < Definition , ( ) > {
let _tmp0 = Pattern ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( Definition ::Pattern ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Definition {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_definition_or ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_definition_and ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_definition_pattern ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Definition > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Definition ) -> Self {
match value {
Definition ::Or { pattern_0 : _tmp0 , pattern_1 : _tmp1 , pattern_n : _tmp2 } = > {
let mut _tmp3 = preserves ::value ::Record ( vec! [ ( & * LIT13 ) . clone ( ) ] ) ;
_tmp3 . fields_vec_mut ( ) . push (
{
let mut _tmp4 = vec! [ ] ;
2021-06-30 07:53:32 +00:00
_tmp4 . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
_tmp4 . push ( _Any ::from ( _tmp1 . as_ref ( ) ) ) ;
for _tmp5 in _tmp2 { _tmp4 . push ( _Any ::from ( _tmp5 ) ) ; }
2021-06-29 14:54:29 +00:00
preserves ::value ::Value ::Sequence ( _tmp4 ) . wrap ( )
}
) ;
_tmp3 . finish ( ) . wrap ( )
} ,
Definition ::And { pattern_0 : _tmp0 , pattern_1 : _tmp1 , pattern_n : _tmp2 } = > {
let mut _tmp3 = preserves ::value ::Record ( vec! [ ( & * LIT14 ) . clone ( ) ] ) ;
_tmp3 . fields_vec_mut ( ) . push (
{
let mut _tmp4 = vec! [ ] ;
2021-06-30 07:53:32 +00:00
_tmp4 . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
_tmp4 . push ( _Any ::from ( _tmp1 . as_ref ( ) ) ) ;
for _tmp5 in _tmp2 { _tmp4 . push ( _Any ::from ( _tmp5 ) ) ; }
2021-06-29 14:54:29 +00:00
preserves ::value ::Value ::Sequence ( _tmp4 ) . wrap ( )
}
) ;
_tmp3 . finish ( ) . wrap ( )
} ,
2021-06-30 07:53:32 +00:00
Definition ::Pattern ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
2021-06-29 14:54:29 +00:00
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Definitions {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
let mut _tmp0 = preserves ::value ::Map ::new ( ) ;
for ( _tmp1 , _tmp2 ) in value . value ( ) . to_dictionary ( ) . map_err ( | _ | ( ) ) ? {
let _tmp3 = _tmp1 . value ( ) . to_symbol ( ) . map_err ( | _ | ( ) ) ? ;
2021-06-30 07:53:32 +00:00
let _tmp4 = Definition ::try_from ( _tmp2 . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
_tmp0 . insert ( _tmp3 . clone ( ) , _tmp4 ) ;
}
Ok ( Definitions ( _tmp0 ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Definitions > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Definitions ) -> Self {
let Definitions ( _tmp0 ) = value ;
2021-06-30 07:53:32 +00:00
preserves ::value ::Value ::Dictionary ( _tmp0 . iter ( ) . map ( | ( _tmp1 , _tmp2 ) | ( preserves ::value ::Value ::symbol ( _tmp1 ) . wrap ( ) , _Any ::from ( _tmp2 ) ) ) . collect ( ) ) . wrap ( )
2021-06-29 14:54:29 +00:00
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for DictionaryEntries {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
let mut _tmp0 = preserves ::value ::Map ::new ( ) ;
for ( _tmp1 , _tmp2 ) in value . value ( ) . to_dictionary ( ) . map_err ( | _ | ( ) ) ? {
let _tmp3 = _tmp1 ;
2021-06-30 07:53:32 +00:00
let _tmp4 = NamedSimplePattern ::try_from ( _tmp2 . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
_tmp0 . insert ( _tmp3 . clone ( ) , _tmp4 ) ;
}
Ok ( DictionaryEntries ( _tmp0 ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & DictionaryEntries > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & DictionaryEntries ) -> Self {
let DictionaryEntries ( _tmp0 ) = value ;
2021-06-30 07:53:32 +00:00
preserves ::value ::Value ::Dictionary ( _tmp0 . iter ( ) . map ( | ( _tmp1 , _tmp2 ) | ( _tmp1 . clone ( ) , _Any ::from ( _tmp2 ) ) ) . collect ( ) ) . wrap ( )
2021-06-29 14:54:29 +00:00
}
}
2021-06-30 07:53:32 +00:00
fn _parse_embedded_type_name_ref ( value : & _Any ) -> std ::result ::Result < EmbeddedTypeName , ( ) > {
let _tmp0 = Ref ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( EmbeddedTypeName ::Ref ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
fn _parse_embedded_type_name_false ( value : & _Any ) -> std ::result ::Result < EmbeddedTypeName , ( ) > {
2021-06-28 14:35:45 +00:00
if value ! = & * LIT15 { return Err ( ( ) ) ; }
let _tmp0 = ( ) ;
Ok ( EmbeddedTypeName ::False )
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for EmbeddedTypeName {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_embedded_type_name_ref ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_embedded_type_name_false ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & EmbeddedTypeName > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & EmbeddedTypeName ) -> Self {
match value {
2021-06-30 07:53:32 +00:00
EmbeddedTypeName ::Ref ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
2021-06-29 14:54:29 +00:00
EmbeddedTypeName ::False = > ( & * LIT15 ) . clone ( ) ,
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for ModulePath {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
let _tmp1 = value . value ( ) . to_sequence ( ) . map_err ( | _ | ( ) ) ? ;
let mut _tmp0 = std ::vec ::Vec ::new ( ) ;
for _tmp2 in & _tmp1 [ 0 .. ] {
let _tmp3 = _tmp2 . value ( ) . to_symbol ( ) . map_err ( | _ | ( ) ) ? ;
_tmp0 . push ( _tmp3 . clone ( ) ) ;
}
Ok ( ModulePath ( _tmp0 ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & ModulePath > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & ModulePath ) -> Self {
let ModulePath ( _tmp0 ) = value ;
{
let mut _tmp1 = vec! [ ] ;
for _tmp2 in _tmp0 { _tmp1 . push ( preserves ::value ::Value ::symbol ( _tmp2 ) . wrap ( ) ) ; }
preserves ::value ::Value ::Sequence ( _tmp1 ) . wrap ( )
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Modules {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
let mut _tmp0 = preserves ::value ::Map ::new ( ) ;
for ( _tmp1 , _tmp2 ) in value . value ( ) . to_dictionary ( ) . map_err ( | _ | ( ) ) ? {
2021-06-30 07:53:32 +00:00
let _tmp3 = ModulePath ::try_from ( _tmp1 . clone ( ) ) ? ;
let _tmp4 = Schema ::try_from ( _tmp2 . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
_tmp0 . insert ( _tmp3 , _tmp4 ) ;
}
Ok ( Modules ( _tmp0 ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Modules > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Modules ) -> Self {
let Modules ( _tmp0 ) = value ;
2021-06-30 07:53:32 +00:00
preserves ::value ::Value ::Dictionary ( _tmp0 . iter ( ) . map ( | ( _tmp1 , _tmp2 ) | ( _Any ::from ( _tmp1 ) , _Any ::from ( _tmp2 ) ) ) . collect ( ) ) . wrap ( )
2021-06-29 14:54:29 +00:00
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for NamedAlternative {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_sequence ( ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
let _tmp1 = ( & _tmp0 [ 0 ] ) . value ( ) . to_string ( ) . map_err ( | _ | ( ) ) ? ;
2021-06-30 07:53:32 +00:00
let _tmp2 = Pattern ::try_from ( ( & _tmp0 [ 1 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( NamedAlternative { variant_label : _tmp1 . clone ( ) , pattern : _tmp2 } )
2021-06-28 14:35:45 +00:00
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & NamedAlternative > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & NamedAlternative ) -> Self {
let NamedAlternative { variant_label : _tmp0 , pattern : _tmp1 } = value ;
{
let mut _tmp2 = vec! [ ] ;
_tmp2 . push ( preserves ::value ::Value ::from ( _tmp0 ) . wrap ( ) ) ;
2021-06-30 07:53:32 +00:00
_tmp2 . push ( _Any ::from ( _tmp1 ) ) ;
2021-06-29 14:54:29 +00:00
preserves ::value ::Value ::Sequence ( _tmp2 ) . wrap ( )
}
}
}
2021-06-30 07:53:32 +00:00
fn _parse_named_pattern_named ( value : & _Any ) -> std ::result ::Result < NamedPattern , ( ) > {
let _tmp0 = Binding ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( NamedPattern ::Named ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
fn _parse_named_pattern_anonymous ( value : & _Any ) -> std ::result ::Result < NamedPattern , ( ) > {
let _tmp0 = Pattern ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( NamedPattern ::Anonymous ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for NamedPattern {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_named_pattern_named ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_named_pattern_anonymous ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & NamedPattern > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & NamedPattern ) -> Self {
match value {
2021-06-30 07:53:32 +00:00
NamedPattern ::Named ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
NamedPattern ::Anonymous ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
2021-06-29 14:54:29 +00:00
}
}
}
2021-06-30 07:53:32 +00:00
fn _parse_named_simple_pattern_named ( value : & _Any ) -> std ::result ::Result < NamedSimplePattern , ( ) > {
let _tmp0 = Binding ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( NamedSimplePattern ::Named ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
fn _parse_named_simple_pattern_anonymous ( value : & _Any ) -> std ::result ::Result < NamedSimplePattern , ( ) > {
let _tmp0 = SimplePattern ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( NamedSimplePattern ::Anonymous ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for NamedSimplePattern {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_named_simple_pattern_named ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_named_simple_pattern_anonymous ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & NamedSimplePattern > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & NamedSimplePattern ) -> Self {
match value {
2021-06-30 07:53:32 +00:00
NamedSimplePattern ::Named ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
NamedSimplePattern ::Anonymous ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
2021-06-29 14:54:29 +00:00
}
}
}
2021-06-30 07:53:32 +00:00
fn _parse_pattern_simple_pattern ( value : & _Any ) -> std ::result ::Result < Pattern , ( ) > {
let _tmp0 = SimplePattern ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( Pattern ::SimplePattern ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
fn _parse_pattern_compound_pattern ( value : & _Any ) -> std ::result ::Result < Pattern , ( ) > {
let _tmp0 = CompoundPattern ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( Pattern ::CompoundPattern ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Pattern {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_pattern_simple_pattern ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_pattern_compound_pattern ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Pattern > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Pattern ) -> Self {
match value {
2021-06-30 07:53:32 +00:00
Pattern ::SimplePattern ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
Pattern ::CompoundPattern ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
2021-06-29 14:54:29 +00:00
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Ref {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT16 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = ModulePath ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
let _tmp3 = ( & _tmp0 . fields ( ) [ 1 ] ) . value ( ) . to_symbol ( ) . map_err ( | _ | ( ) ) ? ;
Ok ( Ref { module : _tmp2 , name : _tmp3 . clone ( ) } )
2021-06-28 14:35:45 +00:00
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Ref > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Ref ) -> Self {
let Ref { module : _tmp0 , name : _tmp1 } = value ;
{
let mut _tmp2 = preserves ::value ::Record ( vec! [ ( & * LIT16 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp2 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 ) ) ;
2021-06-29 14:54:29 +00:00
_tmp2 . fields_vec_mut ( ) . push ( preserves ::value ::Value ::symbol ( _tmp1 ) . wrap ( ) ) ;
_tmp2 . finish ( ) . wrap ( )
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Schema {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT17 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
let _tmp2 = ( & _tmp0 . fields ( ) [ 0 ] ) . value ( ) . to_dictionary ( ) . map_err ( | _ | ( ) ) ? ;
let _tmp3 = _tmp2 . get ( & * LIT18 ) . ok_or ( ( ) ) ? ;
2021-06-30 07:53:32 +00:00
let _tmp4 = Definitions ::try_from ( _tmp3 . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
let _tmp5 = _tmp2 . get ( & * LIT19 ) . ok_or ( ( ) ) ? ;
2021-06-30 07:53:32 +00:00
let _tmp6 = EmbeddedTypeName ::try_from ( _tmp5 . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
let _tmp7 = _tmp2 . get ( & * LIT20 ) . ok_or ( ( ) ) ? ;
2021-06-30 07:53:32 +00:00
let _tmp8 = Version ::try_from ( _tmp7 . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( Schema { definitions : _tmp4 , embedded_type : _tmp6 , version : _tmp8 } )
2021-06-28 14:35:45 +00:00
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Schema > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & Schema ) -> Self {
let Schema { definitions : _tmp0 , embedded_type : _tmp1 , version : _tmp2 } = value ;
{
let mut _tmp3 = preserves ::value ::Record ( vec! [ ( & * LIT17 ) . clone ( ) ] ) ;
_tmp3 . fields_vec_mut ( ) . push (
{
let mut _tmp4 = preserves ::value ::Map ::new ( ) ;
2021-06-30 07:53:32 +00:00
_tmp4 . insert ( ( & * LIT18 ) . clone ( ) , _Any ::from ( _tmp0 ) ) ;
_tmp4 . insert ( ( & * LIT19 ) . clone ( ) , _Any ::from ( _tmp1 ) ) ;
_tmp4 . insert ( ( & * LIT20 ) . clone ( ) , _Any ::from ( _tmp2 ) ) ;
2021-06-29 14:54:29 +00:00
preserves ::value ::Value ::Dictionary ( _tmp4 ) . wrap ( )
}
) ;
_tmp3 . finish ( ) . wrap ( )
}
}
}
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_any ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > { if value ! = & * LIT21 { return Err ( ( ) ) ; } let _tmp0 = ( ) ; Ok ( SimplePattern ::Any ) }
2021-06-28 14:35:45 +00:00
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_atom ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT22 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = AtomKind ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( SimplePattern ::Atom { atom_kind : std ::boxed ::Box ::new ( _tmp2 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_embedded ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT23 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = SimplePattern ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( SimplePattern ::Embedded { interface : std ::boxed ::Box ::new ( _tmp2 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_lit ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT24 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
let _tmp2 = ( & _tmp0 . fields ( ) [ 0 ] ) ;
Ok ( SimplePattern ::Lit { value : _tmp2 . clone ( ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_seqof ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT25 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = SimplePattern ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( SimplePattern ::Seqof { pattern : std ::boxed ::Box ::new ( _tmp2 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_setof ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT26 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 1 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = SimplePattern ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( SimplePattern ::Setof { pattern : std ::boxed ::Box ::new ( _tmp2 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_dictof ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > {
2021-06-28 20:25:41 +00:00
let _tmp0 = value . value ( ) . to_record ( None ) . map_err ( | _ | ( ) ) ? ;
if _tmp0 . label ( ) ! = & * LIT27 { return Err ( ( ) ) ; }
let _tmp1 = ( ) ;
if _tmp0 . fields ( ) . len ( ) - 0 < 2 { return Err ( ( ) ) ; }
2021-06-30 07:53:32 +00:00
let _tmp2 = SimplePattern ::try_from ( ( & _tmp0 . fields ( ) [ 0 ] ) . clone ( ) ) ? ;
let _tmp3 = SimplePattern ::try_from ( ( & _tmp0 . fields ( ) [ 1 ] ) . clone ( ) ) ? ;
2021-06-28 20:25:41 +00:00
Ok ( SimplePattern ::Dictof { key : std ::boxed ::Box ::new ( _tmp2 ) , value : std ::boxed ::Box ::new ( _tmp3 ) } )
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
fn _parse_simple_pattern_ref ( value : & _Any ) -> std ::result ::Result < SimplePattern , ( ) > {
let _tmp0 = Ref ::try_from ( value . clone ( ) ) ? ;
2021-06-28 14:35:45 +00:00
Ok ( SimplePattern ::Ref ( std ::boxed ::Box ::new ( _tmp0 ) ) )
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for SimplePattern {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
2021-06-28 14:35:45 +00:00
if let Ok ( r ) = _parse_simple_pattern_any ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_simple_pattern_atom ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_simple_pattern_embedded ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_simple_pattern_lit ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_simple_pattern_seqof ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_simple_pattern_setof ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_simple_pattern_dictof ( value ) { return Ok ( r ) ; }
if let Ok ( r ) = _parse_simple_pattern_ref ( value ) { return Ok ( r ) ; }
Err ( ( ) )
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & SimplePattern > for _Any {
2021-06-29 14:54:29 +00:00
fn from ( value : & SimplePattern ) -> Self {
match value {
SimplePattern ::Any = > ( & * LIT21 ) . clone ( ) ,
SimplePattern ::Atom { atom_kind : _tmp0 } = > {
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT22 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp1 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp1 . finish ( ) . wrap ( )
} ,
SimplePattern ::Embedded { interface : _tmp0 } = > {
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT23 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp1 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp1 . finish ( ) . wrap ( )
} ,
SimplePattern ::Lit { value : _tmp0 } = > {
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT24 ) . clone ( ) ] ) ;
_tmp1 . fields_vec_mut ( ) . push ( _tmp0 . clone ( ) ) ;
_tmp1 . finish ( ) . wrap ( )
} ,
SimplePattern ::Seqof { pattern : _tmp0 } = > {
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT25 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp1 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp1 . finish ( ) . wrap ( )
} ,
SimplePattern ::Setof { pattern : _tmp0 } = > {
let mut _tmp1 = preserves ::value ::Record ( vec! [ ( & * LIT26 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp1 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp1 . finish ( ) . wrap ( )
} ,
SimplePattern ::Dictof { key : _tmp0 , value : _tmp1 } = > {
let mut _tmp2 = preserves ::value ::Record ( vec! [ ( & * LIT27 ) . clone ( ) ] ) ;
2021-06-30 07:53:32 +00:00
_tmp2 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp0 . as_ref ( ) ) ) ;
_tmp2 . fields_vec_mut ( ) . push ( _Any ::from ( _tmp1 . as_ref ( ) ) ) ;
2021-06-29 14:54:29 +00:00
_tmp2 . finish ( ) . wrap ( )
} ,
2021-06-30 07:53:32 +00:00
SimplePattern ::Ref ( _tmp0 ) = > _Any ::from ( _tmp0 . as_ref ( ) ) ,
2021-06-29 14:54:29 +00:00
}
}
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::TryFrom < _Any > for Version {
2021-06-28 14:35:45 +00:00
type Error = ( ) ;
2021-06-30 07:53:32 +00:00
fn try_from ( value : _Any ) -> std ::result ::Result < Self , Self ::Error > {
let value = & value ;
if value ! = & * LIT28 { return Err ( ( ) ) ; }
let _tmp0 = ( ) ;
Ok ( Version )
}
2021-06-28 14:35:45 +00:00
}
2021-06-30 07:53:32 +00:00
impl std ::convert ::From < & Version > for _Any { fn from ( value : & Version ) -> Self { let Version = value ; ( & * LIT28 ) . clone ( ) } }
2021-06-29 14:54:29 +00:00