[INFO] cloning repository https://github.com/mjul/rust-metaprogramming-lab
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mjul/rust-metaprogramming-lab" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmjul%2Frust-metaprogramming-lab", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmjul%2Frust-metaprogramming-lab'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ca78d221b945fbdcf6d9df8568501ac9dfbf53b4
[INFO] checking mjul/rust-metaprogramming-lab against master#5518eaa946291f00471af8b254b2a1715f234882 for pr-120393-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmjul%2Frust-metaprogramming-lab" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/mjul/rust-metaprogramming-lab on toolchain 5518eaa946291f00471af8b254b2a1715f234882
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5518eaa946291f00471af8b254b2a1715f234882" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/mjul/rust-metaprogramming-lab
[INFO] finished tweaking git repo https://github.com/mjul/rust-metaprogramming-lab
[INFO] tweaked toml for git repo https://github.com/mjul/rust-metaprogramming-lab written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/mjul/rust-metaprogramming-lab already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5518eaa946291f00471af8b254b2a1715f234882" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded proc-macro2 v1.0.40
[INFO] [stderr]   Downloaded quote v1.0.20
[INFO] [stderr]   Downloaded unicode-ident v1.0.1
[INFO] [stderr]   Downloaded fltk v1.3.11
[INFO] [stderr]   Downloaded syn v1.0.98
[INFO] [stderr]   Downloaded fltk-sys v1.3.11
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+5518eaa946291f00471af8b254b2a1715f234882" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 716f2b46e6dbead7214c4e4591de9ec561d8d956a1abe7236da921f1aeb24d7d
[INFO] running `Command { std: "docker" "start" "-a" "716f2b46e6dbead7214c4e4591de9ec561d8d956a1abe7236da921f1aeb24d7d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "716f2b46e6dbead7214c4e4591de9ec561d8d956a1abe7236da921f1aeb24d7d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "716f2b46e6dbead7214c4e4591de9ec561d8d956a1abe7236da921f1aeb24d7d", kill_on_drop: false }`
[INFO] [stdout] 716f2b46e6dbead7214c4e4591de9ec561d8d956a1abe7236da921f1aeb24d7d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+5518eaa946291f00471af8b254b2a1715f234882" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0cb4e2dcc702843ae4da2f6796af6f1e06111e66540d66b106cde355981c790f
[INFO] running `Command { std: "docker" "start" "-a" "0cb4e2dcc702843ae4da2f6796af6f1e06111e66540d66b106cde355981c790f", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling libc v0.2.126
[INFO] [stderr]    Compiling proc-macro2 v1.0.40
[INFO] [stderr]    Compiling quote v1.0.20
[INFO] [stderr]    Compiling time-macros v0.2.4
[INFO] [stderr]    Compiling syn v1.0.98
[INFO] [stderr]     Checking num_threads v0.1.6
[INFO] [stderr]     Checking itoa v1.0.2
[INFO] [stderr]    Compiling unicode-ident v1.0.1
[INFO] [stderr]    Compiling cc v1.0.73
[INFO] [stderr]    Compiling crossbeam-utils v0.8.10
[INFO] [stderr]     Checking once_cell v1.13.0
[INFO] [stderr]     Checking ttf-parser v0.15.2
[INFO] [stderr]    Compiling metaprogramming_lab v0.1.0 (/opt/rustwide/workdir/metaprogramming_lab)
[INFO] [stderr]    Compiling paste v1.0.7
[INFO] [stderr]    Compiling cmake v0.1.48
[INFO] [stderr]     Checking crossbeam-channel v0.5.5
[INFO] [stderr]    Compiling fltk-sys v1.3.11
[INFO] [stderr]     Checking time v0.3.11
[INFO] [stderr]     Checking metamodel v0.1.0 (/opt/rustwide/workdir/metamodel)
[INFO] [stderr]     Checking metamodel_macros v0.1.0 (/opt/rustwide/workdir/metamodel_macros)
[INFO] [stderr]     Checking metamodel_test v0.1.0 (/opt/rustwide/workdir/metamodel_test)
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_data_structures...
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro input parsing completed...
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Foo")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"label": "Foo Record", "description": "A Foo is a very important entity with no fields."})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [] })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", []))
[INFO] [stdout] 🚀🚀🚀 compiling fields: []
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Foo"), documentation: Documentation { label: "Foo Record", description: "A Foo is a very important entity with no fields." }, fields: [] })
[INFO] [stdout] 🚀🚀🚀 code: struct Foo {} impl Foo { pub fn new() -> Self { Self {} } } impl std ::
[INFO] [stdout] convert :: From < Foo > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Foo) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Foo Record",
[INFO] [stdout]             "A Foo is a very important entity with no fields."), values : vec!
[INFO] [stdout]             [],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Bar")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"description": "A Bar is a very important entity with just and ID.", "label": "Bar Record"})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique Bar entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The unique Bar entity ID.", "label": "ID"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"description": "The unique Bar entity ID.", "label": "ID"}, "ID")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"description": "The unique Bar entity ID.", "label": "ID"}, "ID")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"description": "The unique Bar entity ID.", "label": "ID"} "ID"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Bar"), documentation: Documentation { label: "Bar Record", description: "A Bar is a very important entity with just and ID." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique Bar entity ID." }, field_type: Primitive(Id) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Bar { pub id : u64 } impl Bar
[INFO] [stdout] { pub fn new(id : u64) -> Self { Self { id : id } } } impl std :: convert ::
[INFO] [stdout] From < Bar > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Bar) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Bar Record",
[INFO] [stdout]             "A Bar is a very important entity with just and ID."), values :
[INFO] [stdout]             vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique Bar entity ID."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Baz")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"description": "A Baz is a very important entity with two fields.", "label": "Baz Record"})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique Bar entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday for this Baz." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The unique Bar entity ID.", "label": "ID"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The birthday for this Baz.", "label": "Birthday"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"description": "The unique Bar entity ID.", "label": "ID"}, "ID"), ("birthday", {"description": "The birthday for this Baz.", "label": "Birthday"}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"description": "The unique Bar entity ID.", "label": "ID"}, "ID"), ("birthday", {"description": "The birthday for this Baz.", "label": "Birthday"}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"description": "The unique Bar entity ID.", "label": "ID"} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"description": "The birthday for this Baz.", "label": "Birthday"} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Baz"), documentation: Documentation { label: "Baz Record", description: "A Baz is a very important entity with two fields." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique Bar entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday for this Baz." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Baz { pub id : u64, pub birthday : time :: Date } impl Baz
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < Baz > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Baz) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Baz Record",
[INFO] [stdout]             "A Baz is a very important entity with two fields."), values :
[INFO] [stdout]             vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique Bar entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday for this Baz."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("AllFieldTypes")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"label": "All Field Types", "description": "This record has fields of all types."})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique Entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The name of this Entity." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "String" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday for this Entity." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] }), Comma] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The unique Entity ID.", "label": "ID"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("name")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Name", "description": "The name of this Entity."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("String")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Birthday", "description": "The birthday for this Entity."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"description": "The unique Entity ID.", "label": "ID"}, "ID"), ("name", {"label": "Name", "description": "The name of this Entity."}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday for this Entity."}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"description": "The unique Entity ID.", "label": "ID"}, "ID"), ("name", {"label": "Name", "description": "The name of this Entity."}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday for this Entity."}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"description": "The unique Entity ID.", "label": "ID"} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "name" {"label": "Name", "description": "The name of this Entity."} "String"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"label": "Birthday", "description": "The birthday for this Entity."} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("AllFieldTypes"), documentation: Documentation { label: "All Field Types", description: "This record has fields of all types." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique Entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("name"), documentation: Documentation { label: "Name", description: "The name of this Entity." }, field_type: Primitive(String) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday for this Entity." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct AllFieldTypes
[INFO] [stdout] { pub id : u64, pub name : String, pub birthday : time :: Date } impl
[INFO] [stdout] AllFieldTypes
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, name : String, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, name : name, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < AllFieldTypes > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : AllFieldTypes) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("All Field Types", "This record has fields of all types."),
[INFO] [stdout]             values : vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique Entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue ::
[INFO] [stdout]             String(String :: from(item.name)), metamodel :: Documentation ::
[INFO] [stdout]             new("Name", "The name of this Entity.")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday for this Entity."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Birth")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"label": "Birth Information", "description": "This holds information about a birth."})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "full_name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Full Name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The full name of the person." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "String" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday itself." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "ID", "description": "The unique entity ID."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("full_name")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Full Name", "description": "The full name of the person."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("String")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Birthday", "description": "The birthday itself."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"label": "ID", "description": "The unique entity ID."}, "ID"), ("full_name", {"label": "Full Name", "description": "The full name of the person."}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday itself."}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"label": "ID", "description": "The unique entity ID."}, "ID"), ("full_name", {"label": "Full Name", "description": "The full name of the person."}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday itself."}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"label": "ID", "description": "The unique entity ID."} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "full_name" {"label": "Full Name", "description": "The full name of the person."} "String"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"label": "Birthday", "description": "The birthday itself."} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Birth"), documentation: Documentation { label: "Birth Information", description: "This holds information about a birth." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("full_name"), documentation: Documentation { label: "Full Name", description: "The full name of the person." }, field_type: Primitive(String) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday itself." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Birth
[INFO] [stdout] { pub id : u64, pub full_name : String, pub birthday : time :: Date } impl
[INFO] [stdout] Birth
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, full_name : String, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, full_name : full_name, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < Birth > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Birth) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Birth Information", "This holds information about a birth."),
[INFO] [stdout]             values : vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue ::
[INFO] [stdout]             String(String :: from(item.full_name)), metamodel :: Documentation
[INFO] [stdout]             :: new("Full Name", "The full name of the person.")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday itself."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stderr]     Checking fltk v1.3.11
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Birth")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"label": "Birth Information", "description": "This holds information about a birth."})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "full_name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Full Name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The full name of the person" }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "String" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday itself." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "ID", "description": "The unique entity ID."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("full_name")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Full Name", "description": "The full name of the person"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("String")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Birthday", "description": "The birthday itself."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"label": "ID", "description": "The unique entity ID."}, "ID"), ("full_name", {"label": "Full Name", "description": "The full name of the person"}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday itself."}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"label": "ID", "description": "The unique entity ID."}, "ID"), ("full_name", {"label": "Full Name", "description": "The full name of the person"}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday itself."}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"label": "ID", "description": "The unique entity ID."} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "full_name" {"label": "Full Name", "description": "The full name of the person"} "String"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"label": "Birthday", "description": "The birthday itself."} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Birth"), documentation: Documentation { label: "Birth Information", description: "This holds information about a birth." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("full_name"), documentation: Documentation { label: "Full Name", description: "The full name of the person" }, field_type: Primitive(String) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday itself." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Birth
[INFO] [stdout] { pub id : u64, pub full_name : String, pub birthday : time :: Date } impl
[INFO] [stdout] Birth
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, full_name : String, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, full_name : full_name, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < Birth > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Birth) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Birth Information", "This holds information about a birth."),
[INFO] [stdout]             values : vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue ::
[INFO] [stdout]             String(String :: from(item.full_name)), metamodel :: Documentation
[INFO] [stdout]             :: new("Full Name", "The full name of the person")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday itself."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Birth")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"label": "Birth Information", "description": "This holds information about a birth."})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "full_name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Full Name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The full name of the person" }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "String" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday itself." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The unique entity ID.", "label": "ID"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("full_name")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The full name of the person", "label": "Full Name"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("String")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The birthday itself.", "label": "Birthday"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"description": "The unique entity ID.", "label": "ID"}, "ID"), ("full_name", {"description": "The full name of the person", "label": "Full Name"}, "String"), ("birthday", {"description": "The birthday itself.", "label": "Birthday"}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"description": "The unique entity ID.", "label": "ID"}, "ID"), ("full_name", {"description": "The full name of the person", "label": "Full Name"}, "String"), ("birthday", {"description": "The birthday itself.", "label": "Birthday"}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"description": "The unique entity ID.", "label": "ID"} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "full_name" {"description": "The full name of the person", "label": "Full Name"} "String"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"description": "The birthday itself.", "label": "Birthday"} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Birth"), documentation: Documentation { label: "Birth Information", description: "This holds information about a birth." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("full_name"), documentation: Documentation { label: "Full Name", description: "The full name of the person" }, field_type: Primitive(String) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday itself." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Birth
[INFO] [stdout] { pub id : u64, pub full_name : String, pub birthday : time :: Date } impl
[INFO] [stdout] Birth
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, full_name : String, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, full_name : full_name, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < Birth > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Birth) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Birth Information", "This holds information about a birth."),
[INFO] [stdout]             values : vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue ::
[INFO] [stdout]             String(String :: from(item.full_name)), metamodel :: Documentation
[INFO] [stdout]             :: new("Full Name", "The full name of the person")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday itself."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 56.00s
[INFO] running `Command { std: "docker" "inspect" "0cb4e2dcc702843ae4da2f6796af6f1e06111e66540d66b106cde355981c790f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0cb4e2dcc702843ae4da2f6796af6f1e06111e66540d66b106cde355981c790f", kill_on_drop: false }`
[INFO] [stdout] 0cb4e2dcc702843ae4da2f6796af6f1e06111e66540d66b106cde355981c790f
[INFO] checking mjul/rust-metaprogramming-lab against try#7622c0f807a4e13c4db886a1681bf343795692df+rustflags=-Dnon_local_definitions for pr-120393-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmjul%2Frust-metaprogramming-lab" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/mjul/rust-metaprogramming-lab on toolchain 7622c0f807a4e13c4db886a1681bf343795692df
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+7622c0f807a4e13c4db886a1681bf343795692df" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/mjul/rust-metaprogramming-lab
[INFO] finished tweaking git repo https://github.com/mjul/rust-metaprogramming-lab
[INFO] tweaked toml for git repo https://github.com/mjul/rust-metaprogramming-lab written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/mjul/rust-metaprogramming-lab already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+7622c0f807a4e13c4db886a1681bf343795692df" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+7622c0f807a4e13c4db886a1681bf343795692df" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c029356f1bca47e1eda9980fdc37e1f2be92ab6c99506f1115621dd0784ec8c5
[INFO] running `Command { std: "docker" "start" "-a" "c029356f1bca47e1eda9980fdc37e1f2be92ab6c99506f1115621dd0784ec8c5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c029356f1bca47e1eda9980fdc37e1f2be92ab6c99506f1115621dd0784ec8c5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c029356f1bca47e1eda9980fdc37e1f2be92ab6c99506f1115621dd0784ec8c5", kill_on_drop: false }`
[INFO] [stdout] c029356f1bca47e1eda9980fdc37e1f2be92ab6c99506f1115621dd0784ec8c5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dnon_local_definitions" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+7622c0f807a4e13c4db886a1681bf343795692df" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7c0cd022c1d596c7f859f55f8e17a30662ad1230220192c98cc7ff6129b9088d
[INFO] running `Command { std: "docker" "start" "-a" "7c0cd022c1d596c7f859f55f8e17a30662ad1230220192c98cc7ff6129b9088d", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling libc v0.2.126
[INFO] [stderr]    Compiling proc-macro2 v1.0.40
[INFO] [stderr]    Compiling time-macros v0.2.4
[INFO] [stderr]    Compiling quote v1.0.20
[INFO] [stderr]    Compiling syn v1.0.98
[INFO] [stderr]     Checking num_threads v0.1.6
[INFO] [stderr]     Checking itoa v1.0.2
[INFO] [stderr]    Compiling unicode-ident v1.0.1
[INFO] [stderr]    Compiling cc v1.0.73
[INFO] [stderr]    Compiling crossbeam-utils v0.8.10
[INFO] [stderr]     Checking once_cell v1.13.0
[INFO] [stderr]     Checking ttf-parser v0.15.2
[INFO] [stderr]    Compiling paste v1.0.7
[INFO] [stderr]    Compiling metaprogramming_lab v0.1.0 (/opt/rustwide/workdir/metaprogramming_lab)
[INFO] [stderr]    Compiling cmake v0.1.48
[INFO] [stderr]    Compiling fltk-sys v1.3.11
[INFO] [stderr]     Checking crossbeam-channel v0.5.5
[INFO] [stderr]     Checking time v0.3.11
[INFO] [stderr]    Compiling metamodel v0.1.0 (/opt/rustwide/workdir/metamodel)
[INFO] [stderr]     Checking metamodel_macros v0.1.0 (/opt/rustwide/workdir/metamodel_macros)
[INFO] [stderr]     Checking metamodel_test v0.1.0 (/opt/rustwide/workdir/metamodel_test)
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_data_structures...
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro input parsing completed...
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Foo")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"description": "A Foo is a very important entity with no fields.", "label": "Foo Record"})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [] })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", []))
[INFO] [stdout] 🚀🚀🚀 compiling fields: []
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Foo"), documentation: Documentation { label: "Foo Record", description: "A Foo is a very important entity with no fields." }, fields: [] })
[INFO] [stdout] 🚀🚀🚀 code: struct Foo {} impl Foo { pub fn new() -> Self { Self {} } } impl std ::
[INFO] [stdout] convert :: From < Foo > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Foo) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Foo Record",
[INFO] [stdout]             "A Foo is a very important entity with no fields."), values : vec!
[INFO] [stdout]             [],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Bar")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"description": "A Bar is a very important entity with just and ID.", "label": "Bar Record"})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique Bar entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The unique Bar entity ID.", "label": "ID"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"description": "The unique Bar entity ID.", "label": "ID"}, "ID")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"description": "The unique Bar entity ID.", "label": "ID"}, "ID")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"description": "The unique Bar entity ID.", "label": "ID"} "ID"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Bar"), documentation: Documentation { label: "Bar Record", description: "A Bar is a very important entity with just and ID." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique Bar entity ID." }, field_type: Primitive(Id) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Bar { pub id : u64 } impl Bar
[INFO] [stdout] { pub fn new(id : u64) -> Self { Self { id : id } } } impl std :: convert ::
[INFO] [stdout] From < Bar > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Bar) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Bar Record",
[INFO] [stdout]             "A Bar is a very important entity with just and ID."), values :
[INFO] [stdout]             vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique Bar entity ID."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Baz")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"description": "A Baz is a very important entity with two fields.", "label": "Baz Record"})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique Bar entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday for this Baz." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "ID", "description": "The unique Bar entity ID."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Birthday", "description": "The birthday for this Baz."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"label": "ID", "description": "The unique Bar entity ID."}, "ID"), ("birthday", {"label": "Birthday", "description": "The birthday for this Baz."}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"label": "ID", "description": "The unique Bar entity ID."}, "ID"), ("birthday", {"label": "Birthday", "description": "The birthday for this Baz."}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"label": "ID", "description": "The unique Bar entity ID."} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"label": "Birthday", "description": "The birthday for this Baz."} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Baz"), documentation: Documentation { label: "Baz Record", description: "A Baz is a very important entity with two fields." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique Bar entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday for this Baz." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Baz { pub id : u64, pub birthday : time :: Date } impl Baz
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < Baz > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Baz) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Baz Record",
[INFO] [stdout]             "A Baz is a very important entity with two fields."), values :
[INFO] [stdout]             vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique Bar entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday for this Baz."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("AllFieldTypes")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"label": "All Field Types", "description": "This record has fields of all types."})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique Entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The name of this Entity." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "String" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday for this Entity." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] }), Comma] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The unique Entity ID.", "label": "ID"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("name")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The name of this Entity.", "label": "Name"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("String")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Birthday", "description": "The birthday for this Entity."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"description": "The unique Entity ID.", "label": "ID"}, "ID"), ("name", {"description": "The name of this Entity.", "label": "Name"}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday for this Entity."}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"description": "The unique Entity ID.", "label": "ID"}, "ID"), ("name", {"description": "The name of this Entity.", "label": "Name"}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday for this Entity."}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"description": "The unique Entity ID.", "label": "ID"} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "name" {"description": "The name of this Entity.", "label": "Name"} "String"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"label": "Birthday", "description": "The birthday for this Entity."} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("AllFieldTypes"), documentation: Documentation { label: "All Field Types", description: "This record has fields of all types." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique Entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("name"), documentation: Documentation { label: "Name", description: "The name of this Entity." }, field_type: Primitive(String) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday for this Entity." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct AllFieldTypes
[INFO] [stdout] { pub id : u64, pub name : String, pub birthday : time :: Date } impl
[INFO] [stdout] AllFieldTypes
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, name : String, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, name : name, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < AllFieldTypes > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : AllFieldTypes) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("All Field Types", "This record has fields of all types."),
[INFO] [stdout]             values : vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique Entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue ::
[INFO] [stdout]             String(String :: from(item.name)), metamodel :: Documentation ::
[INFO] [stdout]             new("Name", "The name of this Entity.")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday for this Entity."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 running macro: generate_model_from_tuple...
[INFO] [stdout] 🔍 parsing tuple expression...
[INFO] [stdout] 🚀🚀🚀 tag_expr    = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "record" }) })
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type!
[INFO] [stdout] 🚀🚀🚀 parsing an ARRAY with name and documentation!
[INFO] [stdout] 🚀🚀🚀 name: Ok("Birth")
[INFO] [stdout] 🚀🚀🚀 docs_map: Ok({"label": "Birth Information", "description": "This holds information about a birth."})
[INFO] [stdout] 🚀🚀🚀 tag_expr = Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "fields" }) })
[INFO] [stdout] 🚀🚀🚀 outer_array_expr = Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "id" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The unique entity ID." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "ID" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "full_name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Full Name" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The full name of the person." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "String" }) })] })] }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "name" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "documentation" }) }), Comma, Array(ExprArray { attrs: [], bracket_token: Bracket, elems: [Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "label" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "Birthday" }) })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "description" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "The birthday itself." }) })] })] })] }), Comma, Tuple(ExprTuple { attrs: [], paren_token: Paren, elems: [Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "type" }) }), Comma, Lit(ExprLit { attrs: [], lit: Str(LitStr { token: "LocalDate" }) })] })] })] })
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("id")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "ID", "description": "The unique entity ID."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("ID")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("full_name")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"description": "The full name of the person.", "label": "Full Name"})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("String")
[INFO] [stdout] 🚀🚀🚀 >>> opt_name_kv = Ok("birthday")
[INFO] [stdout] 🚀🚀🚀 >>> opt_docs = Ok({"label": "Birthday", "description": "The birthday itself."})
[INFO] [stdout] 🚀🚀🚀 >>> opt_type = Ok("LocalDate")
[INFO] [stdout] 🚀🚀🚀 compiling a RECORD type with fields: Ok(("fields", [("id", {"label": "ID", "description": "The unique entity ID."}, "ID"), ("full_name", {"description": "The full name of the person.", "label": "Full Name"}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday itself."}, "LocalDate")]))
[INFO] [stdout] 🚀🚀🚀 compiling fields: [("id", {"label": "ID", "description": "The unique entity ID."}, "ID"), ("full_name", {"description": "The full name of the person.", "label": "Full Name"}, "String"), ("birthday", {"label": "Birthday", "description": "The birthday itself."}, "LocalDate")]
[INFO] [stdout] 🚀🚀🚀 compiling field: "id" {"label": "ID", "description": "The unique entity ID."} "ID"
[INFO] [stdout] 🚀🚀🚀 compiling field: "full_name" {"description": "The full name of the person.", "label": "Full Name"} "String"
[INFO] [stdout] 🚀🚀🚀 compiling field: "birthday" {"label": "Birthday", "description": "The birthday itself."} "LocalDate"
[INFO] [stdout] 📝 generating code...
[INFO] [stdout] 🚀🚀🚀 meta-model: RecordDeclarationExpr(RecordDeclaration { name: Literal("Birth"), documentation: Documentation { label: "Birth Information", description: "This holds information about a birth." }, fields: [FieldDeclaration { name: Literal("id"), documentation: Documentation { label: "ID", description: "The unique entity ID." }, field_type: Primitive(Id) }, FieldDeclaration { name: Literal("full_name"), documentation: Documentation { label: "Full Name", description: "The full name of the person." }, field_type: Primitive(String) }, FieldDeclaration { name: Literal("birthday"), documentation: Documentation { label: "Birthday", description: "The birthday itself." }, field_type: Primitive(LocalDate) }] })
[INFO] [stdout] 🚀🚀🚀 code: struct Birth
[INFO] [stdout] { pub id : u64, pub full_name : String, pub birthday : time :: Date } impl
[INFO] [stdout] Birth
[INFO] [stdout] {
[INFO] [stdout]     pub fn new(id : u64, full_name : String, birthday : time :: Date) -> Self
[INFO] [stdout]     { Self { id : id, full_name : full_name, birthday : birthday } }
[INFO] [stdout] } impl std :: convert :: From < Birth > for metamodel :: Displayable
[INFO] [stdout] {
[INFO] [stdout]     fn from(item : Birth) -> metamodel :: Displayable
[INFO] [stdout]     {
[INFO] [stdout]         metamodel :: Displayable
[INFO] [stdout]         {
[INFO] [stdout]             documentation : Documentation ::
[INFO] [stdout]             new("Birth Information", "This holds information about a birth."),
[INFO] [stdout]             values : vec!
[INFO] [stdout]             [(metamodel :: DisplayableValue :: Id(item.id), metamodel ::
[INFO] [stdout]             Documentation :: new("ID", "The unique entity ID.")),
[INFO] [stdout]             (metamodel :: DisplayableValue ::
[INFO] [stdout]             String(String :: from(item.full_name)), metamodel :: Documentation
[INFO] [stdout]             :: new("Full Name", "The full name of the person.")),
[INFO] [stdout]             (metamodel :: DisplayableValue :: LocalDate(item.birthday),
[INFO] [stdout]             metamodel :: Documentation ::
[INFO] [stdout]             new("Birthday", "The birthday itself."))],
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 macro completed.
[INFO] [stdout] error: non-local `impl` definition, they should be avoided as they go against expectation
[INFO] [stdout]   --> metamodel_test/src/lib.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 | /             metamodel_macros::generate_model_from_tuple!((
[INFO] [stdout] 45 | |                 "record",
[INFO] [stdout] 46 | |                 [
[INFO] [stdout] 47 | |                     ("name", "Foo"),
[INFO] [stdout] ...  |
[INFO] [stdout] 59 | |                 ("fields", [])
[INFO] [stdout] 60 | |             ));
[INFO] [stdout]    | |______________^
[INFO] [stdout]    |
[INFO] [stdout]    = help: move this `impl` block outside the of the current function `must_emit_data_structure_for_record_declaration_with_no_fields`
[INFO] [stdout]    = note: an `impl` definition is non-local if it is nested inside an item and neither the type nor the trait are at the same nesting level as the `impl` block
[INFO] [stdout]    = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
[INFO] [stdout]    = note: requested on the command line with `-D non-local-definitions`
[INFO] [stdout]    = note: this error originates in the macro `metamodel_macros::generate_model_from_tuple` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: non-local `impl` definition, they should be avoided as they go against expectation
[INFO] [stdout]    --> metamodel_test/src/lib.rs:73:13
[INFO] [stdout]     |
[INFO] [stdout] 73  | /             metamodel_macros::generate_model_from_tuple!((
[INFO] [stdout] 74  | |                 "record",
[INFO] [stdout] 75  | |                 [
[INFO] [stdout] 76  | |                     ("name", "Bar"),
[INFO] [stdout] ...   |
[INFO] [stdout] 101 | |                 )
[INFO] [stdout] 102 | |             ));
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout]     = help: move this `impl` block outside the of the current function `must_emit_data_structure_for_record_declaration_with_one_field`
[INFO] [stdout]     = note: an `impl` definition is non-local if it is nested inside an item and neither the type nor the trait are at the same nesting level as the `impl` block
[INFO] [stdout]     = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
[INFO] [stdout]     = note: this error originates in the macro `metamodel_macros::generate_model_from_tuple` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: non-local `impl` definition, they should be avoided as they go against expectation
[INFO] [stdout]    --> metamodel_test/src/lib.rs:116:13
[INFO] [stdout]     |
[INFO] [stdout] 116 | /             metamodel_macros::generate_model_from_tuple!((
[INFO] [stdout] 117 | |                 "record",
[INFO] [stdout] 118 | |                 [
[INFO] [stdout] 119 | |                     ("name", "Baz"),
[INFO] [stdout] ...   |
[INFO] [stdout] 157 | |                 )
[INFO] [stdout] 158 | |             ));
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout]     = help: move this `impl` block outside the of the current function `must_emit_data_structure_for_record_declaration_with_two_fields`
[INFO] [stdout]     = note: an `impl` definition is non-local if it is nested inside an item and neither the type nor the trait are at the same nesting level as the `impl` block
[INFO] [stdout]     = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
[INFO] [stdout]     = note: this error originates in the macro `metamodel_macros::generate_model_from_tuple` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: non-local `impl` definition, they should be avoided as they go against expectation
[INFO] [stdout]    --> metamodel_test/src/lib.rs:178:13
[INFO] [stdout]     |
[INFO] [stdout] 178 | /             metamodel_macros::generate_model_from_tuple!((
[INFO] [stdout] 179 | |                 "record",
[INFO] [stdout] 180 | |                 [
[INFO] [stdout] 181 | |                     ("name", "AllFieldTypes"),
[INFO] [stdout] ...   |
[INFO] [stdout] 224 | |                 )
[INFO] [stdout] 225 | |             ));
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout]     = help: move this `impl` block outside the of the current function `must_emit_data_structure_for_record_declaration_with_all_field_types`
[INFO] [stdout]     = note: an `impl` definition is non-local if it is nested inside an item and neither the type nor the trait are at the same nesting level as the `impl` block
[INFO] [stdout]     = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue <https://github.com/rust-lang/rust/issues/120363>
[INFO] [stdout]     = note: this error originates in the macro `metamodel_macros::generate_model_from_tuple` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `metamodel_test` (lib test) due to 5 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "7c0cd022c1d596c7f859f55f8e17a30662ad1230220192c98cc7ff6129b9088d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7c0cd022c1d596c7f859f55f8e17a30662ad1230220192c98cc7ff6129b9088d", kill_on_drop: false }`
[INFO] [stdout] 7c0cd022c1d596c7f859f55f8e17a30662ad1230220192c98cc7ff6129b9088d
