Small fixes

This commit is contained in:
Tony Garnock-Jones 2021-06-28 17:08:44 +02:00
parent 4144a90b9d
commit c7dbbdc178
2 changed files with 40 additions and 22 deletions

View File

@ -152,19 +152,19 @@ pub fn render_field_type(box_needed: bool, t: &TField) -> impl Emittable {
pub fn render_recordlike_type(is_struct: bool, n: &str, d: &TSimple) -> impl Emittable {
let semi = if is_struct { seq![";"] } else { seq![] };
let ppub = if is_struct { "pub " } else { "" };
seq![names::render_constructor(n), match d {
TSimple::Record(TRecord(fs)) => seq![" ", braces(
fs.iter().map(|(n, d)| item(
seq![if is_struct { "pub " } else { "" },
names::render_fieldname(n), ": ", render_field_type(true, d)]
seq![ppub, names::render_fieldname(n), ": ", render_field_type(true, d)]
)).collect())],
TSimple::Field(TField::Unit) => semi,
TSimple::Field(t) => seq![parens![render_field_type(true, t)], semi],
TSimple::Field(t) => seq![parens![seq![ppub, render_field_type(true, t)]], semi],
}]
}
pub fn render_definition_type(n: &str, t: &TDefinition) -> impl Emittable {
seq!["#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] ",
seq!["#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]\n",
match t {
TDefinition::Union(items) =>
seq!["pub enum ", names::render_constructor(n), " ", braces(

View File

@ -36,13 +36,17 @@ lazy_static! {
pub static ref LIT20: preserves::value::IOValue = /* version */ preserves::value::PackedReader::decode_bytes(&vec![179, 7, 118, 101, 114, 115, 105, 111, 110]).demand_next(false).unwrap();
}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum AtomKind {Boolean, Float, Double, SignedInteger, String, ByteString, Symbol}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum AtomKind {Boolean, Float, Double, SignedInteger, String, ByteString, Symbol}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Binding {pub name: std::string::String, pub pattern: std::boxed::Box<SimplePattern>}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct Binding {pub name: std::string::String, pub pattern: std::boxed::Box<SimplePattern>}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Bundle {pub modules: std::boxed::Box<Modules>}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct Bundle {pub modules: std::boxed::Box<Modules>}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum CompoundPattern {
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum CompoundPattern {
Rec {label: std::boxed::Box<NamedPattern>, fields: std::boxed::Box<NamedPattern>},
Tuple {patterns: std::vec::Vec<NamedPattern>},
TuplePrefix {
@ -52,7 +56,8 @@ lazy_static! {
Dict {entries: std::boxed::Box<DictionaryEntries>}
}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum Definition {
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum Definition {
Or {
pattern_0: std::boxed::Box<NamedAlternative>,
pattern_1: std::boxed::Box<NamedAlternative>,
@ -66,36 +71,48 @@ lazy_static! {
Pattern(std::boxed::Box<Pattern>)
}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Definitions(preserves::value::Map<std::string::String, Definition>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct Definitions(pub preserves::value::Map<std::string::String, Definition>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct DictionaryEntries(preserves::value::Map<preserves::value::IOValue, NamedSimplePattern>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct DictionaryEntries(pub preserves::value::Map<preserves::value::IOValue, NamedSimplePattern>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum EmbeddedTypeName {Ref(std::boxed::Box<Ref>), False}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum EmbeddedTypeName {Ref(std::boxed::Box<Ref>), False}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct ModulePath(std::vec::Vec<std::string::String>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct ModulePath(pub std::vec::Vec<std::string::String>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Modules(preserves::value::Map<ModulePath, Schema>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct Modules(pub preserves::value::Map<ModulePath, Schema>);
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct NamedAlternative {pub variant_label: std::string::String, pub pattern: std::boxed::Box<Pattern>}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct NamedAlternative {pub variant_label: std::string::String, pub pattern: std::boxed::Box<Pattern>}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum NamedPattern {Named(std::boxed::Box<Binding>), Anonymous(std::boxed::Box<Pattern>)}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum NamedPattern {Named(std::boxed::Box<Binding>), Anonymous(std::boxed::Box<Pattern>)}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum NamedSimplePattern {Named(std::boxed::Box<Binding>), Anonymous(std::boxed::Box<SimplePattern>)}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum NamedSimplePattern {Named(std::boxed::Box<Binding>), Anonymous(std::boxed::Box<SimplePattern>)}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum Pattern {
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum Pattern {
SimplePattern(std::boxed::Box<SimplePattern>),
CompoundPattern(std::boxed::Box<CompoundPattern>)
}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Ref {pub module: std::boxed::Box<ModulePath>, pub name: std::string::String}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct Ref {pub module: std::boxed::Box<ModulePath>, pub name: std::string::String}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Schema {
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct Schema {
pub definitions: std::boxed::Box<Definitions>,
pub embedded_type: std::boxed::Box<EmbeddedTypeName>,
pub version: std::boxed::Box<Version>
}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub enum SimplePattern {
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub enum SimplePattern {
Any,
Atom {atom_kind: std::boxed::Box<AtomKind>},
Embedded {interface: std::boxed::Box<SimplePattern>},
@ -106,7 +123,8 @@ lazy_static! {
Ref(std::boxed::Box<Ref>)
}
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] pub struct Version;
#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)]
pub struct Version;
fn _parse_atom_kind_boolean(value: &preserves::value::IOValue) -> std::result::Result<AtomKind, ()> {if value != &*LIT0 { return Err(()); } let _tmp0 = (); Ok(AtomKind::Boolean)}