1#![allow(unused_parens)]
2#![allow(unused_imports)]
3#![cfg_attr(rustfmt, rustfmt_skip)]
4
5use std::convert::TryFrom;
6use crate::support as _support;
7use _support::Deserialize;
8use _support::Parse;
9use _support::Unparse;
10use _support::preserves;
11use preserves::value::Domain;
12use preserves::value::NestedValue;
13
14#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
15pub enum AtomKind {
16 Boolean,
17 Double,
18 SignedInteger,
19 String,
20 ByteString,
21 Symbol
22}
23
24impl preserves::value::Domain for AtomKind {}
25
26fn read_atom_kind_boolean<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<AtomKind, _support::ParseError> {
27 match r.next_token(true)? {
28 preserves::value::Token::Atom(v) => match v.value() {
29 preserves::value::Value::Symbol(w) if w == "Boolean" => {}
30 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::Boolean"))?,
31 }
32 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::Boolean"))?,
33 }
34 let _tmp0 = ();
35 Ok(AtomKind::Boolean)
36}
37
38fn read_atom_kind_double<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<AtomKind, _support::ParseError> {
39 match r.next_token(true)? {
40 preserves::value::Token::Atom(v) => match v.value() {
41 preserves::value::Value::Symbol(w) if w == "Double" => {}
42 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::Double"))?,
43 }
44 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::Double"))?,
45 }
46 let _tmp0 = ();
47 Ok(AtomKind::Double)
48}
49
50fn read_atom_kind_signed_integer<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<AtomKind, _support::ParseError> {
51 match r.next_token(true)? {
52 preserves::value::Token::Atom(v) => match v.value() {
53 preserves::value::Value::Symbol(w) if w == "SignedInteger" => {}
54 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::SignedInteger"))?,
55 }
56 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::SignedInteger"))?,
57 }
58 let _tmp0 = ();
59 Ok(AtomKind::SignedInteger)
60}
61
62fn read_atom_kind_string<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<AtomKind, _support::ParseError> {
63 match r.next_token(true)? {
64 preserves::value::Token::Atom(v) => match v.value() {
65 preserves::value::Value::Symbol(w) if w == "String" => {}
66 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::String"))?,
67 }
68 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::String"))?,
69 }
70 let _tmp0 = ();
71 Ok(AtomKind::String)
72}
73
74fn read_atom_kind_byte_string<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<AtomKind, _support::ParseError> {
75 match r.next_token(true)? {
76 preserves::value::Token::Atom(v) => match v.value() {
77 preserves::value::Value::Symbol(w) if w == "ByteString" => {}
78 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::ByteString"))?,
79 }
80 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::ByteString"))?,
81 }
82 let _tmp0 = ();
83 Ok(AtomKind::ByteString)
84}
85
86fn read_atom_kind_symbol<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<AtomKind, _support::ParseError> {
87 match r.next_token(true)? {
88 preserves::value::Token::Atom(v) => match v.value() {
89 preserves::value::Value::Symbol(w) if w == "Symbol" => {}
90 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::Symbol"))?,
91 }
92 _ => return Err(_support::ParseError::conformance_error("schema.AtomKind::Symbol"))?,
93 }
94 let _tmp0 = ();
95 Ok(AtomKind::Symbol)
96}
97
98impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for AtomKind {
99 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
100 let _mark = r.mark()?;
101 match read_atom_kind_boolean(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
102 match read_atom_kind_double(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
103 match read_atom_kind_signed_integer(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
104 match read_atom_kind_string(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
105 match read_atom_kind_byte_string(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
106 match read_atom_kind_symbol(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
107 Err(_support::ParseError::conformance_error("schema.AtomKind"))
108 }
109}
110
111fn parse_atom_kind_boolean<
112 'a,
113 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
114 _Value: preserves::value::NestedValue + 'a
115>(_ctxt: _L, value: &_Value) -> std::result::Result<AtomKind, _support::ParseError> {
116 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_0_BOOLEAN { return Err(_support::ParseError::conformance_error("schema.AtomKind::Boolean")); }
117 let _tmp0 = ();
118 Ok(AtomKind::Boolean)
119}
120
121fn parse_atom_kind_double<
122 'a,
123 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
124 _Value: preserves::value::NestedValue + 'a
125>(_ctxt: _L, value: &_Value) -> std::result::Result<AtomKind, _support::ParseError> {
126 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_1_DOUBLE { return Err(_support::ParseError::conformance_error("schema.AtomKind::Double")); }
127 let _tmp0 = ();
128 Ok(AtomKind::Double)
129}
130
131fn parse_atom_kind_signed_integer<
132 'a,
133 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
134 _Value: preserves::value::NestedValue + 'a
135>(_ctxt: _L, value: &_Value) -> std::result::Result<AtomKind, _support::ParseError> {
136 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_2_SIGNED_INTEGER { return Err(_support::ParseError::conformance_error("schema.AtomKind::SignedInteger")); }
137 let _tmp0 = ();
138 Ok(AtomKind::SignedInteger)
139}
140
141fn parse_atom_kind_string<
142 'a,
143 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
144 _Value: preserves::value::NestedValue + 'a
145>(_ctxt: _L, value: &_Value) -> std::result::Result<AtomKind, _support::ParseError> {
146 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_3_STRING { return Err(_support::ParseError::conformance_error("schema.AtomKind::String")); }
147 let _tmp0 = ();
148 Ok(AtomKind::String)
149}
150
151fn parse_atom_kind_byte_string<
152 'a,
153 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
154 _Value: preserves::value::NestedValue + 'a
155>(_ctxt: _L, value: &_Value) -> std::result::Result<AtomKind, _support::ParseError> {
156 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_4_BYTE_STRING { return Err(_support::ParseError::conformance_error("schema.AtomKind::ByteString")); }
157 let _tmp0 = ();
158 Ok(AtomKind::ByteString)
159}
160
161fn parse_atom_kind_symbol<
162 'a,
163 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
164 _Value: preserves::value::NestedValue + 'a
165>(_ctxt: _L, value: &_Value) -> std::result::Result<AtomKind, _support::ParseError> {
166 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_5_SYMBOL { return Err(_support::ParseError::conformance_error("schema.AtomKind::Symbol")); }
167 let _tmp0 = ();
168 Ok(AtomKind::Symbol)
169}
170
171impl<
172 'a,
173 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
174 _Value: preserves::value::NestedValue + 'a
175> _support::Parse<_L, _Value> for AtomKind {
176 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
177 if let Ok(r) = parse_atom_kind_boolean(_ctxt, value) { return Ok(r); }
178 if let Ok(r) = parse_atom_kind_double(_ctxt, value) { return Ok(r); }
179 if let Ok(r) = parse_atom_kind_signed_integer(_ctxt, value) { return Ok(r); }
180 if let Ok(r) = parse_atom_kind_string(_ctxt, value) { return Ok(r); }
181 if let Ok(r) = parse_atom_kind_byte_string(_ctxt, value) { return Ok(r); }
182 if let Ok(r) = parse_atom_kind_symbol(_ctxt, value) { return Ok(r); }
183 Err(_support::ParseError::conformance_error("schema.AtomKind"))
184 }
185}
186
187impl<
188 'a,
189 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
190 _Value: preserves::value::NestedValue + 'a
191> _support::Unparse<_L, _Value> for AtomKind {
192 fn unparse(&self, _ctxt: _L) -> _Value {
193 match self {
194 AtomKind::Boolean => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_0_BOOLEAN).clone(),
195 AtomKind::Double => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_1_DOUBLE).clone(),
196 AtomKind::SignedInteger => (
197 &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_2_SIGNED_INTEGER
198 ).clone(),
199 AtomKind::String => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_3_STRING).clone(),
200 AtomKind::ByteString => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_4_BYTE_STRING).clone(),
201 AtomKind::Symbol => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_5_SYMBOL).clone(),
202 }
203 }
204}
205
206#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
207pub struct Binding<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
208 pub name: std::string::String,
209 pub pattern: SimplePattern<_Value>
210}
211
212impl<_Value: preserves::value::NestedValue> preserves::value::Domain for Binding<_Value> {}
213
214impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Binding<_Value> {
215 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
216 r.open_record(None)?;
217 let mut _tmp0 = _support::B::Type::default();
218 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {return Err(_support::ParseError::conformance_error("schema.Binding"));}
219 match r.next_token(true)? {
220 preserves::value::Token::Atom(v) => match v.value() {
221 preserves::value::Value::Symbol(w) if w == "named" => {}
222 _ => return Err(_support::ParseError::conformance_error("schema.Binding"))?,
223 }
224 _ => return Err(_support::ParseError::conformance_error("schema.Binding"))?,
225 }
226 let _tmp1 = ();
227 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Binding"));}
228 let _tmp2 = r.next_symbol()?.into_owned();
229 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Binding"));}
230 let _tmp3 = SimplePattern::deserialize(r)?;
231 r.ensure_complete(_tmp0)?;
232 Ok(Binding {name: _tmp2, pattern: _tmp3})
233 }
234}
235
236impl<
237 'a,
238 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
239 _Value: preserves::value::NestedValue + 'a
240> _support::Parse<_L, _Value> for Binding<_Value> {
241 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
242 let _tmp0 = value.value().to_record(None)?;
243 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_6_NAMED { return Err(_support::ParseError::conformance_error("schema.Binding")); }
244 let _tmp1 = ();
245 if _tmp0.fields().len() < 2 { return Err(_support::ParseError::conformance_error("schema.Binding")); }
246 let _tmp2 = (&_tmp0.fields()[0]).value().to_symbol()?;
247 let _tmp3 = SimplePattern::parse(_ctxt, (&_tmp0.fields()[1]))?;
248 Ok(Binding {name: _tmp2.clone(), pattern: _tmp3})
249 }
250}
251
252impl<
253 'a,
254 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
255 _Value: preserves::value::NestedValue + 'a
256> _support::Unparse<_L, _Value> for Binding<_Value> {
257 fn unparse(&self, _ctxt: _L) -> _Value {
258 let Binding {name: _tmp0, pattern: _tmp1} = self;
259 {
260 let mut _tmp2 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_6_NAMED).clone()]);
261 _tmp2.fields_vec_mut().push(preserves::value::Value::symbol(_tmp0).wrap());
262 _tmp2.fields_vec_mut().push(_tmp1.unparse(_ctxt));
263 _tmp2.finish().wrap()
264 }
265 }
266}
267
268#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
269pub struct Bundle<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
270 pub modules: Modules<_Value>
271}
272
273impl<_Value: preserves::value::NestedValue> preserves::value::Domain for Bundle<_Value> {}
274
275impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Bundle<_Value> {
276 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
277 r.open_record(None)?;
278 let mut _tmp0 = _support::B::Type::default();
279 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {return Err(_support::ParseError::conformance_error("schema.Bundle"));}
280 match r.next_token(true)? {
281 preserves::value::Token::Atom(v) => match v.value() {
282 preserves::value::Value::Symbol(w) if w == "bundle" => {}
283 _ => return Err(_support::ParseError::conformance_error("schema.Bundle"))?,
284 }
285 _ => return Err(_support::ParseError::conformance_error("schema.Bundle"))?,
286 }
287 let _tmp1 = ();
288 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Bundle"));}
289 let _tmp2 = Modules::deserialize(r)?;
290 r.ensure_complete(_tmp0)?;
291 Ok(Bundle {modules: _tmp2})
292 }
293}
294
295impl<
296 'a,
297 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
298 _Value: preserves::value::NestedValue + 'a
299> _support::Parse<_L, _Value> for Bundle<_Value> {
300 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
301 let _tmp0 = value.value().to_record(None)?;
302 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_7_BUNDLE { return Err(_support::ParseError::conformance_error("schema.Bundle")); }
303 let _tmp1 = ();
304 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.Bundle")); }
305 let _tmp2 = Modules::parse(_ctxt, (&_tmp0.fields()[0]))?;
306 Ok(Bundle {modules: _tmp2})
307 }
308}
309
310impl<
311 'a,
312 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
313 _Value: preserves::value::NestedValue + 'a
314> _support::Unparse<_L, _Value> for Bundle<_Value> {
315 fn unparse(&self, _ctxt: _L) -> _Value {
316 let Bundle {modules: _tmp0} = self;
317 {
318 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_7_BUNDLE).clone()]);
319 _tmp1.fields_vec_mut().push(_tmp0.unparse(_ctxt));
320 _tmp1.finish().wrap()
321 }
322 }
323}
324
325#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
326pub enum CompoundPattern<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
327 Rec {
328 label: std::boxed::Box<NamedPattern<_Value>>,
329 fields: std::boxed::Box<NamedPattern<_Value>>
330 },
331 Tuple {
332 patterns: std::vec::Vec<NamedPattern<_Value>>
333 },
334 TuplePrefix {
335 fixed: std::vec::Vec<NamedPattern<_Value>>,
336 variable: std::boxed::Box<NamedSimplePattern<_Value>>
337 },
338 Dict {
339 entries: std::boxed::Box<DictionaryEntries<_Value>>
340 }
341}
342
343impl<_Value: preserves::value::NestedValue> preserves::value::Domain for CompoundPattern<_Value> {}
344
345fn read_compound_pattern_rec<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
346 r.open_record(None)?;
347 let mut _tmp0 = _support::B::Type::default();
348 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
349 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::rec"));
350 }
351 match r.next_token(true)? {
352 preserves::value::Token::Atom(v) => match v.value() {
353 preserves::value::Value::Symbol(w) if w == "rec" => {}
354 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::rec"))?,
355 }
356 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::rec"))?,
357 }
358 let _tmp1 = ();
359 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
360 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::rec"));
361 }
362 let _tmp2 = NamedPattern::deserialize(r)?;
363 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
364 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::rec"));
365 }
366 let _tmp3 = NamedPattern::deserialize(r)?;
367 r.ensure_complete(_tmp0)?;
368 Ok(CompoundPattern::Rec {label: std::boxed::Box::new(_tmp2), fields: std::boxed::Box::new(_tmp3)})
369}
370
371fn read_compound_pattern_tuple<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
372 r.open_record(None)?;
373 let mut _tmp0 = _support::B::Type::default();
374 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
375 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuple"));
376 }
377 match r.next_token(true)? {
378 preserves::value::Token::Atom(v) => match v.value() {
379 preserves::value::Value::Symbol(w) if w == "tuple" => {}
380 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuple"))?,
381 }
382 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuple"))?,
383 }
384 let _tmp1 = ();
385 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
386 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuple"));
387 }
388 r.open_sequence()?;
389 let mut _tmp4 = _support::B::Type::default();
390 let mut _tmp3 = std::vec::Vec::new();
391 while !r.close_compound(&mut _tmp4)? {
392 if !r.expect_boundary(&mut _tmp4, &_support::B::Item::SequenceValue)? {
393 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuple"));
394 }
395 let _tmp5 = NamedPattern::deserialize(r)?;
396 _tmp3.push(_tmp5);
397 }
398 let _tmp2 = _tmp3;
399 r.ensure_complete(_tmp0)?;
400 Ok(CompoundPattern::Tuple {patterns: _tmp2})
401}
402
403fn read_compound_pattern_tuple_prefix<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
404 r.open_record(None)?;
405 let mut _tmp0 = _support::B::Type::default();
406 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
407 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix"));
408 }
409 match r.next_token(true)? {
410 preserves::value::Token::Atom(v) => match v.value() {
411 preserves::value::Value::Symbol(w) if w == "tuplePrefix" => {}
412 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix"))?,
413 }
414 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix"))?,
415 }
416 let _tmp1 = ();
417 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
418 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix"));
419 }
420 r.open_sequence()?;
421 let mut _tmp4 = _support::B::Type::default();
422 let mut _tmp3 = std::vec::Vec::new();
423 while !r.close_compound(&mut _tmp4)? {
424 if !r.expect_boundary(&mut _tmp4, &_support::B::Item::SequenceValue)? {
425 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix"));
426 }
427 let _tmp5 = NamedPattern::deserialize(r)?;
428 _tmp3.push(_tmp5);
429 }
430 let _tmp2 = _tmp3;
431 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
432 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix"));
433 }
434 let _tmp6 = NamedSimplePattern::deserialize(r)?;
435 r.ensure_complete(_tmp0)?;
436 Ok(CompoundPattern::TuplePrefix {fixed: _tmp2, variable: std::boxed::Box::new(_tmp6)})
437}
438
439fn read_compound_pattern_dict<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
440 r.open_record(None)?;
441 let mut _tmp0 = _support::B::Type::default();
442 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
443 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::dict"));
444 }
445 match r.next_token(true)? {
446 preserves::value::Token::Atom(v) => match v.value() {
447 preserves::value::Value::Symbol(w) if w == "dict" => {}
448 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::dict"))?,
449 }
450 _ => return Err(_support::ParseError::conformance_error("schema.CompoundPattern::dict"))?,
451 }
452 let _tmp1 = ();
453 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
454 return Err(_support::ParseError::conformance_error("schema.CompoundPattern::dict"));
455 }
456 let _tmp2 = DictionaryEntries::deserialize(r)?;
457 r.ensure_complete(_tmp0)?;
458 Ok(CompoundPattern::Dict {entries: std::boxed::Box::new(_tmp2)})
459}
460
461impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for CompoundPattern<_Value> {
462 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
463 let _mark = r.mark()?;
464 match read_compound_pattern_rec(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
465 match read_compound_pattern_tuple(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
466 match read_compound_pattern_tuple_prefix(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
467 match read_compound_pattern_dict(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
468 Err(_support::ParseError::conformance_error("schema.CompoundPattern"))
469 }
470}
471
472fn parse_compound_pattern_rec<
473 'a,
474 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
475 _Value: preserves::value::NestedValue + 'a
476>(_ctxt: _L, value: &_Value) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
477 let _tmp0 = value.value().to_record(None)?;
478 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_8_REC { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::rec")); }
479 let _tmp1 = ();
480 if _tmp0.fields().len() < 2 { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::rec")); }
481 let _tmp2 = NamedPattern::parse(_ctxt, (&_tmp0.fields()[0]))?;
482 let _tmp3 = NamedPattern::parse(_ctxt, (&_tmp0.fields()[1]))?;
483 Ok(CompoundPattern::Rec {label: std::boxed::Box::new(_tmp2), fields: std::boxed::Box::new(_tmp3)})
484}
485
486fn parse_compound_pattern_tuple<
487 'a,
488 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
489 _Value: preserves::value::NestedValue + 'a
490>(_ctxt: _L, value: &_Value) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
491 let _tmp0 = value.value().to_record(None)?;
492 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_9_TUPLE { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuple")); }
493 let _tmp1 = ();
494 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuple")); }
495 let _tmp3 = (&_tmp0.fields()[0]).value().to_sequence()?;
496 let mut _tmp2 = std::vec::Vec::new();
497 for _tmp4 in &_tmp3[0..] {
498 let _tmp5 = NamedPattern::parse(_ctxt, _tmp4)?;
499 _tmp2.push(_tmp5);
500 }
501 Ok(CompoundPattern::Tuple {patterns: _tmp2})
502}
503
504fn parse_compound_pattern_tuple_prefix<
505 'a,
506 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
507 _Value: preserves::value::NestedValue + 'a
508>(_ctxt: _L, value: &_Value) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
509 let _tmp0 = value.value().to_record(None)?;
510 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_10_TUPLE_PREFIX { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix")); }
511 let _tmp1 = ();
512 if _tmp0.fields().len() < 2 { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::tuplePrefix")); }
513 let _tmp3 = (&_tmp0.fields()[0]).value().to_sequence()?;
514 let mut _tmp2 = std::vec::Vec::new();
515 for _tmp4 in &_tmp3[0..] {
516 let _tmp5 = NamedPattern::parse(_ctxt, _tmp4)?;
517 _tmp2.push(_tmp5);
518 }
519 let _tmp6 = NamedSimplePattern::parse(_ctxt, (&_tmp0.fields()[1]))?;
520 Ok(CompoundPattern::TuplePrefix {fixed: _tmp2, variable: std::boxed::Box::new(_tmp6)})
521}
522
523fn parse_compound_pattern_dict<
524 'a,
525 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
526 _Value: preserves::value::NestedValue + 'a
527>(_ctxt: _L, value: &_Value) -> std::result::Result<CompoundPattern<_Value>, _support::ParseError> {
528 let _tmp0 = value.value().to_record(None)?;
529 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_11_DICT { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::dict")); }
530 let _tmp1 = ();
531 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.CompoundPattern::dict")); }
532 let _tmp2 = DictionaryEntries::parse(_ctxt, (&_tmp0.fields()[0]))?;
533 Ok(CompoundPattern::Dict {entries: std::boxed::Box::new(_tmp2)})
534}
535
536impl<
537 'a,
538 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
539 _Value: preserves::value::NestedValue + 'a
540> _support::Parse<_L, _Value> for CompoundPattern<_Value> {
541 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
542 if let Ok(r) = parse_compound_pattern_rec(_ctxt, value) { return Ok(r); }
543 if let Ok(r) = parse_compound_pattern_tuple(_ctxt, value) { return Ok(r); }
544 if let Ok(r) = parse_compound_pattern_tuple_prefix(_ctxt, value) { return Ok(r); }
545 if let Ok(r) = parse_compound_pattern_dict(_ctxt, value) { return Ok(r); }
546 Err(_support::ParseError::conformance_error("schema.CompoundPattern"))
547 }
548}
549
550impl<
551 'a,
552 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
553 _Value: preserves::value::NestedValue + 'a
554> _support::Unparse<_L, _Value> for CompoundPattern<_Value> {
555 fn unparse(&self, _ctxt: _L) -> _Value {
556 match self {
557 CompoundPattern::Rec {label: _tmp0, fields: _tmp1} => {
558 let mut _tmp2 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_8_REC).clone()]);
559 _tmp2.fields_vec_mut().push(_tmp0.as_ref().unparse(_ctxt));
560 _tmp2.fields_vec_mut().push(_tmp1.as_ref().unparse(_ctxt));
561 _tmp2.finish().wrap()
562 },
563 CompoundPattern::Tuple {patterns: _tmp0} => {
564 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_9_TUPLE).clone()]);
565 _tmp1.fields_vec_mut().push(
566 {
567 let mut _tmp2 = std::vec::Vec::new();
568 for _tmp3 in _tmp0 {
569 _tmp2.push(_tmp3.unparse(_ctxt));
570 }
571 preserves::value::Value::Sequence(_tmp2).wrap()
572 }
573 );
574 _tmp1.finish().wrap()
575 },
576 CompoundPattern::TuplePrefix {fixed: _tmp0, variable: _tmp1} => {
577 let mut _tmp2 = preserves::value::Record(vec![(
578 &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_10_TUPLE_PREFIX
579 ).clone()]);
580 _tmp2.fields_vec_mut().push(
581 {
582 let mut _tmp3 = std::vec::Vec::new();
583 for _tmp4 in _tmp0 {
584 _tmp3.push(_tmp4.unparse(_ctxt));
585 }
586 preserves::value::Value::Sequence(_tmp3).wrap()
587 }
588 );
589 _tmp2.fields_vec_mut().push(_tmp1.as_ref().unparse(_ctxt));
590 _tmp2.finish().wrap()
591 },
592 CompoundPattern::Dict {entries: _tmp0} => {
593 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_11_DICT).clone()]);
594 _tmp1.fields_vec_mut().push(_tmp0.as_ref().unparse(_ctxt));
595 _tmp1.finish().wrap()
596 },
597 }
598 }
599}
600
601#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
602pub enum Definition<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
603 Or {
604 pattern_0: std::boxed::Box<NamedAlternative<_Value>>,
605 pattern_1: std::boxed::Box<NamedAlternative<_Value>>,
606 pattern_n: std::vec::Vec<NamedAlternative<_Value>>
607 },
608 And {
609 pattern_0: std::boxed::Box<NamedPattern<_Value>>,
610 pattern_1: std::boxed::Box<NamedPattern<_Value>>,
611 pattern_n: std::vec::Vec<NamedPattern<_Value>>
612 },
613 Pattern(std::boxed::Box<Pattern<_Value>>)
614}
615
616impl<_Value: preserves::value::NestedValue> preserves::value::Domain for Definition<_Value> {}
617
618fn read_definition_or<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Definition<_Value>, _support::ParseError> {
619 r.open_record(None)?;
620 let mut _tmp0 = _support::B::Type::default();
621 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {return Err(_support::ParseError::conformance_error("schema.Definition::or"));}
622 match r.next_token(true)? {
623 preserves::value::Token::Atom(v) => match v.value() {
624 preserves::value::Value::Symbol(w) if w == "or" => {}
625 _ => return Err(_support::ParseError::conformance_error("schema.Definition::or"))?,
626 }
627 _ => return Err(_support::ParseError::conformance_error("schema.Definition::or"))?,
628 }
629 let _tmp1 = ();
630 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Definition::or"));}
631 r.open_sequence()?;
632 let mut _tmp2 = _support::B::Type::default();
633 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::SequenceValue)? {return Err(_support::ParseError::conformance_error("schema.Definition::or"));}
634 let _tmp3 = NamedAlternative::deserialize(r)?;
635 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::SequenceValue)? {return Err(_support::ParseError::conformance_error("schema.Definition::or"));}
636 let _tmp4 = NamedAlternative::deserialize(r)?;
637 let mut _tmp6 = std::vec::Vec::new();
638 while !r.close_compound(&mut _tmp2)? {
639 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::SequenceValue)? {return Err(_support::ParseError::conformance_error("schema.Definition::or"));}
640 let _tmp7 = NamedAlternative::deserialize(r)?;
641 _tmp6.push(_tmp7);
642 }
643 let _tmp5 = _tmp6;
644 r.ensure_complete(_tmp0)?;
645 Ok(Definition::Or {
646 pattern_0: std::boxed::Box::new(_tmp3),
647 pattern_1: std::boxed::Box::new(_tmp4),
648 pattern_n: _tmp5
649 })
650}
651
652fn read_definition_and<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Definition<_Value>, _support::ParseError> {
653 r.open_record(None)?;
654 let mut _tmp0 = _support::B::Type::default();
655 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {return Err(_support::ParseError::conformance_error("schema.Definition::and"));}
656 match r.next_token(true)? {
657 preserves::value::Token::Atom(v) => match v.value() {
658 preserves::value::Value::Symbol(w) if w == "and" => {}
659 _ => return Err(_support::ParseError::conformance_error("schema.Definition::and"))?,
660 }
661 _ => return Err(_support::ParseError::conformance_error("schema.Definition::and"))?,
662 }
663 let _tmp1 = ();
664 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Definition::and"));}
665 r.open_sequence()?;
666 let mut _tmp2 = _support::B::Type::default();
667 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::SequenceValue)? {return Err(_support::ParseError::conformance_error("schema.Definition::and"));}
668 let _tmp3 = NamedPattern::deserialize(r)?;
669 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::SequenceValue)? {return Err(_support::ParseError::conformance_error("schema.Definition::and"));}
670 let _tmp4 = NamedPattern::deserialize(r)?;
671 let mut _tmp6 = std::vec::Vec::new();
672 while !r.close_compound(&mut _tmp2)? {
673 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::SequenceValue)? {return Err(_support::ParseError::conformance_error("schema.Definition::and"));}
674 let _tmp7 = NamedPattern::deserialize(r)?;
675 _tmp6.push(_tmp7);
676 }
677 let _tmp5 = _tmp6;
678 r.ensure_complete(_tmp0)?;
679 Ok(Definition::And {
680 pattern_0: std::boxed::Box::new(_tmp3),
681 pattern_1: std::boxed::Box::new(_tmp4),
682 pattern_n: _tmp5
683 })
684}
685
686fn read_definition_pattern<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Definition<_Value>, _support::ParseError> {
687 let _tmp0 = Pattern::deserialize(r)?;
688 Ok(Definition::Pattern(std::boxed::Box::new(_tmp0)))
689}
690
691impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Definition<_Value> {
692 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
693 let _mark = r.mark()?;
694 match read_definition_or(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
695 match read_definition_and(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
696 match read_definition_pattern(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
697 Err(_support::ParseError::conformance_error("schema.Definition"))
698 }
699}
700
701fn parse_definition_or<
702 'a,
703 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
704 _Value: preserves::value::NestedValue + 'a
705>(_ctxt: _L, value: &_Value) -> std::result::Result<Definition<_Value>, _support::ParseError> {
706 let _tmp0 = value.value().to_record(None)?;
707 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_12_OR { return Err(_support::ParseError::conformance_error("schema.Definition::or")); }
708 let _tmp1 = ();
709 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.Definition::or")); }
710 let _tmp2 = (&_tmp0.fields()[0]).value().to_sequence()?;
711 if _tmp2.len() < 2 { return Err(_support::ParseError::conformance_error("schema.Definition::or")); }
712 let _tmp3 = NamedAlternative::parse(_ctxt, (&_tmp2[0]))?;
713 let _tmp4 = NamedAlternative::parse(_ctxt, (&_tmp2[1]))?;
714 let mut _tmp5 = std::vec::Vec::new();
715 for _tmp6 in &_tmp2[2..] {
716 let _tmp7 = NamedAlternative::parse(_ctxt, _tmp6)?;
717 _tmp5.push(_tmp7);
718 }
719 Ok(Definition::Or {
720 pattern_0: std::boxed::Box::new(_tmp3),
721 pattern_1: std::boxed::Box::new(_tmp4),
722 pattern_n: _tmp5
723 })
724}
725
726fn parse_definition_and<
727 'a,
728 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
729 _Value: preserves::value::NestedValue + 'a
730>(_ctxt: _L, value: &_Value) -> std::result::Result<Definition<_Value>, _support::ParseError> {
731 let _tmp0 = value.value().to_record(None)?;
732 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_13_AND { return Err(_support::ParseError::conformance_error("schema.Definition::and")); }
733 let _tmp1 = ();
734 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.Definition::and")); }
735 let _tmp2 = (&_tmp0.fields()[0]).value().to_sequence()?;
736 if _tmp2.len() < 2 { return Err(_support::ParseError::conformance_error("schema.Definition::and")); }
737 let _tmp3 = NamedPattern::parse(_ctxt, (&_tmp2[0]))?;
738 let _tmp4 = NamedPattern::parse(_ctxt, (&_tmp2[1]))?;
739 let mut _tmp5 = std::vec::Vec::new();
740 for _tmp6 in &_tmp2[2..] {
741 let _tmp7 = NamedPattern::parse(_ctxt, _tmp6)?;
742 _tmp5.push(_tmp7);
743 }
744 Ok(Definition::And {
745 pattern_0: std::boxed::Box::new(_tmp3),
746 pattern_1: std::boxed::Box::new(_tmp4),
747 pattern_n: _tmp5
748 })
749}
750
751fn parse_definition_pattern<
752 'a,
753 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
754 _Value: preserves::value::NestedValue + 'a
755>(_ctxt: _L, value: &_Value) -> std::result::Result<Definition<_Value>, _support::ParseError> {
756 let _tmp0 = Pattern::parse(_ctxt, value)?;
757 Ok(Definition::Pattern(std::boxed::Box::new(_tmp0)))
758}
759
760impl<
761 'a,
762 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
763 _Value: preserves::value::NestedValue + 'a
764> _support::Parse<_L, _Value> for Definition<_Value> {
765 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
766 if let Ok(r) = parse_definition_or(_ctxt, value) { return Ok(r); }
767 if let Ok(r) = parse_definition_and(_ctxt, value) { return Ok(r); }
768 if let Ok(r) = parse_definition_pattern(_ctxt, value) { return Ok(r); }
769 Err(_support::ParseError::conformance_error("schema.Definition"))
770 }
771}
772
773impl<
774 'a,
775 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
776 _Value: preserves::value::NestedValue + 'a
777> _support::Unparse<_L, _Value> for Definition<_Value> {
778 fn unparse(&self, _ctxt: _L) -> _Value {
779 match self {
780 Definition::Or {pattern_0: _tmp0, pattern_1: _tmp1, pattern_n: _tmp2} => {
781 let mut _tmp3 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_12_OR).clone()]);
782 _tmp3.fields_vec_mut().push(
783 {
784 let mut _tmp4 = std::vec::Vec::new();
785 _tmp4.push(_tmp0.as_ref().unparse(_ctxt));
786 _tmp4.push(_tmp1.as_ref().unparse(_ctxt));
787 for _tmp5 in _tmp2 {
788 _tmp4.push(_tmp5.unparse(_ctxt));
789 }
790 preserves::value::Value::Sequence(_tmp4).wrap()
791 }
792 );
793 _tmp3.finish().wrap()
794 },
795 Definition::And {pattern_0: _tmp0, pattern_1: _tmp1, pattern_n: _tmp2} => {
796 let mut _tmp3 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_13_AND).clone()]);
797 _tmp3.fields_vec_mut().push(
798 {
799 let mut _tmp4 = std::vec::Vec::new();
800 _tmp4.push(_tmp0.as_ref().unparse(_ctxt));
801 _tmp4.push(_tmp1.as_ref().unparse(_ctxt));
802 for _tmp5 in _tmp2 {
803 _tmp4.push(_tmp5.unparse(_ctxt));
804 }
805 preserves::value::Value::Sequence(_tmp4).wrap()
806 }
807 );
808 _tmp3.finish().wrap()
809 },
810 Definition::Pattern(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
811 }
812 }
813}
814
815#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
816pub struct Definitions<_Value: preserves::value::NestedValue = preserves::value::IOValue>(pub preserves::value::Map<std::string::String, Definition<_Value>>);
817
818impl<_Value: preserves::value::NestedValue> preserves::value::Domain for Definitions<_Value> {}
819
820impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Definitions<_Value> {
821 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
822 r.open_dictionary()?;
823 let mut _tmp2 = _support::B::Type::default();
824 let mut _tmp1 = preserves::value::Map::new();
825 while !r.close_compound(&mut _tmp2)? {
826 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryKey)? {return Err(_support::ParseError::conformance_error("schema.Definitions"));}
827 let _tmp3 = r.next_symbol()?.into_owned();
828 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryValue)? {return Err(_support::ParseError::conformance_error("schema.Definitions"));}
829 let _tmp4 = Definition::deserialize(r)?;
830 _tmp1.insert(_tmp3, _tmp4);
831 }
832 let _tmp0 = _tmp1;
833 Ok(Definitions(_tmp0))
834 }
835}
836
837impl<
838 'a,
839 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
840 _Value: preserves::value::NestedValue + 'a
841> _support::Parse<_L, _Value> for Definitions<_Value> {
842 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
843 let mut _tmp0 = preserves::value::Map::new();
844 for (_tmp1, _tmp2) in value.value().to_dictionary()? {
845 let _tmp3 = _tmp1.value().to_symbol()?;
846 let _tmp4 = Definition::parse(_ctxt, _tmp2)?;
847 _tmp0.insert(_tmp3.clone(), _tmp4);
848 }
849 Ok(Definitions(_tmp0))
850 }
851}
852
853impl<
854 'a,
855 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
856 _Value: preserves::value::NestedValue + 'a
857> _support::Unparse<_L, _Value> for Definitions<_Value> {
858 fn unparse(&self, _ctxt: _L) -> _Value {
859 let Definitions(_tmp0) = self;
860 preserves::value::Value::Dictionary(_tmp0.iter().map(|(_tmp1, _tmp2)| (preserves::value::Value::symbol(_tmp1).wrap(), _tmp2.unparse(_ctxt))).collect()).wrap()
861 }
862}
863
864#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
865pub struct DictionaryEntries<_Value: preserves::value::NestedValue = preserves::value::IOValue>(pub preserves::value::Map<_Value, NamedSimplePattern<_Value>>);
866
867impl<_Value: preserves::value::NestedValue> preserves::value::Domain for DictionaryEntries<_Value> {}
868
869impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for DictionaryEntries<_Value> {
870 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
871 r.open_dictionary()?;
872 let mut _tmp2 = _support::B::Type::default();
873 let mut _tmp1 = preserves::value::Map::new();
874 while !r.close_compound(&mut _tmp2)? {
875 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryKey)? {
876 return Err(_support::ParseError::conformance_error("schema.DictionaryEntries"));
877 }
878 let _tmp3 = r.demand_next(true)?;
879 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryValue)? {
880 return Err(_support::ParseError::conformance_error("schema.DictionaryEntries"));
881 }
882 let _tmp4 = NamedSimplePattern::deserialize(r)?;
883 _tmp1.insert(_tmp3, _tmp4);
884 }
885 let _tmp0 = _tmp1;
886 Ok(DictionaryEntries(_tmp0))
887 }
888}
889
890impl<
891 'a,
892 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
893 _Value: preserves::value::NestedValue + 'a
894> _support::Parse<_L, _Value> for DictionaryEntries<_Value> {
895 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
896 let mut _tmp0 = preserves::value::Map::new();
897 for (_tmp1, _tmp2) in value.value().to_dictionary()? {
898 let _tmp3 = _tmp1;
899 let _tmp4 = NamedSimplePattern::parse(_ctxt, _tmp2)?;
900 _tmp0.insert(_tmp3.clone(), _tmp4);
901 }
902 Ok(DictionaryEntries(_tmp0))
903 }
904}
905
906impl<
907 'a,
908 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
909 _Value: preserves::value::NestedValue + 'a
910> _support::Unparse<_L, _Value> for DictionaryEntries<_Value> {
911 fn unparse(&self, _ctxt: _L) -> _Value {
912 let DictionaryEntries(_tmp0) = self;
913 preserves::value::Value::Dictionary(_tmp0.iter().map(|(_tmp1, _tmp2)| (_tmp1.clone(), _tmp2.unparse(_ctxt))).collect()).wrap()
914 }
915}
916
917#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
918pub enum EmbeddedTypeName {
919 False,
920 Ref(std::boxed::Box<Ref>)
921}
922
923impl preserves::value::Domain for EmbeddedTypeName {}
924
925fn read_embedded_type_name_false<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
926 match r.next_token(true)? {
927 preserves::value::Token::Atom(v) => match v.value() {
928 preserves::value::Value::Boolean(w) if !*w => {}
929 _ => return Err(_support::ParseError::conformance_error("schema.EmbeddedTypeName::false"))?,
930 }
931 _ => return Err(_support::ParseError::conformance_error("schema.EmbeddedTypeName::false"))?,
932 }
933 let _tmp0 = ();
934 Ok(EmbeddedTypeName::False)
935}
936
937fn read_embedded_type_name_ref<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
938 let _tmp0 = Ref::deserialize(r)?;
939 Ok(EmbeddedTypeName::Ref(std::boxed::Box::new(_tmp0)))
940}
941
942impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for EmbeddedTypeName {
943 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
944 let _mark = r.mark()?;
945 match read_embedded_type_name_false(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
946 match read_embedded_type_name_ref(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
947 Err(_support::ParseError::conformance_error("schema.EmbeddedTypeName"))
948 }
949}
950
951fn parse_embedded_type_name_false<
952 'a,
953 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
954 _Value: preserves::value::NestedValue + 'a
955>(_ctxt: _L, value: &_Value) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
956 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_14_FALSE { return Err(_support::ParseError::conformance_error("schema.EmbeddedTypeName::false")); }
957 let _tmp0 = ();
958 Ok(EmbeddedTypeName::False)
959}
960
961fn parse_embedded_type_name_ref<
962 'a,
963 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
964 _Value: preserves::value::NestedValue + 'a
965>(_ctxt: _L, value: &_Value) -> std::result::Result<EmbeddedTypeName, _support::ParseError> {
966 let _tmp0 = Ref::parse(_ctxt, value)?;
967 Ok(EmbeddedTypeName::Ref(std::boxed::Box::new(_tmp0)))
968}
969
970impl<
971 'a,
972 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
973 _Value: preserves::value::NestedValue + 'a
974> _support::Parse<_L, _Value> for EmbeddedTypeName {
975 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
976 if let Ok(r) = parse_embedded_type_name_false(_ctxt, value) { return Ok(r); }
977 if let Ok(r) = parse_embedded_type_name_ref(_ctxt, value) { return Ok(r); }
978 Err(_support::ParseError::conformance_error("schema.EmbeddedTypeName"))
979 }
980}
981
982impl<
983 'a,
984 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
985 _Value: preserves::value::NestedValue + 'a
986> _support::Unparse<_L, _Value> for EmbeddedTypeName {
987 fn unparse(&self, _ctxt: _L) -> _Value {
988 match self {
989 EmbeddedTypeName::False => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_14_FALSE).clone(),
990 EmbeddedTypeName::Ref(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
991 }
992 }
993}
994
995#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
996pub struct ModulePath(pub std::vec::Vec<std::string::String>);
997
998impl preserves::value::Domain for ModulePath {}
999
1000impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for ModulePath {
1001 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1002 r.open_sequence()?;
1003 let mut _tmp2 = _support::B::Type::default();
1004 let mut _tmp1 = std::vec::Vec::new();
1005 while !r.close_compound(&mut _tmp2)? {
1006 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::SequenceValue)? {return Err(_support::ParseError::conformance_error("schema.ModulePath"));}
1007 let _tmp3 = r.next_symbol()?.into_owned();
1008 _tmp1.push(_tmp3);
1009 }
1010 let _tmp0 = _tmp1;
1011 Ok(ModulePath(_tmp0))
1012 }
1013}
1014
1015impl<
1016 'a,
1017 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1018 _Value: preserves::value::NestedValue + 'a
1019> _support::Parse<_L, _Value> for ModulePath {
1020 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1021 let _tmp1 = value.value().to_sequence()?;
1022 let mut _tmp0 = std::vec::Vec::new();
1023 for _tmp2 in &_tmp1[0..] {
1024 let _tmp3 = _tmp2.value().to_symbol()?;
1025 _tmp0.push(_tmp3.clone());
1026 }
1027 Ok(ModulePath(_tmp0))
1028 }
1029}
1030
1031impl<
1032 'a,
1033 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1034 _Value: preserves::value::NestedValue + 'a
1035> _support::Unparse<_L, _Value> for ModulePath {
1036 fn unparse(&self, _ctxt: _L) -> _Value {
1037 let ModulePath(_tmp0) = self;
1038 {
1039 let mut _tmp1 = std::vec::Vec::new();
1040 for _tmp2 in _tmp0 {
1041 _tmp1.push(preserves::value::Value::symbol(_tmp2).wrap());
1042 }
1043 preserves::value::Value::Sequence(_tmp1).wrap()
1044 }
1045 }
1046}
1047
1048#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1049pub struct Modules<_Value: preserves::value::NestedValue = preserves::value::IOValue>(pub preserves::value::Map<ModulePath, Schema<_Value>>);
1050
1051impl<_Value: preserves::value::NestedValue> preserves::value::Domain for Modules<_Value> {}
1052
1053impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Modules<_Value> {
1054 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1055 r.open_dictionary()?;
1056 let mut _tmp2 = _support::B::Type::default();
1057 let mut _tmp1 = preserves::value::Map::new();
1058 while !r.close_compound(&mut _tmp2)? {
1059 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryKey)? {return Err(_support::ParseError::conformance_error("schema.Modules"));}
1060 let _tmp3 = ModulePath::deserialize(r)?;
1061 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryValue)? {return Err(_support::ParseError::conformance_error("schema.Modules"));}
1062 let _tmp4 = Schema::deserialize(r)?;
1063 _tmp1.insert(_tmp3, _tmp4);
1064 }
1065 let _tmp0 = _tmp1;
1066 Ok(Modules(_tmp0))
1067 }
1068}
1069
1070impl<
1071 'a,
1072 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1073 _Value: preserves::value::NestedValue + 'a
1074> _support::Parse<_L, _Value> for Modules<_Value> {
1075 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1076 let mut _tmp0 = preserves::value::Map::new();
1077 for (_tmp1, _tmp2) in value.value().to_dictionary()? {
1078 let _tmp3 = ModulePath::parse(_ctxt, _tmp1)?;
1079 let _tmp4 = Schema::parse(_ctxt, _tmp2)?;
1080 _tmp0.insert(_tmp3, _tmp4);
1081 }
1082 Ok(Modules(_tmp0))
1083 }
1084}
1085
1086impl<
1087 'a,
1088 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1089 _Value: preserves::value::NestedValue + 'a
1090> _support::Unparse<_L, _Value> for Modules<_Value> {
1091 fn unparse(&self, _ctxt: _L) -> _Value {
1092 let Modules(_tmp0) = self;
1093 preserves::value::Value::Dictionary(_tmp0.iter().map(|(_tmp1, _tmp2)| (_tmp1.unparse(_ctxt), _tmp2.unparse(_ctxt))).collect()).wrap()
1094 }
1095}
1096
1097#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1098pub struct NamedAlternative<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
1099 pub variant_label: std::string::String,
1100 pub pattern: Pattern<_Value>
1101}
1102
1103impl<_Value: preserves::value::NestedValue> preserves::value::Domain for NamedAlternative<_Value> {}
1104
1105impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for NamedAlternative<_Value> {
1106 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1107 r.open_sequence()?;
1108 let mut _tmp0 = _support::B::Type::default();
1109 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::SequenceValue)? {
1110 return Err(_support::ParseError::conformance_error("schema.NamedAlternative"));
1111 }
1112 let _tmp1 = r.next_str()?.into_owned();
1113 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::SequenceValue)? {
1114 return Err(_support::ParseError::conformance_error("schema.NamedAlternative"));
1115 }
1116 let _tmp2 = Pattern::deserialize(r)?;
1117 r.ensure_complete(_tmp0)?;
1118 Ok(NamedAlternative {variant_label: _tmp1, pattern: _tmp2})
1119 }
1120}
1121
1122impl<
1123 'a,
1124 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1125 _Value: preserves::value::NestedValue + 'a
1126> _support::Parse<_L, _Value> for NamedAlternative<_Value> {
1127 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1128 let _tmp0 = value.value().to_sequence()?;
1129 if _tmp0.len() < 2 { return Err(_support::ParseError::conformance_error("schema.NamedAlternative")); }
1130 let _tmp1 = (&_tmp0[0]).value().to_string()?;
1131 let _tmp2 = Pattern::parse(_ctxt, (&_tmp0[1]))?;
1132 Ok(NamedAlternative {variant_label: _tmp1.clone(), pattern: _tmp2})
1133 }
1134}
1135
1136impl<
1137 'a,
1138 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1139 _Value: preserves::value::NestedValue + 'a
1140> _support::Unparse<_L, _Value> for NamedAlternative<_Value> {
1141 fn unparse(&self, _ctxt: _L) -> _Value {
1142 let NamedAlternative {variant_label: _tmp0, pattern: _tmp1} = self;
1143 {
1144 let mut _tmp2 = std::vec::Vec::new();
1145 _tmp2.push(preserves::value::Value::from(_tmp0).wrap());
1146 _tmp2.push(_tmp1.unparse(_ctxt));
1147 preserves::value::Value::Sequence(_tmp2).wrap()
1148 }
1149 }
1150}
1151
1152#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1153pub enum NamedPattern<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
1154 Named(std::boxed::Box<Binding<_Value>>),
1155 Anonymous(std::boxed::Box<Pattern<_Value>>)
1156}
1157
1158impl<_Value: preserves::value::NestedValue> preserves::value::Domain for NamedPattern<_Value> {}
1159
1160fn read_named_pattern_named<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<NamedPattern<_Value>, _support::ParseError> {
1161 let _tmp0 = Binding::deserialize(r)?;
1162 Ok(NamedPattern::Named(std::boxed::Box::new(_tmp0)))
1163}
1164
1165fn read_named_pattern_anonymous<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<NamedPattern<_Value>, _support::ParseError> {
1166 let _tmp0 = Pattern::deserialize(r)?;
1167 Ok(NamedPattern::Anonymous(std::boxed::Box::new(_tmp0)))
1168}
1169
1170impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for NamedPattern<_Value> {
1171 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1172 let _mark = r.mark()?;
1173 match read_named_pattern_named(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1174 match read_named_pattern_anonymous(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1175 Err(_support::ParseError::conformance_error("schema.NamedPattern"))
1176 }
1177}
1178
1179fn parse_named_pattern_named<
1180 'a,
1181 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1182 _Value: preserves::value::NestedValue + 'a
1183>(_ctxt: _L, value: &_Value) -> std::result::Result<NamedPattern<_Value>, _support::ParseError> {
1184 let _tmp0 = Binding::parse(_ctxt, value)?;
1185 Ok(NamedPattern::Named(std::boxed::Box::new(_tmp0)))
1186}
1187
1188fn parse_named_pattern_anonymous<
1189 'a,
1190 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1191 _Value: preserves::value::NestedValue + 'a
1192>(_ctxt: _L, value: &_Value) -> std::result::Result<NamedPattern<_Value>, _support::ParseError> {
1193 let _tmp0 = Pattern::parse(_ctxt, value)?;
1194 Ok(NamedPattern::Anonymous(std::boxed::Box::new(_tmp0)))
1195}
1196
1197impl<
1198 'a,
1199 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1200 _Value: preserves::value::NestedValue + 'a
1201> _support::Parse<_L, _Value> for NamedPattern<_Value> {
1202 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1203 if let Ok(r) = parse_named_pattern_named(_ctxt, value) { return Ok(r); }
1204 if let Ok(r) = parse_named_pattern_anonymous(_ctxt, value) { return Ok(r); }
1205 Err(_support::ParseError::conformance_error("schema.NamedPattern"))
1206 }
1207}
1208
1209impl<
1210 'a,
1211 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1212 _Value: preserves::value::NestedValue + 'a
1213> _support::Unparse<_L, _Value> for NamedPattern<_Value> {
1214 fn unparse(&self, _ctxt: _L) -> _Value {
1215 match self {
1216 NamedPattern::Named(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
1217 NamedPattern::Anonymous(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
1218 }
1219 }
1220}
1221
1222#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1223pub enum NamedSimplePattern<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
1224 Named(std::boxed::Box<Binding<_Value>>),
1225 Anonymous(std::boxed::Box<SimplePattern<_Value>>)
1226}
1227
1228impl<_Value: preserves::value::NestedValue> preserves::value::Domain for NamedSimplePattern<_Value> {}
1229
1230fn read_named_simple_pattern_named<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<NamedSimplePattern<_Value>, _support::ParseError> {
1231 let _tmp0 = Binding::deserialize(r)?;
1232 Ok(NamedSimplePattern::Named(std::boxed::Box::new(_tmp0)))
1233}
1234
1235fn read_named_simple_pattern_anonymous<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<NamedSimplePattern<_Value>, _support::ParseError> {
1236 let _tmp0 = SimplePattern::deserialize(r)?;
1237 Ok(NamedSimplePattern::Anonymous(std::boxed::Box::new(_tmp0)))
1238}
1239
1240impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for NamedSimplePattern<_Value> {
1241 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1242 let _mark = r.mark()?;
1243 match read_named_simple_pattern_named(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1244 match read_named_simple_pattern_anonymous(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1245 Err(_support::ParseError::conformance_error("schema.NamedSimplePattern"))
1246 }
1247}
1248
1249fn parse_named_simple_pattern_named<
1250 'a,
1251 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1252 _Value: preserves::value::NestedValue + 'a
1253>(_ctxt: _L, value: &_Value) -> std::result::Result<NamedSimplePattern<_Value>, _support::ParseError> {
1254 let _tmp0 = Binding::parse(_ctxt, value)?;
1255 Ok(NamedSimplePattern::Named(std::boxed::Box::new(_tmp0)))
1256}
1257
1258fn parse_named_simple_pattern_anonymous<
1259 'a,
1260 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1261 _Value: preserves::value::NestedValue + 'a
1262>(_ctxt: _L, value: &_Value) -> std::result::Result<NamedSimplePattern<_Value>, _support::ParseError> {
1263 let _tmp0 = SimplePattern::parse(_ctxt, value)?;
1264 Ok(NamedSimplePattern::Anonymous(std::boxed::Box::new(_tmp0)))
1265}
1266
1267impl<
1268 'a,
1269 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1270 _Value: preserves::value::NestedValue + 'a
1271> _support::Parse<_L, _Value> for NamedSimplePattern<_Value> {
1272 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1273 if let Ok(r) = parse_named_simple_pattern_named(_ctxt, value) { return Ok(r); }
1274 if let Ok(r) = parse_named_simple_pattern_anonymous(_ctxt, value) { return Ok(r); }
1275 Err(_support::ParseError::conformance_error("schema.NamedSimplePattern"))
1276 }
1277}
1278
1279impl<
1280 'a,
1281 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1282 _Value: preserves::value::NestedValue + 'a
1283> _support::Unparse<_L, _Value> for NamedSimplePattern<_Value> {
1284 fn unparse(&self, _ctxt: _L) -> _Value {
1285 match self {
1286 NamedSimplePattern::Named(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
1287 NamedSimplePattern::Anonymous(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
1288 }
1289 }
1290}
1291
1292#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1293pub enum Pattern<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
1294 SimplePattern(std::boxed::Box<SimplePattern<_Value>>),
1295 CompoundPattern(std::boxed::Box<CompoundPattern<_Value>>)
1296}
1297
1298impl<_Value: preserves::value::NestedValue> preserves::value::Domain for Pattern<_Value> {}
1299
1300fn read_pattern_simple_pattern<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Pattern<_Value>, _support::ParseError> {
1301 let _tmp0 = SimplePattern::deserialize(r)?;
1302 Ok(Pattern::SimplePattern(std::boxed::Box::new(_tmp0)))
1303}
1304
1305fn read_pattern_compound_pattern<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Pattern<_Value>, _support::ParseError> {
1306 let _tmp0 = CompoundPattern::deserialize(r)?;
1307 Ok(Pattern::CompoundPattern(std::boxed::Box::new(_tmp0)))
1308}
1309
1310impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Pattern<_Value> {
1311 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1312 let _mark = r.mark()?;
1313 match read_pattern_simple_pattern(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1314 match read_pattern_compound_pattern(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1315 Err(_support::ParseError::conformance_error("schema.Pattern"))
1316 }
1317}
1318
1319fn parse_pattern_simple_pattern<
1320 'a,
1321 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1322 _Value: preserves::value::NestedValue + 'a
1323>(_ctxt: _L, value: &_Value) -> std::result::Result<Pattern<_Value>, _support::ParseError> {
1324 let _tmp0 = SimplePattern::parse(_ctxt, value)?;
1325 Ok(Pattern::SimplePattern(std::boxed::Box::new(_tmp0)))
1326}
1327
1328fn parse_pattern_compound_pattern<
1329 'a,
1330 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1331 _Value: preserves::value::NestedValue + 'a
1332>(_ctxt: _L, value: &_Value) -> std::result::Result<Pattern<_Value>, _support::ParseError> {
1333 let _tmp0 = CompoundPattern::parse(_ctxt, value)?;
1334 Ok(Pattern::CompoundPattern(std::boxed::Box::new(_tmp0)))
1335}
1336
1337impl<
1338 'a,
1339 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1340 _Value: preserves::value::NestedValue + 'a
1341> _support::Parse<_L, _Value> for Pattern<_Value> {
1342 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1343 if let Ok(r) = parse_pattern_simple_pattern(_ctxt, value) { return Ok(r); }
1344 if let Ok(r) = parse_pattern_compound_pattern(_ctxt, value) { return Ok(r); }
1345 Err(_support::ParseError::conformance_error("schema.Pattern"))
1346 }
1347}
1348
1349impl<
1350 'a,
1351 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1352 _Value: preserves::value::NestedValue + 'a
1353> _support::Unparse<_L, _Value> for Pattern<_Value> {
1354 fn unparse(&self, _ctxt: _L) -> _Value {
1355 match self {
1356 Pattern::SimplePattern(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
1357 Pattern::CompoundPattern(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
1358 }
1359 }
1360}
1361
1362#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1363pub struct Ref {
1364 pub module: ModulePath,
1365 pub name: std::string::String
1366}
1367
1368impl preserves::value::Domain for Ref {}
1369
1370impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Ref {
1371 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1372 r.open_record(None)?;
1373 let mut _tmp0 = _support::B::Type::default();
1374 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {return Err(_support::ParseError::conformance_error("schema.Ref"));}
1375 match r.next_token(true)? {
1376 preserves::value::Token::Atom(v) => match v.value() {
1377 preserves::value::Value::Symbol(w) if w == "ref" => {}
1378 _ => return Err(_support::ParseError::conformance_error("schema.Ref"))?,
1379 }
1380 _ => return Err(_support::ParseError::conformance_error("schema.Ref"))?,
1381 }
1382 let _tmp1 = ();
1383 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Ref"));}
1384 let _tmp2 = ModulePath::deserialize(r)?;
1385 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Ref"));}
1386 let _tmp3 = r.next_symbol()?.into_owned();
1387 r.ensure_complete(_tmp0)?;
1388 Ok(Ref {module: _tmp2, name: _tmp3})
1389 }
1390}
1391
1392impl<
1393 'a,
1394 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1395 _Value: preserves::value::NestedValue + 'a
1396> _support::Parse<_L, _Value> for Ref {
1397 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1398 let _tmp0 = value.value().to_record(None)?;
1399 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_15_REF { return Err(_support::ParseError::conformance_error("schema.Ref")); }
1400 let _tmp1 = ();
1401 if _tmp0.fields().len() < 2 { return Err(_support::ParseError::conformance_error("schema.Ref")); }
1402 let _tmp2 = ModulePath::parse(_ctxt, (&_tmp0.fields()[0]))?;
1403 let _tmp3 = (&_tmp0.fields()[1]).value().to_symbol()?;
1404 Ok(Ref {module: _tmp2, name: _tmp3.clone()})
1405 }
1406}
1407
1408impl<
1409 'a,
1410 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1411 _Value: preserves::value::NestedValue + 'a
1412> _support::Unparse<_L, _Value> for Ref {
1413 fn unparse(&self, _ctxt: _L) -> _Value {
1414 let Ref {module: _tmp0, name: _tmp1} = self;
1415 {
1416 let mut _tmp2 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_15_REF).clone()]);
1417 _tmp2.fields_vec_mut().push(_tmp0.unparse(_ctxt));
1418 _tmp2.fields_vec_mut().push(preserves::value::Value::symbol(_tmp1).wrap());
1419 _tmp2.finish().wrap()
1420 }
1421 }
1422}
1423
1424#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1425pub struct Schema<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
1426 pub definitions: Definitions<_Value>,
1427 pub embedded_type: EmbeddedTypeName,
1428 pub version: Version
1429}
1430
1431impl<_Value: preserves::value::NestedValue> preserves::value::Domain for Schema<_Value> {}
1432
1433impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Schema<_Value> {
1434 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1435 r.open_record(None)?;
1436 let mut _tmp0 = _support::B::Type::default();
1437 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {return Err(_support::ParseError::conformance_error("schema.Schema"));}
1438 match r.next_token(true)? {
1439 preserves::value::Token::Atom(v) => match v.value() {
1440 preserves::value::Value::Symbol(w) if w == "schema" => {}
1441 _ => return Err(_support::ParseError::conformance_error("schema.Schema"))?,
1442 }
1443 _ => return Err(_support::ParseError::conformance_error("schema.Schema"))?,
1444 }
1445 let _tmp1 = ();
1446 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {return Err(_support::ParseError::conformance_error("schema.Schema"));}
1447 r.open_dictionary()?;
1448 let mut _tmp2 = _support::B::Type::default();
1449 let mut _tmp3 = None;
1450 let mut _tmp4 = None;
1451 let mut _tmp5 = None;
1452 while !r.close_compound(&mut _tmp2)? {
1453 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryKey)? {return Err(_support::ParseError::conformance_error("schema.Schema"));}
1454 match r.next_token(true)? {
1455 preserves::value::Token::Atom(v) => match v.value() {
1456 preserves::value::Value::Symbol(w) if w == "definitions" => {
1457 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryValue)? {return Err(_support::ParseError::conformance_error("schema.Schema"));}
1458 _tmp3 = Some(Definitions::deserialize(r)?);
1459 continue;
1460 }
1461 preserves::value::Value::Symbol(w) if w == "embeddedType" => {
1462 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryValue)? {return Err(_support::ParseError::conformance_error("schema.Schema"));}
1463 _tmp4 = Some(EmbeddedTypeName::deserialize(r)?);
1464 continue;
1465 }
1466 preserves::value::Value::Symbol(w) if w == "version" => {
1467 if !r.expect_boundary(&mut _tmp2, &_support::B::Item::DictionaryValue)? {return Err(_support::ParseError::conformance_error("schema.Schema"));}
1468 _tmp5 = Some(Version::deserialize(r)?);
1469 continue;
1470 }
1471 _ => return Err(_support::ParseError::conformance_error("schema.Schema"))?,
1472 }
1473 _ => return Err(_support::ParseError::conformance_error("schema.Schema"))?,
1474 }
1475 }
1476 r.ensure_complete(_tmp0)?;
1477 Ok(Schema {
1478 definitions: _tmp3.ok_or_else(|| _support::ParseError::conformance_error("schema.Schema"))?,
1479 embedded_type: _tmp4.ok_or_else(|| _support::ParseError::conformance_error("schema.Schema"))?,
1480 version: _tmp5.ok_or_else(|| _support::ParseError::conformance_error("schema.Schema"))?
1481 })
1482 }
1483}
1484
1485impl<
1486 'a,
1487 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1488 _Value: preserves::value::NestedValue + 'a
1489> _support::Parse<_L, _Value> for Schema<_Value> {
1490 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1491 let _tmp0 = value.value().to_record(None)?;
1492 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_16_SCHEMA { return Err(_support::ParseError::conformance_error("schema.Schema")); }
1493 let _tmp1 = ();
1494 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.Schema")); }
1495 let _tmp2 = (&_tmp0.fields()[0]).value().to_dictionary()?;
1496 let _tmp3 = _tmp2.get(
1497 &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_17_DEFINITIONS
1498 ).ok_or_else(|| _support::ParseError::conformance_error("schema.Schema"))?;
1499 let _tmp4 = Definitions::parse(_ctxt, _tmp3)?;
1500 let _tmp5 = _tmp2.get(
1501 &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_18_EMBEDDED_TYPE
1502 ).ok_or_else(|| _support::ParseError::conformance_error("schema.Schema"))?;
1503 let _tmp6 = EmbeddedTypeName::parse(_ctxt, _tmp5)?;
1504 let _tmp7 = _tmp2.get(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_19_VERSION).ok_or_else(|| _support::ParseError::conformance_error("schema.Schema"))?;
1505 let _tmp8 = Version::parse(_ctxt, _tmp7)?;
1506 Ok(Schema {definitions: _tmp4, embedded_type: _tmp6, version: _tmp8})
1507 }
1508}
1509
1510impl<
1511 'a,
1512 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1513 _Value: preserves::value::NestedValue + 'a
1514> _support::Unparse<_L, _Value> for Schema<_Value> {
1515 fn unparse(&self, _ctxt: _L) -> _Value {
1516 let Schema {definitions: _tmp0, embedded_type: _tmp1, version: _tmp2} = self;
1517 {
1518 let mut _tmp3 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_16_SCHEMA).clone()]);
1519 _tmp3.fields_vec_mut().push(
1520 {
1521 let mut _tmp4 = preserves::value::Map::new();
1522 _tmp4.insert(
1523 (
1524 &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_17_DEFINITIONS
1525 ).clone(),
1526 _tmp0.unparse(_ctxt)
1527 );
1528 _tmp4.insert(
1529 (
1530 &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_18_EMBEDDED_TYPE
1531 ).clone(),
1532 _tmp1.unparse(_ctxt)
1533 );
1534 _tmp4.insert(
1535 (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_19_VERSION).clone(),
1536 _tmp2.unparse(_ctxt)
1537 );
1538 preserves::value::Value::Dictionary(_tmp4).wrap()
1539 }
1540 );
1541 _tmp3.finish().wrap()
1542 }
1543 }
1544}
1545
1546#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1547pub enum SimplePattern<_Value: preserves::value::NestedValue = preserves::value::IOValue> {
1548 Any,
1549 Atom {
1550 atom_kind: std::boxed::Box<AtomKind>
1551 },
1552 Embedded {
1553 interface: std::boxed::Box<SimplePattern<_Value>>
1554 },
1555 Lit {
1556 value: _Value
1557 },
1558 Seqof {
1559 pattern: std::boxed::Box<SimplePattern<_Value>>
1560 },
1561 Setof {
1562 pattern: std::boxed::Box<SimplePattern<_Value>>
1563 },
1564 Dictof {
1565 key: std::boxed::Box<SimplePattern<_Value>>,
1566 value: std::boxed::Box<SimplePattern<_Value>>
1567 },
1568 Ref(std::boxed::Box<Ref>)
1569}
1570
1571impl<_Value: preserves::value::NestedValue> preserves::value::Domain for SimplePattern<_Value> {}
1572
1573fn read_simple_pattern_any<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1574 match r.next_token(true)? {
1575 preserves::value::Token::Atom(v) => match v.value() {
1576 preserves::value::Value::Symbol(w) if w == "any" => {}
1577 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::any"))?,
1578 }
1579 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::any"))?,
1580 }
1581 let _tmp0 = ();
1582 Ok(SimplePattern::Any)
1583}
1584
1585fn read_simple_pattern_atom<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1586 r.open_record(None)?;
1587 let mut _tmp0 = _support::B::Type::default();
1588 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
1589 return Err(_support::ParseError::conformance_error("schema.SimplePattern::atom"));
1590 }
1591 match r.next_token(true)? {
1592 preserves::value::Token::Atom(v) => match v.value() {
1593 preserves::value::Value::Symbol(w) if w == "atom" => {}
1594 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::atom"))?,
1595 }
1596 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::atom"))?,
1597 }
1598 let _tmp1 = ();
1599 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
1600 return Err(_support::ParseError::conformance_error("schema.SimplePattern::atom"));
1601 }
1602 let _tmp2 = AtomKind::deserialize(r)?;
1603 r.ensure_complete(_tmp0)?;
1604 Ok(SimplePattern::Atom {atom_kind: std::boxed::Box::new(_tmp2)})
1605}
1606
1607fn read_simple_pattern_embedded<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1608 r.open_record(None)?;
1609 let mut _tmp0 = _support::B::Type::default();
1610 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
1611 return Err(_support::ParseError::conformance_error("schema.SimplePattern::embedded"));
1612 }
1613 match r.next_token(true)? {
1614 preserves::value::Token::Atom(v) => match v.value() {
1615 preserves::value::Value::Symbol(w) if w == "embedded" => {}
1616 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::embedded"))?,
1617 }
1618 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::embedded"))?,
1619 }
1620 let _tmp1 = ();
1621 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
1622 return Err(_support::ParseError::conformance_error("schema.SimplePattern::embedded"));
1623 }
1624 let _tmp2 = SimplePattern::deserialize(r)?;
1625 r.ensure_complete(_tmp0)?;
1626 Ok(SimplePattern::Embedded {interface: std::boxed::Box::new(_tmp2)})
1627}
1628
1629fn read_simple_pattern_lit<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1630 r.open_record(None)?;
1631 let mut _tmp0 = _support::B::Type::default();
1632 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
1633 return Err(_support::ParseError::conformance_error("schema.SimplePattern::lit"));
1634 }
1635 match r.next_token(true)? {
1636 preserves::value::Token::Atom(v) => match v.value() {
1637 preserves::value::Value::Symbol(w) if w == "lit" => {}
1638 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::lit"))?,
1639 }
1640 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::lit"))?,
1641 }
1642 let _tmp1 = ();
1643 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
1644 return Err(_support::ParseError::conformance_error("schema.SimplePattern::lit"));
1645 }
1646 let _tmp2 = r.demand_next(true)?;
1647 r.ensure_complete(_tmp0)?;
1648 Ok(SimplePattern::Lit {value: _tmp2})
1649}
1650
1651fn read_simple_pattern_seqof<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1652 r.open_record(None)?;
1653 let mut _tmp0 = _support::B::Type::default();
1654 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
1655 return Err(_support::ParseError::conformance_error("schema.SimplePattern::seqof"));
1656 }
1657 match r.next_token(true)? {
1658 preserves::value::Token::Atom(v) => match v.value() {
1659 preserves::value::Value::Symbol(w) if w == "seqof" => {}
1660 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::seqof"))?,
1661 }
1662 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::seqof"))?,
1663 }
1664 let _tmp1 = ();
1665 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
1666 return Err(_support::ParseError::conformance_error("schema.SimplePattern::seqof"));
1667 }
1668 let _tmp2 = SimplePattern::deserialize(r)?;
1669 r.ensure_complete(_tmp0)?;
1670 Ok(SimplePattern::Seqof {pattern: std::boxed::Box::new(_tmp2)})
1671}
1672
1673fn read_simple_pattern_setof<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1674 r.open_record(None)?;
1675 let mut _tmp0 = _support::B::Type::default();
1676 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
1677 return Err(_support::ParseError::conformance_error("schema.SimplePattern::setof"));
1678 }
1679 match r.next_token(true)? {
1680 preserves::value::Token::Atom(v) => match v.value() {
1681 preserves::value::Value::Symbol(w) if w == "setof" => {}
1682 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::setof"))?,
1683 }
1684 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::setof"))?,
1685 }
1686 let _tmp1 = ();
1687 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
1688 return Err(_support::ParseError::conformance_error("schema.SimplePattern::setof"));
1689 }
1690 let _tmp2 = SimplePattern::deserialize(r)?;
1691 r.ensure_complete(_tmp0)?;
1692 Ok(SimplePattern::Setof {pattern: std::boxed::Box::new(_tmp2)})
1693}
1694
1695fn read_simple_pattern_dictof<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1696 r.open_record(None)?;
1697 let mut _tmp0 = _support::B::Type::default();
1698 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordLabel)? {
1699 return Err(_support::ParseError::conformance_error("schema.SimplePattern::dictof"));
1700 }
1701 match r.next_token(true)? {
1702 preserves::value::Token::Atom(v) => match v.value() {
1703 preserves::value::Value::Symbol(w) if w == "dictof" => {}
1704 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::dictof"))?,
1705 }
1706 _ => return Err(_support::ParseError::conformance_error("schema.SimplePattern::dictof"))?,
1707 }
1708 let _tmp1 = ();
1709 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
1710 return Err(_support::ParseError::conformance_error("schema.SimplePattern::dictof"));
1711 }
1712 let _tmp2 = SimplePattern::deserialize(r)?;
1713 if !r.expect_boundary(&mut _tmp0, &_support::B::Item::RecordField)? {
1714 return Err(_support::ParseError::conformance_error("schema.SimplePattern::dictof"));
1715 }
1716 let _tmp3 = SimplePattern::deserialize(r)?;
1717 r.ensure_complete(_tmp0)?;
1718 Ok(SimplePattern::Dictof {key: std::boxed::Box::new(_tmp2), value: std::boxed::Box::new(_tmp3)})
1719}
1720
1721fn read_simple_pattern_ref<'de, _Value: preserves::value::NestedValue, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1722 let _tmp0 = Ref::deserialize(r)?;
1723 Ok(SimplePattern::Ref(std::boxed::Box::new(_tmp0)))
1724}
1725
1726impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for SimplePattern<_Value> {
1727 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1728 let _mark = r.mark()?;
1729 match read_simple_pattern_any(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1730 match read_simple_pattern_atom(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1731 match read_simple_pattern_embedded(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1732 match read_simple_pattern_lit(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1733 match read_simple_pattern_seqof(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1734 match read_simple_pattern_setof(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1735 match read_simple_pattern_dictof(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1736 match read_simple_pattern_ref(r) { Err(e) if e.is_conformance_error() => r.restore(&_mark)?, result => return result }
1737 Err(_support::ParseError::conformance_error("schema.SimplePattern"))
1738 }
1739}
1740
1741fn parse_simple_pattern_any<
1742 'a,
1743 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1744 _Value: preserves::value::NestedValue + 'a
1745>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1746 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_20_ANY { return Err(_support::ParseError::conformance_error("schema.SimplePattern::any")); }
1747 let _tmp0 = ();
1748 Ok(SimplePattern::Any)
1749}
1750
1751fn parse_simple_pattern_atom<
1752 'a,
1753 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1754 _Value: preserves::value::NestedValue + 'a
1755>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1756 let _tmp0 = value.value().to_record(None)?;
1757 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_21_ATOM { return Err(_support::ParseError::conformance_error("schema.SimplePattern::atom")); }
1758 let _tmp1 = ();
1759 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.SimplePattern::atom")); }
1760 let _tmp2 = AtomKind::parse(_ctxt, (&_tmp0.fields()[0]))?;
1761 Ok(SimplePattern::Atom {atom_kind: std::boxed::Box::new(_tmp2)})
1762}
1763
1764fn parse_simple_pattern_embedded<
1765 'a,
1766 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1767 _Value: preserves::value::NestedValue + 'a
1768>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1769 let _tmp0 = value.value().to_record(None)?;
1770 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_22_EMBEDDED { return Err(_support::ParseError::conformance_error("schema.SimplePattern::embedded")); }
1771 let _tmp1 = ();
1772 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.SimplePattern::embedded")); }
1773 let _tmp2 = SimplePattern::parse(_ctxt, (&_tmp0.fields()[0]))?;
1774 Ok(SimplePattern::Embedded {interface: std::boxed::Box::new(_tmp2)})
1775}
1776
1777fn parse_simple_pattern_lit<
1778 'a,
1779 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1780 _Value: preserves::value::NestedValue + 'a
1781>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1782 let _tmp0 = value.value().to_record(None)?;
1783 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_23_LIT { return Err(_support::ParseError::conformance_error("schema.SimplePattern::lit")); }
1784 let _tmp1 = ();
1785 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.SimplePattern::lit")); }
1786 let _tmp2 = (&_tmp0.fields()[0]);
1787 Ok(SimplePattern::Lit {value: _tmp2.clone()})
1788}
1789
1790fn parse_simple_pattern_seqof<
1791 'a,
1792 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1793 _Value: preserves::value::NestedValue + 'a
1794>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1795 let _tmp0 = value.value().to_record(None)?;
1796 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_24_SEQOF { return Err(_support::ParseError::conformance_error("schema.SimplePattern::seqof")); }
1797 let _tmp1 = ();
1798 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.SimplePattern::seqof")); }
1799 let _tmp2 = SimplePattern::parse(_ctxt, (&_tmp0.fields()[0]))?;
1800 Ok(SimplePattern::Seqof {pattern: std::boxed::Box::new(_tmp2)})
1801}
1802
1803fn parse_simple_pattern_setof<
1804 'a,
1805 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1806 _Value: preserves::value::NestedValue + 'a
1807>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1808 let _tmp0 = value.value().to_record(None)?;
1809 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_25_SETOF { return Err(_support::ParseError::conformance_error("schema.SimplePattern::setof")); }
1810 let _tmp1 = ();
1811 if _tmp0.fields().len() < 1 { return Err(_support::ParseError::conformance_error("schema.SimplePattern::setof")); }
1812 let _tmp2 = SimplePattern::parse(_ctxt, (&_tmp0.fields()[0]))?;
1813 Ok(SimplePattern::Setof {pattern: std::boxed::Box::new(_tmp2)})
1814}
1815
1816fn parse_simple_pattern_dictof<
1817 'a,
1818 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1819 _Value: preserves::value::NestedValue + 'a
1820>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1821 let _tmp0 = value.value().to_record(None)?;
1822 if _tmp0.label() != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_26_DICTOF { return Err(_support::ParseError::conformance_error("schema.SimplePattern::dictof")); }
1823 let _tmp1 = ();
1824 if _tmp0.fields().len() < 2 { return Err(_support::ParseError::conformance_error("schema.SimplePattern::dictof")); }
1825 let _tmp2 = SimplePattern::parse(_ctxt, (&_tmp0.fields()[0]))?;
1826 let _tmp3 = SimplePattern::parse(_ctxt, (&_tmp0.fields()[1]))?;
1827 Ok(SimplePattern::Dictof {key: std::boxed::Box::new(_tmp2), value: std::boxed::Box::new(_tmp3)})
1828}
1829
1830fn parse_simple_pattern_ref<
1831 'a,
1832 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1833 _Value: preserves::value::NestedValue + 'a
1834>(_ctxt: _L, value: &_Value) -> std::result::Result<SimplePattern<_Value>, _support::ParseError> {
1835 let _tmp0 = Ref::parse(_ctxt, value)?;
1836 Ok(SimplePattern::Ref(std::boxed::Box::new(_tmp0)))
1837}
1838
1839impl<
1840 'a,
1841 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1842 _Value: preserves::value::NestedValue + 'a
1843> _support::Parse<_L, _Value> for SimplePattern<_Value> {
1844 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1845 if let Ok(r) = parse_simple_pattern_any(_ctxt, value) { return Ok(r); }
1846 if let Ok(r) = parse_simple_pattern_atom(_ctxt, value) { return Ok(r); }
1847 if let Ok(r) = parse_simple_pattern_embedded(_ctxt, value) { return Ok(r); }
1848 if let Ok(r) = parse_simple_pattern_lit(_ctxt, value) { return Ok(r); }
1849 if let Ok(r) = parse_simple_pattern_seqof(_ctxt, value) { return Ok(r); }
1850 if let Ok(r) = parse_simple_pattern_setof(_ctxt, value) { return Ok(r); }
1851 if let Ok(r) = parse_simple_pattern_dictof(_ctxt, value) { return Ok(r); }
1852 if let Ok(r) = parse_simple_pattern_ref(_ctxt, value) { return Ok(r); }
1853 Err(_support::ParseError::conformance_error("schema.SimplePattern"))
1854 }
1855}
1856
1857impl<
1858 'a,
1859 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1860 _Value: preserves::value::NestedValue + 'a
1861> _support::Unparse<_L, _Value> for SimplePattern<_Value> {
1862 fn unparse(&self, _ctxt: _L) -> _Value {
1863 match self {
1864 SimplePattern::Any => (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_20_ANY).clone(),
1865 SimplePattern::Atom {atom_kind: _tmp0} => {
1866 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_21_ATOM).clone()]);
1867 _tmp1.fields_vec_mut().push(_tmp0.as_ref().unparse(_ctxt));
1868 _tmp1.finish().wrap()
1869 },
1870 SimplePattern::Embedded {interface: _tmp0} => {
1871 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_22_EMBEDDED).clone()]);
1872 _tmp1.fields_vec_mut().push(_tmp0.as_ref().unparse(_ctxt));
1873 _tmp1.finish().wrap()
1874 },
1875 SimplePattern::Lit {value: _tmp0} => {
1876 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_23_LIT).clone()]);
1877 _tmp1.fields_vec_mut().push(_tmp0.clone());
1878 _tmp1.finish().wrap()
1879 },
1880 SimplePattern::Seqof {pattern: _tmp0} => {
1881 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_24_SEQOF).clone()]);
1882 _tmp1.fields_vec_mut().push(_tmp0.as_ref().unparse(_ctxt));
1883 _tmp1.finish().wrap()
1884 },
1885 SimplePattern::Setof {pattern: _tmp0} => {
1886 let mut _tmp1 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_25_SETOF).clone()]);
1887 _tmp1.fields_vec_mut().push(_tmp0.as_ref().unparse(_ctxt));
1888 _tmp1.finish().wrap()
1889 },
1890 SimplePattern::Dictof {key: _tmp0, value: _tmp1} => {
1891 let mut _tmp2 = preserves::value::Record(vec![(&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_26_DICTOF).clone()]);
1892 _tmp2.fields_vec_mut().push(_tmp0.as_ref().unparse(_ctxt));
1893 _tmp2.fields_vec_mut().push(_tmp1.as_ref().unparse(_ctxt));
1894 _tmp2.finish().wrap()
1895 },
1896 SimplePattern::Ref(_tmp0) => _tmp0.as_ref().unparse(_ctxt),
1897 }
1898 }
1899}
1900
1901#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Hash)]
1902pub struct Version;
1903
1904impl preserves::value::Domain for Version {}
1905
1906impl<_Value: preserves::value::NestedValue> _support::Deserialize<_Value> for Version {
1907 fn deserialize<'de, R: _support::Reader<'de, _Value>>(r: &mut R) -> std::result::Result<Self, _support::ParseError> {
1908 match r.next_token(true)? {
1909 preserves::value::Token::Atom(v) => match v.value() {
1910 preserves::value::Value::SignedInteger(w) if *w == (1).into() => {}
1911 _ => return Err(_support::ParseError::conformance_error("schema.Version"))?,
1912 }
1913 _ => return Err(_support::ParseError::conformance_error("schema.Version"))?,
1914 }
1915 let _tmp0 = ();
1916 Ok(Version)
1917 }
1918}
1919
1920impl<
1921 'a,
1922 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1923 _Value: preserves::value::NestedValue + 'a
1924> _support::Parse<_L, _Value> for Version {
1925 fn parse(_ctxt: _L, value: &_Value) -> std::result::Result<Self, _support::ParseError> {
1926 if value != &<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_27_1 { return Err(_support::ParseError::conformance_error("schema.Version")); }
1927 let _tmp0 = ();
1928 Ok(Version)
1929 }
1930}
1931
1932impl<
1933 'a,
1934 _L: Copy + Into<&'a crate::gen::Language<_Value>>,
1935 _Value: preserves::value::NestedValue + 'a
1936> _support::Unparse<_L, _Value> for Version {
1937 fn unparse(&self, _ctxt: _L) -> _Value {
1938 let Version = self;
1939 (&<_L as Into<&'a crate::gen::Language<_Value>>>::into(_ctxt).LIT_27_1).clone()
1940 }
1941}