Update implementations
This commit is contained in:
parent
f5d7fde6f8
commit
d73118fc77
File diff suppressed because one or more lines are too long
|
@ -5,4 +5,4 @@ ByteString
|
|||
ByteString„„µ±Symbol´³lit³Symbol„„„„³
|
||||
Definition´³orµµ±or´³rec´³lit³or„´³tupleµ´³tuplePrefixµ´³named³pattern0´³refµ„³NamedAlternative„„´³named³pattern1´³refµ„³NamedAlternative„„„´³named³patternN´³seqof´³refµ„³NamedAlternative„„„„„„„„µ±and´³rec´³lit³and„´³tupleµ´³tuplePrefixµ´³named³pattern0´³refµ„³NamedPattern„„´³named³pattern1´³refµ„³NamedPattern„„„´³named³patternN´³seqof´³refµ„³NamedPattern„„„„„„„„µ±Pattern´³refµ„³Pattern„„„„³
|
||||
ModulePath´³seqof´³atom³Symbol„„³Definitions´³dictof´³atom³Symbol„´³refµ„³
|
||||
Definition„„³NamedPattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³Pattern„„„„³
SimplePattern´³orµµ±any´³lit³any„„µ±atom´³rec´³lit³atom„´³tupleµ´³named³atomKind´³refµ„³AtomKind„„„„„„µ±embedded´³rec´³lit³embedded„´³tupleµ´³named³ interface´³refµ„³
SimplePattern„„„„„„µ±lit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„„µ±seqof´³rec´³lit³seqof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±setof´³rec´³lit³setof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±dictof´³rec´³lit³dictof„´³tupleµ´³named³key´³refµ„³
SimplePattern„„´³named³value´³refµ„³
SimplePattern„„„„„„µ±Ref´³refµ„³Ref„„„„³CompoundPattern´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label´³refµ„³NamedPattern„„´³named³fields´³refµ„³NamedPattern„„„„„„µ±tuple´³rec´³lit³tuple„´³tupleµ´³named³patterns´³seqof´³refµ„³NamedPattern„„„„„„„µ±tuplePrefix´³rec´³lit³tuplePrefix„´³tupleµ´³named³fixed´³seqof´³refµ„³NamedPattern„„„´³named³variable´³refµ„³NamedSimplePattern„„„„„„µ±dict´³rec´³lit³dict„´³tupleµ´³named³entries´³refµ„³DictionaryEntries„„„„„„„„³EmbeddedTypeName´³orµµ±Ref´³refµ„³Ref„„µ±false´³lit€„„„„³NamedAlternative´³tupleµ´³named³variantLabel´³atom³String„„´³named³pattern´³refµ„³Pattern„„„„³DictionaryEntries´³dictof³any´³refµ„³NamedSimplePattern„„³NamedSimplePattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³
SimplePattern„„„„„³embeddedType€„„
|
||||
Definition„„³NamedPattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³Pattern„„„„³
SimplePattern´³orµµ±any´³lit³any„„µ±atom´³rec´³lit³atom„´³tupleµ´³named³atomKind´³refµ„³AtomKind„„„„„„µ±embedded´³rec´³lit³embedded„´³tupleµ´³named³ interface´³refµ„³
SimplePattern„„„„„„µ±lit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„„µ±seqof´³rec´³lit³seqof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±setof´³rec´³lit³setof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±dictof´³rec´³lit³dictof„´³tupleµ´³named³key´³refµ„³
SimplePattern„„´³named³value´³refµ„³
SimplePattern„„„„„„µ±Ref´³refµ„³Ref„„„„³CompoundPattern´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label´³refµ„³NamedPattern„„´³named³fields´³refµ„³NamedPattern„„„„„„µ±tuple´³rec´³lit³tuple„´³tupleµ´³named³patterns´³seqof´³refµ„³NamedPattern„„„„„„„µ±tuplePrefix´³rec´³lit³tuplePrefix„´³tupleµ´³named³fixed´³seqof´³refµ„³NamedPattern„„„´³named³variable´³refµ„³NamedSimplePattern„„„„„„µ±dict´³rec´³lit³dict„´³tupleµ´³named³entries´³refµ„³DictionaryEntries„„„„„„„„³EmbeddedTypeName´³orµµ±false´³lit€„„µ±Ref´³refµ„³Ref„„„„³NamedAlternative´³tupleµ´³named³variantLabel´³atom³String„„´³named³pattern´³refµ„³Pattern„„„„³DictionaryEntries´³dictof³any´³refµ„³NamedSimplePattern„„³NamedSimplePattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³
SimplePattern„„„„„³embeddedType€„„
|
|
@ -370,16 +370,7 @@
|
|||
(define parse-DictionaryEntries!
|
||||
(parse-success-or-error 'parse-DictionaryEntries parse-DictionaryEntries))
|
||||
(define (EmbeddedTypeName? p)
|
||||
(or (EmbeddedTypeName-Ref? p) (EmbeddedTypeName-false? p)))
|
||||
(struct
|
||||
EmbeddedTypeName-Ref
|
||||
(value)
|
||||
#:transparent
|
||||
#:methods
|
||||
gen:preservable
|
||||
((define/generic *->preserve ->preserve)
|
||||
(define (->preserve preservable)
|
||||
(match preservable ((EmbeddedTypeName-Ref src) (*->preserve src))))))
|
||||
(or (EmbeddedTypeName-false? p) (EmbeddedTypeName-Ref? p)))
|
||||
(struct
|
||||
EmbeddedTypeName-false
|
||||
()
|
||||
|
@ -389,11 +380,20 @@
|
|||
((define/generic *->preserve ->preserve)
|
||||
(define (->preserve preservable)
|
||||
(match preservable ((EmbeddedTypeName-false) '#f)))))
|
||||
(struct
|
||||
EmbeddedTypeName-Ref
|
||||
(value)
|
||||
#:transparent
|
||||
#:methods
|
||||
gen:preservable
|
||||
((define/generic *->preserve ->preserve)
|
||||
(define (->preserve preservable)
|
||||
(match preservable ((EmbeddedTypeName-Ref src) (*->preserve src))))))
|
||||
(define (parse-EmbeddedTypeName input)
|
||||
(match
|
||||
input
|
||||
((app parse-Ref (and dest (not (== eof)))) (EmbeddedTypeName-Ref dest))
|
||||
((and dest (== '#f)) (EmbeddedTypeName-false))
|
||||
((app parse-Ref (and dest (not (== eof)))) (EmbeddedTypeName-Ref dest))
|
||||
(_ eof)))
|
||||
(define parse-EmbeddedTypeName!
|
||||
(parse-success-or-error 'parse-EmbeddedTypeName parse-EmbeddedTypeName))
|
||||
|
|
|
@ -17,7 +17,7 @@ Schema = <schema {
|
|||
; version 1 .
|
||||
Version = 1 .
|
||||
|
||||
EmbeddedTypeName = Ref / #f.
|
||||
EmbeddedTypeName = #f / Ref .
|
||||
|
||||
Definitions = { symbol: Definition ...:... }.
|
||||
|
||||
|
|
|
@ -239,9 +239,9 @@ pub fn _bundle() -> &'static [u8] {
|
|||
\x63\x74\x69\x6f\x6e\x61\x72\x79\x45\x6e\x74\x72\x69\x65\x73\x84\
|
||||
\x84\x84\x84\x84\x84\x84\x84\xb3\x10\x45\x6d\x62\x65\x64\x64\x65\
|
||||
\x64\x54\x79\x70\x65\x4e\x61\x6d\x65\xb4\xb3\x02\x6f\x72\xb5\xb5\
|
||||
\xb1\x03\x52\x65\x66\xb4\xb3\x03\x72\x65\x66\xb5\x84\xb3\x03\x52\
|
||||
\x65\x66\x84\x84\xb5\xb1\x05\x66\x61\x6c\x73\x65\xb4\xb3\x03\x6c\
|
||||
\x69\x74\x80\x84\x84\x84\x84\xb3\x10\x4e\x61\x6d\x65\x64\x41\x6c\
|
||||
\xb1\x05\x66\x61\x6c\x73\x65\xb4\xb3\x03\x6c\x69\x74\x80\x84\x84\
|
||||
\xb5\xb1\x03\x52\x65\x66\xb4\xb3\x03\x72\x65\x66\xb5\x84\xb3\x03\
|
||||
\x52\x65\x66\x84\x84\x84\x84\xb3\x10\x4e\x61\x6d\x65\x64\x41\x6c\
|
||||
\x74\x65\x72\x6e\x61\x74\x69\x76\x65\xb4\xb3\x05\x74\x75\x70\x6c\
|
||||
\x65\xb5\xb4\xb3\x05\x6e\x61\x6d\x65\x64\xb3\x0c\x76\x61\x72\x69\
|
||||
\x61\x6e\x74\x4c\x61\x62\x65\x6c\xb4\xb3\x04\x61\x74\x6f\x6d\xb3\
|
||||
|
|
|
@ -944,17 +944,12 @@ impl<
|
|||
|
||||
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
|
||||
pub enum EmbeddedTypeName {
|
||||
Ref(std::boxed::Box<Ref>),
|
||||
False
|
||||
False,
|
||||
Ref(std::boxed::Box<Ref>)
|
||||
}
|
||||
|
||||
impl preserves::value::Domain for EmbeddedTypeName {}
|
||||
|
||||
fn read_embedded_type_name_ref<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
|
||||
let _tmp0 = Ref::deserialize(r)?;
|
||||
Ok(EmbeddedTypeName::Ref(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
fn read_embedded_type_name_false<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
|
||||
match r.next_token(true)? {
|
||||
preserves::value::Token::Atom(v) => match v.value() {
|
||||
|
@ -967,24 +962,20 @@ fn read_embedded_type_name_false<'de, _Value: preserves::value::NestedValue, R:
|
|||
Ok(EmbeddedTypeName::False)
|
||||
}
|
||||
|
||||
fn read_embedded_type_name_ref<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
|
||||
let _tmp0 = Ref::deserialize(r)?;
|
||||
Ok(EmbeddedTypeName::Ref(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for EmbeddedTypeName {
|
||||
fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
|
||||
let _mark = r.mark()?;
|
||||
match read_embedded_type_name_ref(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
|
||||
match read_embedded_type_name_false(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
|
||||
match read_embedded_type_name_ref(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
|
||||
Err(_support::ParseError::conformance_error("schema.EmbeddedTypeName"))
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_embedded_type_name_ref<
|
||||
'a,
|
||||
_L: Copy + Into<&'a crate::gen::Language<_Value>>,
|
||||
_Value: preserves::value::NestedValue + 'a
|
||||
>(_ctxt: _L, value: &_Value) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
|
||||
let _tmp0 = Ref::parse(_ctxt, value)?;
|
||||
Ok(EmbeddedTypeName::Ref(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
fn parse_embedded_type_name_false<
|
||||
'a,
|
||||
_L: Copy + Into<&'a crate::gen::Language<_Value>>,
|
||||
|
@ -995,14 +986,23 @@ fn parse_embedded_type_name_false<
|
|||
Ok(EmbeddedTypeName::False)
|
||||
}
|
||||
|
||||
fn parse_embedded_type_name_ref<
|
||||
'a,
|
||||
_L: Copy + Into<&'a crate::gen::Language<_Value>>,
|
||||
_Value: preserves::value::NestedValue + 'a
|
||||
>(_ctxt: _L, value: &_Value) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
|
||||
let _tmp0 = Ref::parse(_ctxt, value)?;
|
||||
Ok(EmbeddedTypeName::Ref(std::boxed::Box::new(_tmp0)))
|
||||
}
|
||||
|
||||
impl<
|
||||
'a,
|
||||
_L: Copy + Into<&'a crate::gen::Language<_Value>>,
|
||||
_Value: preserves::value::NestedValue + 'a
|
||||
> _support::Parse<_L, _Value> for EmbeddedTypeName {
|
||||
fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
|
||||
if let Ok(r) = parse_embedded_type_name_ref(_ctxt, value) { return Ok(r); }
|
||||
if let Ok(r) = parse_embedded_type_name_false(_ctxt, value) { return Ok(r); }
|
||||
if let Ok(r) = parse_embedded_type_name_ref(_ctxt, value) { return Ok(r); }
|
||||
Err(_support::ParseError::conformance_error("schema.EmbeddedTypeName"))
|
||||
}
|
||||
}
|
||||
|
@ -1014,8 +1014,8 @@ impl<
|
|||
> _support::Unparse<_L, _Value> for EmbeddedTypeName {
|
||||
fn unparse(&self, _ctxt: _L) -> _Value {
|
||||
match self {
|
||||
EmbeddedTypeName::Ref(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
|
||||
EmbeddedTypeName::False => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_15_FALSE).clone(),
|
||||
EmbeddedTypeName::Ref(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue