[INFO] cloning repository https://github.com/Yamaguchi/blake3rb [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Yamaguchi/blake3rb" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYamaguchi%2Fblake3rb", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYamaguchi%2Fblake3rb'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 739e3da5b7dbd31703e9bed9329206fa99d015ca [INFO] checking Yamaguchi/blake3rb against beta for pr-78714 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYamaguchi%2Fblake3rb" "/workspace/builds/worker-4/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Yamaguchi/blake3rb on toolchain beta [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Yamaguchi/blake3rb [INFO] finished tweaking git repo https://github.com/Yamaguchi/blake3rb [INFO] tweaked toml for git repo https://github.com/Yamaguchi/blake3rb written to /workspace/builds/worker-4/source/Cargo.toml [INFO] crate git repo https://github.com/Yamaguchi/blake3rb already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] c7d5ca78775dd9bd839e8fa67a3107d45a93eee297fb2c2d817e2dbcf566d8fe [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "c7d5ca78775dd9bd839e8fa67a3107d45a93eee297fb2c2d817e2dbcf566d8fe", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c7d5ca78775dd9bd839e8fa67a3107d45a93eee297fb2c2d817e2dbcf566d8fe", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c7d5ca78775dd9bd839e8fa67a3107d45a93eee297fb2c2d817e2dbcf566d8fe", kill_on_drop: false }` [INFO] [stdout] c7d5ca78775dd9bd839e8fa67a3107d45a93eee297fb2c2d817e2dbcf566d8fe [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 135edcaa8fa91aa289b584b74087826dbaf890477ef9f32663050d5635360d52 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "135edcaa8fa91aa289b584b74087826dbaf890477ef9f32663050d5635360d52", kill_on_drop: false }` [INFO] [stderr] Compiling libcruby-sys v0.7.5 [INFO] [stderr] Checking cstr-macro v0.1.0 [INFO] [stderr] Checking arrayvec v0.5.1 [INFO] [stderr] Checking constant_time_eq v0.1.5 [INFO] [stderr] Checking arrayref v0.3.5 [INFO] [stderr] Checking hex v0.3.2 [INFO] [stderr] Compiling blake3 v0.1.2 [INFO] [stderr] Checking helix v0.7.5 [INFO] [stderr] Checking blake3native v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] {"reason":"compiler-message","package_id":"blake3native 0.1.0 (path+file:///opt/rustwide/workdir)","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"blake3native","src_path":"/opt/rustwide/workdir/src/lib.rs","edition":"2018","doctest":false,"test":true},"message":{"rendered":"warning: use of deprecated macro `try`: use the `?` operator instead\n --> src/lib.rs:6:1\n |\n6 | / ruby! {\n7 | | class Blake3Hasher {\n8 | | struct {\n9 | | hasher: blake3::Hasher,\n... |\n72 | | }\n73 | | }\n | |_^\n |\n = note: `#[warn(deprecated)]` on by default\n = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)\n\n","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(deprecated)]` on by default","rendered":null,"spans":[]}],"code":{"code":"deprecated","explanation":null},"level":"warning","message":"use of deprecated macro `try`: use the `?` operator instead","spans":[{"byte_end":4625,"byte_start":4622,"column_end":32,"column_start":29,"expansion":{"def_site_span":{"byte_end":7418,"byte_start":2021,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/init.rs","is_primary":false,"label":null,"line_end":252,"line_start":80,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":37,"highlight_start":1,"text":"macro_rules! codegen_define_method {"},{"highlight_end":16,"highlight_start":1,"text":" ($def:tt, {"},{"highlight_end":21,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $cls_rust_name:tt,"},{"highlight_end":21,"highlight_start":1,"text":" $($rest:tt)*"},{"highlight_end":9,"highlight_start":1,"text":" }, {"},{"highlight_end":28,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: { $($ruby_name:tt)* },"},{"highlight_end":18,"highlight_start":1,"text":" self: (),"},{"highlight_end":44,"highlight_start":1,"text":" args: [ $($arg:tt : $argty:ty),* ],"},{"highlight_end":30,"highlight_start":1,"text":" ret: { $($ret:tt)* },"},{"highlight_end":23,"highlight_start":1,"text":" body: $body:tt"},{"highlight_end":13,"highlight_start":1,"text":" }) => ({"},{"highlight_end":34,"highlight_start":1,"text":" use $crate::sys::{VALUE};"},{"highlight_end":29,"highlight_start":1,"text":" use $crate::{Error};"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":78,"highlight_start":1,"text":" extern \"C\" fn __ruby_method__(_: VALUE, $($arg : VALUE),*) -> VALUE {"},{"highlight_end":53,"highlight_start":1,"text":" let result = __rust_method__($($arg),*);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" match result {"},{"highlight_end":43,"highlight_start":1,"text":" Ok(value) => return value,"},{"highlight_end":63,"highlight_start":1,"text":" Err(exception) => unsafe { exception.raise() }"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":18,"highlight_start":1,"text":" #[inline]"},{"highlight_end":85,"highlight_start":1,"text":" fn __rust_method__($($arg : $crate::sys::VALUE),*) -> Result {"},{"highlight_end":37,"highlight_start":1,"text":" #[allow(unused_imports)]"},{"highlight_end":44,"highlight_start":1,"text":" use $crate::{FromRuby, ToRuby};"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":15,"highlight_start":1,"text":" $("},{"highlight_end":60,"highlight_start":1,"text":" let $arg = try!(<$argty>::from_ruby($arg));"},{"highlight_end":15,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":15,"highlight_start":1,"text":" $("},{"highlight_end":57,"highlight_start":1,"text":" let $arg = <$argty>::from_checked($arg);"},{"highlight_end":15,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":70,"highlight_start":1,"text":" let result: Result<$($ret)*, Error> = handle_exception! {"},{"highlight_end":54,"highlight_start":1,"text":" $cls_rust_name::$rust_name($($arg),*)"},{"highlight_end":15,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":45,"highlight_start":1,"text":" result.and_then(ToRuby::to_ruby)"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":42,"highlight_start":1,"text":" let name = cstr!($($ruby_name)*);"},{"highlight_end":69,"highlight_start":1,"text":" let method = __ruby_method__ as *const $crate::libc::c_void;"},{"highlight_end":45,"highlight_start":1,"text":" let arity = method_arity!($($arg)*);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":82,"highlight_start":1,"text":" $def.define_method($crate::MethodDefinition::class(name, method, arity));"},{"highlight_end":8,"highlight_start":1,"text":" });"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":16,"highlight_start":1,"text":" ($def:tt, {"},{"highlight_end":21,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $cls_rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $cls_ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":28,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":21,"highlight_start":1,"text":" $($rest:tt)*"},{"highlight_end":9,"highlight_start":1,"text":" }, {"},{"highlight_end":31,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: { $($ruby_name:tt)* },"},{"highlight_end":68,"highlight_start":1,"text":" self: { ownership: { $($ownership:tt)* }, name: $self:tt },"},{"highlight_end":44,"highlight_start":1,"text":" args: [ $($arg:tt : $argty:ty),* ],"},{"highlight_end":30,"highlight_start":1,"text":" ret: { $($ret:tt)* },"},{"highlight_end":23,"highlight_start":1,"text":" body: $body:tt"},{"highlight_end":13,"highlight_start":1,"text":" }) => ({"},{"highlight_end":34,"highlight_start":1,"text":" use $crate::sys::{VALUE};"},{"highlight_end":29,"highlight_start":1,"text":" use $crate::{Error};"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":84,"highlight_start":1,"text":" extern \"C\" fn __ruby_method__(rb_self: VALUE, $($arg : VALUE),*) -> VALUE {"},{"highlight_end":62,"highlight_start":1,"text":" let result = __rust_method__(rb_self, $($arg),*);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" match result {"},{"highlight_end":43,"highlight_start":1,"text":" Ok(value) => return value,"},{"highlight_end":63,"highlight_start":1,"text":" Err(exception) => unsafe { exception.raise() }"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":18,"highlight_start":1,"text":" #[inline]"},{"highlight_end":88,"highlight_start":1,"text":" fn __rust_method__(rb_self: VALUE, $($arg : VALUE),*) -> Result {"},{"highlight_end":37,"highlight_start":1,"text":" #[allow(unused_imports)]"},{"highlight_end":44,"highlight_start":1,"text":" use $crate::{FromRuby, ToRuby};"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":157,"highlight_start":1,"text":" let rust_self = try!(::from_ruby(rb_self));"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":15,"highlight_start":1,"text":" $("},{"highlight_end":60,"highlight_start":1,"text":" let $arg = try!(<$argty>::from_ruby($arg));"},{"highlight_end":15,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":156,"highlight_start":1,"text":" let rust_self = ::from_checked(rust_self);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":15,"highlight_start":1,"text":" $("},{"highlight_end":57,"highlight_start":1,"text":" let $arg = <$argty>::from_checked($arg);"},{"highlight_end":15,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":70,"highlight_start":1,"text":" let result: Result<$($ret)*, Error> = handle_exception! {"},{"highlight_end":48,"highlight_start":1,"text":" rust_self.$rust_name($($arg),*)"},{"highlight_end":15,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":45,"highlight_start":1,"text":" result.and_then(ToRuby::to_ruby)"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":42,"highlight_start":1,"text":" let name = cstr!($($ruby_name)*);"},{"highlight_end":69,"highlight_start":1,"text":" let method = __ruby_method__ as *const $crate::libc::c_void;"},{"highlight_end":45,"highlight_start":1,"text":" let arity = method_arity!($($arg)*);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":84,"highlight_start":1,"text":" $def.define_method($crate::MethodDefinition::instance(name, method, arity))"},{"highlight_end":8,"highlight_start":1,"text":" });"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":16,"highlight_start":1,"text":" ($def:tt, {"},{"highlight_end":21,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $cls_rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $cls_ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":28,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":21,"highlight_start":1,"text":" $($rest:tt)*"},{"highlight_end":9,"highlight_start":1,"text":" }, {"},{"highlight_end":27,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: { $($ruby_name:tt)* },"},{"highlight_end":49,"highlight_start":1,"text":" self: { ownership: {}, name: $self:tt },"},{"highlight_end":44,"highlight_start":1,"text":" args: [ $($arg:tt : $argty:ty),* ],"},{"highlight_end":30,"highlight_start":1,"text":" ret: { $($ret:tt)* },"},{"highlight_end":23,"highlight_start":1,"text":" body: $body:tt"},{"highlight_end":13,"highlight_start":1,"text":" }) => ({"},{"highlight_end":34,"highlight_start":1,"text":" use $crate::sys::{VALUE};"},{"highlight_end":29,"highlight_start":1,"text":" use $crate::{Error};"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" impl $cls_rust_name {"},{"highlight_end":57,"highlight_start":1,"text":" pub fn new($($arg : $argty),*) -> $($ret)* {"},{"highlight_end":85,"highlight_start":1,"text":" $cls_rust_name::$rust_name(unsafe { $crate::sys::Qnil } , $($arg),*)"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":88,"highlight_start":1,"text":" extern \"C\" fn __ruby_initialize__(rb_self: VALUE, $($arg : VALUE),*) -> VALUE {"},{"highlight_end":66,"highlight_start":1,"text":" let result = __rust_initialize__(rb_self $(, $arg)*);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" match result {"},{"highlight_end":43,"highlight_start":1,"text":" Ok(value) => return value,"},{"highlight_end":63,"highlight_start":1,"text":" Err(exception) => unsafe { exception.raise() }"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":18,"highlight_start":1,"text":" #[inline]"},{"highlight_end":92,"highlight_start":1,"text":" fn __rust_initialize__(rb_self: VALUE, $($arg : VALUE),*) -> Result {"},{"highlight_end":37,"highlight_start":1,"text":" #[allow(unused_imports)]"},{"highlight_end":36,"highlight_start":1,"text":" use $crate::{FromRuby};"},{"highlight_end":54,"highlight_start":1,"text":" use $crate::sys::{Data_Set_Struct_Value};"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":15,"highlight_start":1,"text":" $("},{"highlight_end":60,"highlight_start":1,"text":" let $arg = try!(<$argty>::from_ruby($arg));"},{"highlight_end":15,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":15,"highlight_start":1,"text":" $("},{"highlight_end":57,"highlight_start":1,"text":" let $arg = <$argty>::from_checked($arg);"},{"highlight_end":15,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":86,"highlight_start":1,"text":" let rust_self = Box::new($cls_rust_name::initialize(rb_self, $($arg),*));"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":89,"highlight_start":1,"text":" unsafe { Data_Set_Struct_Value(rb_self, ::std::mem::transmute(rust_self)) };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":24,"highlight_start":1,"text":" Ok(rb_self)"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":45,"highlight_start":1,"text":" let arity = method_arity!($($arg)*);"},{"highlight_end":73,"highlight_start":1,"text":" let method = __ruby_initialize__ as *const $crate::libc::c_void;"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":102,"highlight_start":1,"text":" $def.define_method($crate::MethodDefinition::instance(cstr!($($ruby_name)*), method, arity));"},{"highlight_end":8,"highlight_start":1,"text":" });"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"codegen_define_method!","span":{"byte_end":1927,"byte_start":1882,"column_end":58,"column_start":13,"expansion":{"def_site_span":{"byte_end":2003,"byte_start":335,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/init.rs","is_primary":false,"label":null,"line_end":77,"line_start":17,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":37,"highlight_start":1,"text":"macro_rules! codegen_class_binding {"},{"highlight_end":19,"highlight_start":1,"text":" { $class:tt, {"},{"highlight_end":21,"highlight_start":1,"text":" type: class,"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: { $($ruby_name:tt)* },"},{"highlight_end":47,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: false },"},{"highlight_end":20,"highlight_start":1,"text":" struct: (),"},{"highlight_end":36,"highlight_start":1,"text":" methods: [ $($method:tt)* ]"},{"highlight_end":14,"highlight_start":1,"text":" } } => ({"},{"highlight_end":35,"highlight_start":1,"text":" use ::std::mem::transmute;"},{"highlight_end":71,"highlight_start":1,"text":" let def = $crate::ClassDefinition::new(cstr!($($ruby_name)*));"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":11,"highlight_start":1,"text":" $("},{"highlight_end":58,"highlight_start":1,"text":" codegen_define_method!(def, $class, $method);"},{"highlight_end":11,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":54,"highlight_start":1,"text":" unsafe { $rust_name = transmute(def.class) };"},{"highlight_end":8,"highlight_start":1,"text":" });"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":19,"highlight_start":1,"text":" { $class:tt, {"},{"highlight_end":21,"highlight_start":1,"text":" type: class,"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: { $($ruby_name:tt)* },"},{"highlight_end":46,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: true },"},{"highlight_end":20,"highlight_start":1,"text":" struct: (),"},{"highlight_end":36,"highlight_start":1,"text":" methods: [ $($method:tt)* ]"},{"highlight_end":14,"highlight_start":1,"text":" } } => ({"},{"highlight_end":35,"highlight_start":1,"text":" use ::std::mem::transmute;"},{"highlight_end":74,"highlight_start":1,"text":" let def = $crate::ClassDefinition::reopen(cstr!($($ruby_name)*));"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":11,"highlight_start":1,"text":" $("},{"highlight_end":58,"highlight_start":1,"text":" codegen_define_method!(def, $class, $method);"},{"highlight_end":11,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":54,"highlight_start":1,"text":" unsafe { $rust_name = transmute(def.class) };"},{"highlight_end":8,"highlight_start":1,"text":" });"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":19,"highlight_start":1,"text":" { $class:tt, {"},{"highlight_end":21,"highlight_start":1,"text":" type: class,"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: { $($ruby_name:tt)* },"},{"highlight_end":52,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":36,"highlight_start":1,"text":" struct: { $($struct:tt)* },"},{"highlight_end":36,"highlight_start":1,"text":" methods: [ $($method:tt)* ]"},{"highlight_end":14,"highlight_start":1,"text":" } } => ({"},{"highlight_end":35,"highlight_start":1,"text":" use ::std::mem::transmute;"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":84,"highlight_start":1,"text":" extern \"C\" fn __alloc__(_klass: $crate::sys::VALUE) -> $crate::sys::VALUE {"},{"highlight_end":45,"highlight_start":1,"text":" $rust_name::__alloc_with__(None)"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":86,"highlight_start":1,"text":" let def = $crate::ClassDefinition::wrapped(cstr!($($ruby_name)*), __alloc__);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":11,"highlight_start":1,"text":" $("},{"highlight_end":58,"highlight_start":1,"text":" codegen_define_method!(def, $class, $method);"},{"highlight_end":11,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":53,"highlight_start":1,"text":" unsafe { $rust_name = transmute(def.class) }"},{"highlight_end":8,"highlight_start":1,"text":" });"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"codegen_class_binding!","span":{"byte_end":284,"byte_start":245,"column_end":56,"column_start":17,"expansion":{"def_site_span":{"byte_end":317,"byte_start":16,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/init.rs","is_primary":false,"label":null,"line_end":14,"line_start":2,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":28,"highlight_start":1,"text":"macro_rules! codegen_init {"},{"highlight_end":31,"highlight_start":1,"text":" { [ $($class:tt)* ] } => {"},{"highlight_end":33,"highlight_start":1,"text":" #[allow(non_snake_case)]"},{"highlight_end":21,"highlight_start":1,"text":" #[no_mangle]"},{"highlight_end":42,"highlight_start":1,"text":" pub extern \"C\" fn Init_native() {"},{"highlight_end":42,"highlight_start":1,"text":" $crate::sys::check_version();"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":15,"highlight_start":1,"text":" $("},{"highlight_end":56,"highlight_start":1,"text":" codegen_class_binding!($class, $class);"},{"highlight_end":15,"highlight_start":1,"text":" )*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":6,"highlight_start":1,"text":" }"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"codegen_init!","span":{"byte_end":217,"byte_start":187,"column_end":39,"column_start":9,"expansion":{"def_site_span":{"byte_end":1968,"byte_start":16,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/codegen.rs","is_primary":false,"label":null,"line_end":84,"line_start":2,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":1,"highlight_start":1,"text":"macro_rules! codegen {"},{"highlight_end":1,"highlight_start":1,"text":" { [ $($ast:tt)* ] } => {"},{"highlight_end":1,"highlight_start":1,"text":" codegen! {"},{"highlight_end":1,"highlight_start":1,"text":" type: top,"},{"highlight_end":1,"highlight_start":1,"text":" classes: [],"},{"highlight_end":1,"highlight_start":1,"text":" buffer: [ $($ast)* ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" codegen_init! { [ $($ast)* ] }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" type: top,"},{"highlight_end":1,"highlight_start":1,"text":" classes: [ $($class:tt)* ],"},{"highlight_end":1,"highlight_start":1,"text":" buffer: []"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" codegen! {"},{"highlight_end":1,"highlight_start":1,"text":" type: done,"},{"highlight_end":1,"highlight_start":1,"text":" classes: [ $($class)* ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" type: top,"},{"highlight_end":1,"highlight_start":1,"text":" classes: ["},{"highlight_end":1,"highlight_start":1,"text":" $($class:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" ],"},{"highlight_end":1,"highlight_start":1,"text":" buffer: ["},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":1,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":1,"highlight_start":1,"text":" methods: [ $($method:tt)* ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" $($rest:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" ]"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" codegen! {"},{"highlight_end":1,"highlight_start":1,"text":" type: top,"},{"highlight_end":1,"highlight_start":1,"text":" classes: ["},{"highlight_end":1,"highlight_start":1,"text":" $($class)*"},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" struct: { codegen_struct! { pub: $pub, rust_name: $rust_name, ruby_name: $ruby_name, struct: $struct } },"},{"highlight_end":1,"highlight_start":1,"text":" methods: [ $( codegen_method! { $method } )* ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" ],"},{"highlight_end":1,"highlight_start":1,"text":" buffer: [ $($rest)* ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" codegen_extra_impls!({"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":1,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":1,"highlight_start":1,"text":" methods: [ $($method)* ]"},{"highlight_end":1,"highlight_start":1,"text":" });"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" type: done,"},{"highlight_end":1,"highlight_start":1,"text":" classes: [ $("},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" struct: { $($struct:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" methods: [ $($method:tt)* ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" )* ]"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" $("},{"highlight_end":1,"highlight_start":1,"text":" $($struct)*"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" impl $rust_name {"},{"highlight_end":1,"highlight_start":1,"text":" $($method)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" )*"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"codegen!","span":{"byte_end":1621,"byte_start":1604,"column_end":26,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":7157,"byte_start":7003,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":17304,"byte_start":16858,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":12827,"byte_start":12248,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":8376,"byte_start":8104,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":18807,"byte_start":18046,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":10084,"byte_start":9514,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":7861,"byte_start":7625,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":5671,"byte_start":5224,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":4661,"byte_start":4193,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":3915,"byte_start":3706,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":1985,"byte_start":1743,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":7157,"byte_start":7003,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":17304,"byte_start":16858,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":11919,"byte_start":11347,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":8376,"byte_start":8104,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":19707,"byte_start":19263,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":11029,"byte_start":10447,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":8376,"byte_start":8104,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":18807,"byte_start":18046,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":9263,"byte_start":8683,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":7861,"byte_start":7625,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":5671,"byte_start":5224,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":4661,"byte_start":4193,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":3915,"byte_start":3706,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":1985,"byte_start":1743,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":7157,"byte_start":7003,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":17304,"byte_start":16858,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":11919,"byte_start":11347,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":8376,"byte_start":8104,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":19707,"byte_start":19263,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":11029,"byte_start":10447,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":8376,"byte_start":8104,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":20608,"byte_start":20178,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":18807,"byte_start":18046,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":10084,"byte_start":9514,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":7861,"byte_start":7625,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":6697,"byte_start":6465,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":5671,"byte_start":5224,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":4661,"byte_start":4193,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":3915,"byte_start":3706,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":21,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":24,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":32,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":26,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":26,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":34,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":63,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":38,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":24,"highlight_start":1,"text":" pub: false,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: true,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":41,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":27,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":27,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":30,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":28,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":66,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":32,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":60,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":60,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":28,"highlight_start":1,"text":" struct: (),"},{"highlight_end":28,"highlight_start":1,"text":" methods: []"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":93,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":25,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":26,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":76,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":33,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":20,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":34,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":33,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":97,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":35,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":30,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":84,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":85,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":29,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":51,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":41,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":49,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":43,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":45,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":53,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":39,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":50,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":36,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":2,"highlight_start":1,"text":"{"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":48,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":43,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":34,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":38,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":40,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":40,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":30,"highlight_start":1,"text":" self: (),"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":57,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":124,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":35,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":51,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":48,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":37,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":46,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":22,"highlight_start":1,"text":" method: {"},{"highlight_end":32,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":42,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":32,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":36,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":36,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":28,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":6,"highlight_start":1,"text":" {"},{"highlight_end":30,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":28,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":17,"highlight_start":1,"text":" stack: {"},{"highlight_end":32,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":21,"highlight_start":1,"text":" class: {"},{"highlight_end":29,"highlight_start":1,"text":" type: class,"},{"highlight_end":45,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":32,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":36,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":45,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":15,"highlight_start":1,"text":" },"},{"highlight_end":26,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":11,"highlight_start":1,"text":" } => {"},{"highlight_end":17,"highlight_start":1,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":17,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":27,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":22,"highlight_start":1,"text":" parse_error!("},{"highlight_end":38,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":77,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":57,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":45,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":11,"highlight_start":1,"text":" );"},{"highlight_end":7,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":1985,"byte_start":1743,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":20920,"byte_start":1455,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":823,"line_start":72,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":1,"highlight_start":1,"text":"macro_rules! parse {"},{"highlight_end":1,"highlight_start":1,"text":" // STATE: top_level"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":1,"highlight_start":1,"text":" stack: { ast: $ast:tt }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" codegen! { $ast }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":1,"highlight_start":1,"text":" stack: { $($stack: tt)* }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" pub: false,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: parse_class"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" pub: false,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":1,"highlight_start":1,"text":" pub: false,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { pub $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" pub: false,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" pub: true,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { reopen $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" pub: $pub,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: true,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { class $name:tt $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { class $name:tt { $($body:tt)* } $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" pub: $pub:tt,"},{"highlight_end":1,"highlight_start":1,"text":" reopen: $reopen:tt,"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":1,"highlight_start":1,"text":" struct: (),"},{"highlight_end":1,"highlight_start":1,"text":" methods: []"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: parse_struct"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { struct { $($struct:tt)* } $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" meta: { pub: $pub:tt, reopen: $reopen:tt },"},{"highlight_end":1,"highlight_start":1,"text":" struct: (),"},{"highlight_end":1,"highlight_start":1,"text":" methods: []"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_not_reopen!({ reopen: $reopen }, \"Cannot define a struct in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":1,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":1,"highlight_start":1,"text":" methods: []"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":1,"highlight_start":1,"text":" stack: $stack:tt"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":1,"highlight_start":1,"text":" stack: $stack"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: parse_methods"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { #[ruby_name = $ruby_name:tt] def $name:tt $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: { $ruby_name },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { def $name:tt $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: { $($stack:tt)* }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: {},"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":1,"highlight_start":1,"text":" program: $program:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ast: [ $($ast:tt)* ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_has_initialize!($class, \"Classes defining a struct must implement `initialize`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: parse_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class: $class:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_not_reopen!($class, \"Cannot define `initialize` in `reopen class`\");"},{"highlight_end":1,"highlight_start":1,"text":" assert_has_struct!($class, \"Cannot define `initialize` without a `struct`\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" class: $class,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { ( $($args:tt)* ) $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: parse_arguments_initialize"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $helix_arg:tt, $($args:tt)+ },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":1,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $helix_arg:tt },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_helix_arg!($helix_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":1,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: parse_arguments"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt, $($args:tt)+ },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":1,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { &mut $self_arg:tt },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":1,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { & $self_arg:tt, $($args:tt)+ },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":1,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { & $self_arg:tt },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":1,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":"{"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $self_arg:tt, $($args:tt)+ },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":1,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $self_arg:tt },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_valid_self_arg!($self_arg);"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: {"},{"highlight_end":1,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":1,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($args:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class_body: $class_body:tt,"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class_method,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: (),"},{"highlight_end":1,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: parse_return_type"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { -> $ret:ty $body:block $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":1,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" assert_no_explict_return_for_initializer!({ type: $type }, \"`def initialize` cannot have an explicit return type\");"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: $type,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: $self,"},{"highlight_end":1,"highlight_start":1,"text":" args: $args,"},{"highlight_end":1,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":1,"highlight_start":1,"text":" body: $body"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_method_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_method_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":1,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" class: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_class_name:ident,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_class_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":1,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":1,"highlight_start":1,"text":" methods: $methods:tt"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: $self,"},{"highlight_end":1,"highlight_start":1,"text":" args: $args,"},{"highlight_end":1,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":1,"highlight_start":1,"text":" body: $body"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" class: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":1,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":1,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":1,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $body:block $($rest:tt)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: $type:tt,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" self: $self:tt,"},{"highlight_end":1,"highlight_start":1,"text":" args: $args:tt,"},{"highlight_end":1,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":1,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: {"},{"highlight_end":1,"highlight_start":1,"text":" type: $type,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" self: $self,"},{"highlight_end":1,"highlight_start":1,"text":" args: $args,"},{"highlight_end":1,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":1,"highlight_start":1,"text":" body: $body"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // STATE: finish_method"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" {"},{"highlight_end":1,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $buffer:tt,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" method: $method:tt,"},{"highlight_end":1,"highlight_start":1,"text":" class: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name:ident,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name:tt,"},{"highlight_end":1,"highlight_start":1,"text":" meta: $meta:tt,"},{"highlight_end":1,"highlight_start":1,"text":" struct: $struct:tt,"},{"highlight_end":1,"highlight_start":1,"text":" methods: [ $($methods:tt)* ]"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack:tt)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":1,"highlight_start":1,"text":" stack: {"},{"highlight_end":1,"highlight_start":1,"text":" class: {"},{"highlight_end":1,"highlight_start":1,"text":" type: class,"},{"highlight_end":1,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":1,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":1,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":1,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":1,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":1,"highlight_start":1,"text":" },"},{"highlight_end":1,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" // Catch all"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":1,"highlight_start":1,"text":" { $($state:tt)* } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse_error!("},{"highlight_end":1,"highlight_start":1,"text":" \"Unknown parser state. \","},{"highlight_end":1,"highlight_start":1,"text":" \"This is possibly a bug in Helix itself, please file an issue \","},{"highlight_end":1,"highlight_start":1,"text":" \"with the following debug information:\\n\\n\","},{"highlight_end":1,"highlight_start":1,"text":" format_parser_state!($($state)*)"},{"highlight_end":1,"highlight_start":1,"text":" );"},{"highlight_end":1,"highlight_start":1,"text":" };"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"parse!","span":{"byte_end":315,"byte_start":201,"column_end":10,"column_start":9,"expansion":{"def_site_span":{"byte_end":323,"byte_start":147,"column_end":2,"column_start":1,"expansion":null,"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/mod.rs","is_primary":false,"label":null,"line_end":25,"line_start":17,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":1,"highlight_start":1,"text":"macro_rules! ruby {"},{"highlight_end":1,"highlight_start":1,"text":" { $($rest:tt)* } => {"},{"highlight_end":1,"highlight_start":1,"text":" parse! {"},{"highlight_end":1,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":1,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":1,"highlight_start":1,"text":" stack: { ast: [] }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":" }"},{"highlight_end":2,"highlight_start":1,"text":"}"}]},"macro_decl_name":"ruby!","span":{"byte_end":1928,"byte_start":61,"column_end":2,"column_start":1,"expansion":null,"file_name":"src/lib.rs","is_primary":false,"label":null,"line_end":73,"line_start":6,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":8,"highlight_start":1,"text":"ruby! {"},{"highlight_end":25,"highlight_start":1,"text":" class Blake3Hasher {"},{"highlight_end":17,"highlight_start":1,"text":" struct {"},{"highlight_end":36,"highlight_start":1,"text":" hasher: blake3::Hasher,"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" def initialize(helix) {"},{"highlight_end":27,"highlight_start":1,"text":" Blake3Hasher {"},{"highlight_end":23,"highlight_start":1,"text":" helix,"},{"highlight_end":47,"highlight_start":1,"text":" hasher: blake3::Hasher::new(),"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":58,"highlight_start":1,"text":" def update(&mut self, hex: std::string::String) {"},{"highlight_end":70,"highlight_start":1,"text":" let decoded = hex::decode(hex).expect(\"Decoding failed\");"},{"highlight_end":46,"highlight_start":1,"text":" self.hasher.update(&decoded[..]);"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":57,"highlight_start":1,"text":" def finalize(&mut self) -> std::string::String {"},{"highlight_end":59,"highlight_start":1,"text":" format!(\"{}\", self.hasher.finalize().to_hex())"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":6,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":30,"highlight_start":1,"text":" class Blake3KeyedHasher {"},{"highlight_end":17,"highlight_start":1,"text":" struct {"},{"highlight_end":36,"highlight_start":1,"text":" hasher: blake3::Hasher,"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":59,"highlight_start":1,"text":" def initialize(helix, key: std::string::String ) {"},{"highlight_end":37,"highlight_start":1,"text":" let mut array = [0; 32];"},{"highlight_end":66,"highlight_start":1,"text":" let vec = hex::decode(key).expect(\"Decoding failed\");"},{"highlight_end":45,"highlight_start":1,"text":" let bytes = &vec[..array.len()];"},{"highlight_end":42,"highlight_start":1,"text":" array.copy_from_slice(bytes);"},{"highlight_end":32,"highlight_start":1,"text":" Blake3KeyedHasher {"},{"highlight_end":23,"highlight_start":1,"text":" helix,"},{"highlight_end":59,"highlight_start":1,"text":" hasher: blake3::Hasher::new_keyed(&array),"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":58,"highlight_start":1,"text":" def update(&mut self, hex: std::string::String) {"},{"highlight_end":70,"highlight_start":1,"text":" let decoded = hex::decode(hex).expect(\"Decoding failed\");"},{"highlight_end":46,"highlight_start":1,"text":" self.hasher.update(&decoded[..]);"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":57,"highlight_start":1,"text":" def finalize(&mut self) -> std::string::String {"},{"highlight_end":59,"highlight_start":1,"text":" format!(\"{}\", self.hasher.finalize().to_hex())"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":6,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":22,"highlight_start":1,"text":" class Blake3Key {"},{"highlight_end":17,"highlight_start":1,"text":" struct {"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":32,"highlight_start":1,"text":" def initialize(helix) {"},{"highlight_end":24,"highlight_start":1,"text":" Blake3Key {"},{"highlight_end":23,"highlight_start":1,"text":" helix,"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":1,"highlight_start":1,"text":""},{"highlight_end":107,"highlight_start":1,"text":" def derive(&self, context: std::string::String, hex: std::string::String) -> std::string::String {"},{"highlight_end":38,"highlight_start":1,"text":" let mut output = [0; 32];"},{"highlight_end":75,"highlight_start":1,"text":" let key_material = hex::decode(hex).expect(\"Decoding failed\");"},{"highlight_end":74,"highlight_start":1,"text":" blake3::derive_key(&context, &key_material[..], &mut output);"},{"highlight_end":32,"highlight_start":1,"text":" hex::encode(output)"},{"highlight_end":10,"highlight_start":1,"text":" }"},{"highlight_end":6,"highlight_start":1,"text":" }"},{"highlight_end":2,"highlight_start":1,"text":"}"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/mod.rs","is_primary":false,"label":null,"line_end":23,"line_start":19,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" stack: { ast: [] }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":97,"line_start":88,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":183,"line_start":176,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":212,"line_start":197,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":248,"line_start":234,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":340,"line_start":332,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":425,"line_start":407,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":741,"line_start":718,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":361,"line_start":352,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":460,"line_start":442,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":775,"line_start":760,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":361,"line_start":352,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":493,"line_start":475,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":691,"line_start":676,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":314,"line_start":308,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":97,"line_start":88,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":183,"line_start":176,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":212,"line_start":197,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":248,"line_start":234,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":340,"line_start":332,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":394,"line_start":376,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":741,"line_start":718,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":361,"line_start":352,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":460,"line_start":442,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":775,"line_start":760,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":33,"highlight_start":1,"text":" ret: { () },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":361,"line_start":352,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":493,"line_start":475,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":45,"highlight_start":1,"text":" ownership: { &mut },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":691,"line_start":676,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":314,"line_start":308,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":97,"line_start":88,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":42,"highlight_start":1,"text":" ruby_name: uninitialized,"},{"highlight_end":28,"highlight_start":1,"text":" pub: false,"},{"highlight_end":31,"highlight_start":1,"text":" reopen: false,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":183,"line_start":176,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":32,"highlight_start":1,"text":" state: parse_class,"},{"highlight_end":47,"highlight_start":1,"text":" buffer: { class $name $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":212,"line_start":197,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_struct,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($body)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":38,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":32,"highlight_start":1,"text":" struct: (),"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":40,"highlight_start":1,"text":" program: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":248,"line_start":234,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":58,"highlight_start":1,"text":" meta: { pub: $pub, reopen: $reopen },"},{"highlight_end":45,"highlight_start":1,"text":" struct: { $($struct)* },"},{"highlight_end":32,"highlight_start":1,"text":" methods: []"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":340,"line_start":332,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":47,"highlight_start":1,"text":" state: parse_arguments_initialize,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":31,"highlight_start":1,"text":" class: $class,"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":425,"line_start":407,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: initialize,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: { \"initialize\" },"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":40,"highlight_start":1,"text":" ownership: { },"},{"highlight_end":41,"highlight_start":1,"text":" name: $helix_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":31,"highlight_start":1,"text":" args: [ ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":741,"line_start":718,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":39,"highlight_start":1,"text":" type: initializer,"},{"highlight_end":50,"highlight_start":1,"text":" rust_name: $rust_method_name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: $ruby_method_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":47,"highlight_start":1,"text":" ret: { $rust_class_name },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":49,"highlight_start":1,"text":" rust_name: $rust_class_name,"},{"highlight_end":49,"highlight_start":1,"text":" ruby_name: $ruby_class_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":38,"highlight_start":1,"text":" methods: $methods"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":294,"line_start":286,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":33,"highlight_start":1,"text":" state: parse_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":34,"highlight_start":1,"text":" rust_name: $name,"},{"highlight_end":50,"highlight_start":1,"text":" ruby_name: { stringify!($name) },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":361,"line_start":352,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":36,"highlight_start":1,"text":" state: parse_arguments,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($args)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":39,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":39,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":43,"highlight_start":1,"text":" class_body: { $($rest)* },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":526,"line_start":508,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":38,"highlight_start":1,"text":" state: parse_return_type,"},{"highlight_end":33,"highlight_start":1,"text":" buffer: $class_body,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":43,"highlight_start":1,"text":" type: instance_method,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":28,"highlight_start":1,"text":" self: {"},{"highlight_end":42,"highlight_start":1,"text":" ownership: { & },"},{"highlight_end":40,"highlight_start":1,"text":" name: $self_arg"},{"highlight_end":23,"highlight_start":1,"text":" },"},{"highlight_end":41,"highlight_start":1,"text":" args: [ $($args)* ],"},{"highlight_end":40,"highlight_start":1,"text":" ret: uninitialized,"},{"highlight_end":40,"highlight_start":1,"text":" body: uninitialized"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":691,"line_start":676,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: finish_method,"},{"highlight_end":35,"highlight_start":1,"text":" buffer: { $($rest)* },"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":26,"highlight_start":1,"text":" method: {"},{"highlight_end":33,"highlight_start":1,"text":" type: $type,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" self: $self,"},{"highlight_end":33,"highlight_start":1,"text":" args: $args,"},{"highlight_end":35,"highlight_start":1,"text":" ret: { $ret },"},{"highlight_end":32,"highlight_start":1,"text":" body: $body"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":810,"line_start":796,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":34,"highlight_start":1,"text":" state: parse_methods,"},{"highlight_end":29,"highlight_start":1,"text":" buffer: $buffer,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":25,"highlight_start":1,"text":" class: {"},{"highlight_end":33,"highlight_start":1,"text":" type: class,"},{"highlight_end":43,"highlight_start":1,"text":" rust_name: $rust_name,"},{"highlight_end":43,"highlight_start":1,"text":" ruby_name: $ruby_name,"},{"highlight_end":33,"highlight_start":1,"text":" meta: $meta,"},{"highlight_end":37,"highlight_start":1,"text":" struct: $struct,"},{"highlight_end":54,"highlight_start":1,"text":" methods: [ $($methods)* $method ]"},{"highlight_end":19,"highlight_start":1,"text":" },"},{"highlight_end":27,"highlight_start":1,"text":" $($stack)*"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":314,"line_start":308,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":17,"highlight_start":9,"text":" parse! {"},{"highlight_end":30,"highlight_start":1,"text":" state: top_level,"},{"highlight_end":30,"highlight_start":1,"text":" buffer: $program,"},{"highlight_end":21,"highlight_start":1,"text":" stack: {"},{"highlight_end":41,"highlight_start":1,"text":" ast: [ $($ast)* $class ]"},{"highlight_end":14,"highlight_start":1,"text":" }"},{"highlight_end":10,"highlight_start":1,"text":" }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/parser.rs","is_primary":false,"label":null,"line_end":80,"line_start":80,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":26,"highlight_start":9,"text":" codegen! { $ast }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/codegen.rs","is_primary":false,"label":null,"line_end":10,"line_start":10,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":39,"highlight_start":9,"text":" codegen_init! { [ $($ast)* ] }"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/init.rs","is_primary":false,"label":null,"line_end":10,"line_start":10,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":56,"highlight_start":17,"text":" codegen_class_binding!($class, $class);"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/init.rs","is_primary":false,"label":null,"line_end":71,"line_start":71,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":58,"highlight_start":13,"text":" codegen_define_method!(def, $class, $method);"}]}},"file_name":"/opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/helix-0.7.5/src/macros/init.rs","is_primary":true,"label":null,"line_end":166,"line_start":166,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":32,"highlight_start":29,"text":" let rust_self = try!(::from_ruby(rb_self));"}]}]}} [WARN] too much data in the log, truncating it