[INFO] cloning repository https://github.com/ebkalderon/nix-language-server [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ebkalderon/nix-language-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Febkalderon%2Fnix-language-server", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Febkalderon%2Fnix-language-server'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 83058383b2aeff7f8623fe8051e7aff3ff5e6740 [INFO] checking ebkalderon/nix-language-server against master#9fa580b1175018b0a276b0bc68f9827a106f7260 for pr-82565 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Febkalderon%2Fnix-language-server" "/workspace/builds/worker-0/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/ebkalderon/nix-language-server on toolchain 9fa580b1175018b0a276b0bc68f9827a106f7260 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/ebkalderon/nix-language-server [INFO] finished tweaking git repo https://github.com/ebkalderon/nix-language-server [INFO] tweaked toml for git repo https://github.com/ebkalderon/nix-language-server written to /workspace/builds/worker-0/source/Cargo.toml [INFO] crate git repo https://github.com/ebkalderon/nix-language-server already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/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:f2f6bcd4b43ebee4e173f653a26493129bdb64017c85f916b780ca7fbdbaa79d" "/opt/rustwide/cargo-home/bin/cargo" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ab327080baea4514b3c46532d832c43fd03a6878c2d3036876735ae060b7fa7b [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" "ab327080baea4514b3c46532d832c43fd03a6878c2d3036876735ae060b7fa7b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ab327080baea4514b3c46532d832c43fd03a6878c2d3036876735ae060b7fa7b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ab327080baea4514b3c46532d832c43fd03a6878c2d3036876735ae060b7fa7b", kill_on_drop: false }` [INFO] [stdout] ab327080baea4514b3c46532d832c43fd03a6878c2d3036876735ae060b7fa7b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/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:f2f6bcd4b43ebee4e173f653a26493129bdb64017c85f916b780ca7fbdbaa79d" "/opt/rustwide/cargo-home/bin/cargo" "+9fa580b1175018b0a276b0bc68f9827a106f7260" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 15ab960be13d5e881af58b7e850e6ce56e4bdc643f5b37328f7debb4b334f866 [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" "15ab960be13d5e881af58b7e850e6ce56e4bdc643f5b37328f7debb4b334f866", kill_on_drop: false }` [INFO] [stderr] Compiling syn v1.0.5 [INFO] [stderr] Compiling memchr v2.2.1 [INFO] [stderr] Compiling bitflags v1.2.0 [INFO] [stderr] Checking smallvec v0.6.12 [INFO] [stderr] Compiling arrayvec v0.4.11 [INFO] [stderr] Compiling version_check v0.9.1 [INFO] [stderr] Compiling autocfg v1.0.0 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Compiling maybe-uninit v2.0.0 [INFO] [stderr] Checking strsim v0.8.0 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking bytecount v0.3.2 [INFO] [stderr] Compiling byteorder v1.3.2 [INFO] [stderr] Checking smallvec v1.2.0 [INFO] [stderr] Checking once_cell v1.2.0 [INFO] [stderr] Checking bytecount v0.6.0 [INFO] [stderr] Checking either v1.5.3 [INFO] [stderr] Compiling getrandom v0.1.14 [INFO] [stderr] Compiling rayon-core v1.7.0 [INFO] [stderr] Checking futures-core v0.3.4 [INFO] [stderr] Checking base64 v0.12.0 [INFO] [stderr] Compiling proc-macro-nested v0.1.3 [INFO] [stderr] Checking futures-sink v0.3.4 [INFO] [stderr] Checking cast v0.2.2 [INFO] [stderr] Checking same-file v1.0.5 [INFO] [stderr] Checking oorandom v11.1.0 [INFO] [stderr] Checking futures-task v0.3.4 [INFO] [stderr] Checking futures-io v0.3.4 [INFO] [stderr] Checking arc-swap v0.4.4 [INFO] [stderr] Checking pin-utils v0.1.0-alpha.4 [INFO] [stderr] Checking thin-dst v1.1.0 [INFO] [stderr] Checking smol_str v0.1.15 [INFO] [stderr] Checking bytes v0.5.4 [INFO] [stderr] Checking text_unit v0.1.10 [INFO] [stderr] Checking codespan-reporting v0.9.3 [INFO] [stderr] Checking codespan v0.8.0 [INFO] [stderr] Compiling num-traits v0.2.8 [INFO] [stderr] Checking itertools v0.8.0 [INFO] [stderr] Checking unicode-normalization v0.1.8 [INFO] [stderr] Checking futures-channel v0.3.4 [INFO] [stderr] Checking walkdir v2.3.1 [INFO] [stderr] Compiling proc-macro2 v1.0.9 [INFO] [stderr] Compiling libc v0.2.67 [INFO] [stderr] Checking log v0.4.8 [INFO] [stderr] Checking rowan v0.9.1 [INFO] [stderr] Checking num_cpus v1.12.0 [INFO] [stderr] Checking atty v0.2.13 [INFO] [stderr] Checking net2 v0.2.33 [INFO] [stderr] Checking iovec v0.1.4 [INFO] [stderr] Compiling lexical-core v0.6.2 [INFO] [stderr] Compiling memoffset v0.5.1 [INFO] [stderr] Checking signal-hook-registry v1.2.0 [INFO] [stderr] Compiling nom v5.1.1 [INFO] [stderr] Checking codespan-reporting v0.8.0 [INFO] [stderr] Compiling crossbeam-utils v0.7.2 [INFO] [stderr] Compiling crossbeam-epoch v0.8.2 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Checking codespan v0.9.3 [INFO] [stderr] Checking mio v0.6.21 [INFO] [stderr] Compiling quote v1.0.2 [INFO] [stderr] Checking regex-automata v0.1.8 [INFO] [stderr] Checking aho-corasick v0.7.6 [INFO] [stderr] Checking csv-core v0.1.6 [INFO] [stderr] Checking mio-uds v0.6.7 [INFO] [stderr] Checking criterion-plot v0.4.1 [INFO] [stderr] Checking idna v0.2.0 [INFO] [stderr] Checking crossbeam-queue v0.2.1 [INFO] [stderr] Checking crossbeam-deque v0.7.3 [INFO] [stderr] Checking plotters v0.2.12 [INFO] [stderr] Checking regex v1.3.1 [INFO] [stderr] Checking rayon v1.3.0 [INFO] [stderr] Checking env_logger v0.7.1 [INFO] [stderr] Checking nom_locate v1.0.0 [INFO] [stderr] Checking nom_locate v2.0.0 [INFO] [stderr] Checking nix-lexer v0.1.0 (/opt/rustwide/workdir/nix-lexer) [INFO] [stderr] Compiling proc-macro-error v0.2.6 [INFO] [stderr] Compiling serde_derive v1.0.104 [INFO] [stderr] Compiling serde_repr v0.1.5 [INFO] [stderr] Compiling proc-macro-hack v0.5.11 [INFO] [stderr] Compiling structopt-derive v0.3.3 [INFO] [stderr] Compiling tokio-macros v0.2.5 [INFO] [stderr] Compiling async-trait v0.1.24 [INFO] [stderr] Checking tokio v0.2.12 [INFO] [stderr] Compiling const-random-macro v0.1.8 [INFO] [stderr] Compiling futures-macro v0.3.4 [INFO] [stderr] Checking const-random v0.1.8 [INFO] [stderr] Checking ahash v0.3.2 [INFO] [stderr] Checking structopt v0.3.3 [INFO] [stderr] Checking dashmap v3.5.1 [INFO] [stderr] Checking futures-util v0.3.4 [INFO] [stderr] Checking tokio-util v0.2.0 [INFO] [stderr] Checking serde v1.0.104 [INFO] [stderr] Checking futures-executor v0.3.4 [INFO] [stderr] Checking futures v0.3.4 [INFO] [stderr] Checking serde_json v1.0.48 [INFO] [stderr] Checking url v2.1.1 [INFO] [stderr] Checking bstr v0.2.8 [INFO] [stderr] Compiling toml v0.5.3 [INFO] [stderr] Checking csv v1.1.1 [INFO] [stderr] Checking nix-parser v0.1.0 (/opt/rustwide/workdir/nix-parser) [INFO] [stderr] Checking lsp-types v0.74.0 [INFO] [stderr] Checking tinytemplate v1.0.2 [INFO] [stderr] Checking lsp-types v0.70.2 [INFO] [stderr] Checking jsonrpc-core v14.0.5 [INFO] [stderr] Checking criterion v0.3.1 [INFO] [stderr] Compiling proc-macro-crate v0.1.4 [INFO] [stdout] warning: function is never used: `at` [INFO] [stdout] --> nix-parser/src/parser/tokens.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn $function(input: Tokens) -> IResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | / define_simple_tokens! { [INFO] [stdout] 97 | | eof => Eof(""), [INFO] [stdout] 98 | | [INFO] [stdout] 99 | | keyword_assert => Assert, [INFO] [stdout] ... | [INFO] [stdout] 140 | | semi => Semi("semicolon") [INFO] [stdout] 141 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling jsonrpc-derive v14.0.5 [INFO] [stdout] warning: function is never used: `at` [INFO] [stdout] --> nix-parser/src/parser/tokens.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn $function(input: Tokens) -> IResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | / define_simple_tokens! { [INFO] [stdout] 97 | | eof => Eof(""), [INFO] [stdout] 98 | | [INFO] [stdout] 99 | | keyword_assert => Assert, [INFO] [stdout] ... | [INFO] [stdout] 140 | | semi => Semi("semicolon") [INFO] [stdout] 141 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] {"reason":"compiler-message","package_id":"nix-parser 0.1.0 (path+file:///opt/rustwide/workdir/nix-parser)","target":{"kind":["lib"],"crate_types":["lib"],"name":"nix-parser","src_path":"/opt/rustwide/workdir/nix-parser/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"message":{"message":"this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter` (due to autoref coercions), but that might change in the future when `IntoIterator` impls for arrays are added.","code":{"code":"array_into_iter","explanation":null},"level":"warning","spans":[{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3291,"byte_end":3300,"line_start":99,"line_end":99,"column_start":69,"column_end":78,"is_primary":true,"text":[{"text":" Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default())","highlight_start":69,"highlight_end":78}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":24686,"byte_end":24724,"line_start":824,"line_end":824,"column_start":23,"column_end":61,"is_primary":false,"text":[{"text":" Expr::Literal($crate::nix_token!($prefix/$($path)/+))","highlight_start":23,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23318,"byte_end":23344,"line_start":772,"line_end":772,"column_start":9,"column_end":35,"is_primary":false,"text":[{"text":" $crate::atomic!($($expr)+)","highlight_start":9,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23218,"byte_end":23269,"line_start":768,"line_end":768,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23218,"byte_end":23269,"line_start":768,"line_end":768,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23528,"byte_end":23570,"line_start":780,"line_end":780,"column_start":9,"column_end":51,"is_primary":false,"text":[{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":51}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22220,"byte_end":22247,"line_start":739,"line_end":739,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::project!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22419,"byte_end":22450,"line_start":747,"line_end":747,"column_start":9,"column_end":40,"is_primary":false,"text":[{"text":" $crate::unary!(@rule $($expr)+)","highlight_start":9,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21590,"byte_end":21615,"line_start":715,"line_end":715,"column_start":9,"column_end":34,"is_primary":false,"text":[{"text":" $crate::unary!($($expr)+)","highlight_start":9,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21489,"byte_end":21541,"line_start":711,"line_end":711,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21489,"byte_end":21541,"line_start":711,"line_end":711,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21799,"byte_end":21842,"line_start":723,"line_end":723,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20876,"byte_end":20904,"line_start":689,"line_end":689,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::has_attr!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20777,"byte_end":20827,"line_start":685,"line_end":685,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20777,"byte_end":20827,"line_start":685,"line_end":685,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21088,"byte_end":21129,"line_start":697,"line_end":697,"column_start":9,"column_end":50,"is_primary":false,"text":[{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":50}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20166,"byte_end":20192,"line_start":663,"line_end":663,"column_start":9,"column_end":35,"is_primary":false,"text":[{"text":" $crate::concat!($($expr)+)","highlight_start":9,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20066,"byte_end":20117,"line_start":659,"line_end":659,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20066,"byte_end":20117,"line_start":659,"line_end":659,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20376,"byte_end":20418,"line_start":671,"line_end":671,"column_start":9,"column_end":51,"is_primary":false,"text":[{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":51}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19144,"byte_end":19171,"line_start":630,"line_end":630,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::product!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19048,"byte_end":19095,"line_start":626,"line_end":626,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19048,"byte_end":19095,"line_start":626,"line_end":626,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19345,"byte_end":19377,"line_start":638,"line_end":638,"column_start":9,"column_end":41,"is_primary":false,"text":[{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":9,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18119,"byte_end":18142,"line_start":594,"line_end":594,"column_start":9,"column_end":32,"is_primary":false,"text":[{"text":" $crate::sum!($($expr)+)","highlight_start":9,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18020,"byte_end":18070,"line_start":590,"line_end":590,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18020,"byte_end":18070,"line_start":590,"line_end":590,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18326,"byte_end":18367,"line_start":602,"line_end":602,"column_start":9,"column_end":50,"is_primary":false,"text":[{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":50}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17148,"byte_end":17174,"line_start":565,"line_end":565,"column_start":9,"column_end":35,"is_primary":false,"text":[{"text":" $crate::update!($($expr)+)","highlight_start":9,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17048,"byte_end":17099,"line_start":561,"line_end":561,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17048,"byte_end":17099,"line_start":561,"line_end":561,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17358,"byte_end":17400,"line_start":573,"line_end":573,"column_start":9,"column_end":51,"is_primary":false,"text":[{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":51}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15730,"byte_end":15757,"line_start":521,"line_end":521,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::compare!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15629,"byte_end":15681,"line_start":517,"line_end":517,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15629,"byte_end":15681,"line_start":517,"line_end":517,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15941,"byte_end":15984,"line_start":529,"line_end":529,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14792,"byte_end":14820,"line_start":489,"line_end":489,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::equality!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14697,"byte_end":14743,"line_start":485,"line_end":485,"column_start":9,"column_end":55,"is_primary":false,"text":[{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14697,"byte_end":14743,"line_start":485,"line_end":485,"column_start":9,"column_end":55,"is_primary":false,"text":[{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15004,"byte_end":15041,"line_start":497,"line_end":497,"column_start":9,"column_end":46,"is_primary":false,"text":[{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":46}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14106,"byte_end":14128,"line_start":463,"line_end":463,"column_start":9,"column_end":31,"is_primary":false,"text":[{"text":" $crate::or!($($expr)+)","highlight_start":9,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14010,"byte_end":14057,"line_start":459,"line_end":459,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14010,"byte_end":14057,"line_start":459,"line_end":459,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14312,"byte_end":14350,"line_start":471,"line_end":471,"column_start":9,"column_end":47,"is_primary":false,"text":[{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13419,"byte_end":13442,"line_start":437,"line_end":437,"column_start":9,"column_end":32,"is_primary":false,"text":[{"text":" $crate::and!($($expr)+)","highlight_start":9,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13321,"byte_end":13370,"line_start":433,"line_end":433,"column_start":9,"column_end":58,"is_primary":false,"text":[{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13321,"byte_end":13370,"line_start":433,"line_end":433,"column_start":9,"column_end":58,"is_primary":false,"text":[{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13626,"byte_end":13666,"line_start":445,"line_end":445,"column_start":9,"column_end":49,"is_primary":false,"text":[{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":49}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12946,"byte_end":12971,"line_start":419,"line_end":419,"column_start":9,"column_end":34,"is_primary":false,"text":[{"text":" $crate::imply!($($expr)+);","highlight_start":9,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11852,"byte_end":11879,"line_start":379,"line_end":379,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::if_else!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11751,"byte_end":11803,"line_start":375,"line_end":375,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11751,"byte_end":11803,"line_start":375,"line_end":375,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12063,"byte_end":12106,"line_start":387,"line_end":387,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10083,"byte_end":10111,"line_start":329,"line_end":329,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::function!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2808,"byte_end":2836,"line_start":83,"line_end":83,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::nix_expr!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":4246,"byte_end":4272,"line_start":139,"line_end":139,"column_start":23,"column_end":49,"is_primary":false,"text":[{"text":" let default = $crate::nix!($($default)+);","highlight_start":23,"highlight_end":49}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":5856,"byte_end":5914,"line_start":183,"line_end":183,"column_start":9,"column_end":67,"is_primary":false,"text":[{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":5856,"byte_end":5914,"line_start":183,"line_end":183,"column_start":9,"column_end":67,"is_primary":false,"text":[{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":6145,"byte_end":6194,"line_start":195,"line_end":195,"column_start":9,"column_end":58,"is_primary":false,"text":[{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":9,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":4863,"byte_end":4894,"line_start":153,"line_end":153,"column_start":41,"column_end":72,"is_primary":false,"text":[{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":41,"highlight_end":72}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10709,"byte_end":10743,"line_start":349,"line_end":349,"column_start":23,"column_end":57,"is_primary":false,"text":[{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":23,"highlight_end":57}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11751,"byte_end":11803,"line_start":375,"line_end":375,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12063,"byte_end":12106,"line_start":387,"line_end":387,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10083,"byte_end":10111,"line_start":329,"line_end":329,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::function!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2808,"byte_end":2836,"line_start":83,"line_end":83,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::nix_expr!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":25395,"byte_end":25424,"line_start":864,"line_end":864,"column_start":9,"column_end":38,"is_primary":false,"text":[{"text":" nix!({ x, y ? ./hello, }: _);","highlight_start":9,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"nix!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2626,"byte_end":2846,"line_start":77,"line_end":85,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix {","highlight_start":1,"highlight_end":19},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_expr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_expr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10027,"byte_end":10120,"line_start":327,"line_end":331,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_expr {","highlight_start":1,"highlight_end":24},{"text":" ($($expr:tt)+) => {","highlight_start":1,"highlight_end":24},{"text":" $crate::function!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2626,"byte_end":2846,"line_start":77,"line_end":85,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix {","highlight_start":1,"highlight_end":19},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_expr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_expr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10027,"byte_end":10120,"line_start":327,"line_end":331,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_expr {","highlight_start":1,"highlight_end":24},{"text":" ($($expr:tt)+) => {","highlight_start":1,"highlight_end":24},{"text":" $crate::function!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::if_else!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12149,"byte_end":12981,"line_start":393,"line_end":421,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! if_else {","highlight_start":1,"highlight_end":23},{"text":" (@cond (if $($cond:tt)+) then $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let cond = $crate::nix!($($cond)+);","highlight_start":1,"highlight_end":44},{"text":" let (body, alt) = $crate::if_else!(@body (then) $($rest)+);","highlight_start":1,"highlight_end":68},{"text":" Expr::from(ExprIf::new(cond, body, alt, Default::default()))","highlight_start":1,"highlight_end":69},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@cond ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::if_else!(@cond ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@body (then $($body:tt)+) else $($rest:tt)+) => {{","highlight_start":1,"highlight_end":56},{"text":" let body = $crate::nix!($($body)+);","highlight_start":1,"highlight_end":44},{"text":" let alt = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":43},{"text":" (body, alt)","highlight_start":1,"highlight_end":20},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@body ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::if_else!(@body ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (if $($rest:tt)+) => {","highlight_start":1,"highlight_end":27},{"text":" $crate::if_else!(@cond (if) $($rest)+)","highlight_start":1,"highlight_end":47},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($expr:tt)+) => {","highlight_start":1,"highlight_end":24},{"text":" $crate::imply!($($expr)+);","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::unary!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21885,"byte_end":22460,"line_start":729,"line_end":749,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! unary {","highlight_start":1,"highlight_end":21},{"text":" (@rule - $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Neg, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ! $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Not, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule $($expr:tt)+) => {","highlight_start":1,"highlight_end":30},{"text":" $crate::project!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::unary!(@rule $($expr)+)","highlight_start":1,"highlight_end":40},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::unary!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21885,"byte_end":22460,"line_start":729,"line_end":749,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! unary {","highlight_start":1,"highlight_end":21},{"text":" (@rule - $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Neg, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ! $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Not, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule $($expr:tt)+) => {","highlight_start":1,"highlight_end":30},{"text":" $crate::project!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::unary!(@rule $($expr)+)","highlight_start":1,"highlight_end":40},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::atomic!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23613,"byte_end":25256,"line_start":786,"line_end":854,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! atomic {","highlight_start":1,"highlight_end":22},{"text":" (antiquote!($antiquote:expr)) => {","highlight_start":1,"highlight_end":39},{"text":" ($antiquote)","highlight_start":1,"highlight_end":21},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (($($expr:tt)+)) => {","highlight_start":1,"highlight_end":26},{"text":" Expr::from(ExprParen::new($crate::nix_expr!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":85},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ({$($binds:tt)*}) => {","highlight_start":1,"highlight_end":27},{"text":" Expr::Set(ExprSet::new($crate::nix_binds!($($binds)*).collect(), Default::default()))","highlight_start":1,"highlight_end":94},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (rec {$($binds:tt)*}) => {","highlight_start":1,"highlight_end":31},{"text":" Expr::Rec(ExprRec::new($crate::nix_binds!($($binds)*).collect(), Default::default()))","highlight_start":1,"highlight_end":94},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (let {$($binds:tt)*}) => {","highlight_start":1,"highlight_end":31},{"text":" Expr::Let(ExprLet::new($crate::nix_binds!($($binds)*).collect(), Default::default()))","highlight_start":1,"highlight_end":94},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($dollar:tt { $($expr:tt)+ }) => {","highlight_start":1,"highlight_end":39},{"text":" Expr::from(ExprInterpolation::new($crate::nix!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":88},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ([$($expr:tt)*]) => {","highlight_start":1,"highlight_end":26},{"text":" Expr::List($crate::nix_list!([$($expr)*]))","highlight_start":1,"highlight_end":51},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (<$($template:tt)/+>) => {","highlight_start":1,"highlight_end":31},{"text":" Expr::Literal($crate::nix_token!(<$($template)/+>))","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (/ $($path:tt)/+) => {","highlight_start":1,"highlight_end":27},{"text":" Expr::Literal($crate::nix_token!(/$($path)/+))","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($prefix:tt / $($path:tt)/+) => {","highlight_start":1,"highlight_end":38},{"text":" Expr::Literal($crate::nix_token!($prefix/$($path)/+))","highlight_start":1,"highlight_end":62},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (false) => {","highlight_start":1,"highlight_end":17},{"text":" Expr::Literal($crate::nix_token!(false))","highlight_start":1,"highlight_end":49},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (true) => {","highlight_start":1,"highlight_end":16},{"text":" Expr::Literal($crate::nix_token!(true))","highlight_start":1,"highlight_end":48},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (null) => {","highlight_start":1,"highlight_end":16},{"text":" Expr::Literal($crate::nix_token!(null))","highlight_start":1,"highlight_end":48},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (_) => {","highlight_start":1,"highlight_end":13},{"text":" Expr::Ident($crate::nix_token!(_))","highlight_start":1,"highlight_end":43},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($attr:ident) => {","highlight_start":1,"highlight_end":23},{"text":" Expr::Ident($crate::nix_token!($attr))","highlight_start":1,"highlight_end":47},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($literal:expr) => {","highlight_start":1,"highlight_end":25},{"text":" Expr::Literal($crate::nix_token!($literal))","highlight_start":1,"highlight_end":52},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($err:tt)*) => {","highlight_start":1,"highlight_end":23},{"text":" compile_error!(stringify!($($err)*));","highlight_start":1,"highlight_end":46},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_token!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2879,"byte_end":3743,"line_start":89,"line_end":125,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_token {","highlight_start":1,"highlight_end":25},{"text":" (<$($template:tt)/+>) => {","highlight_start":1,"highlight_end":31},{"text":" Literal::PathTemplate([\"<\", $(stringify!($template)),+, \">\"].into_iter().collect(), Default::default())","highlight_start":1,"highlight_end":112},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (/ $($path:tt)/+) => {","highlight_start":1,"highlight_end":27},{"text":" Literal::Path([\"/\", $(stringify!($path)),+].into_iter().collect(), Default::default())","highlight_start":1,"highlight_end":95},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($prefix:tt / $($path:tt)/+) => {","highlight_start":1,"highlight_end":38},{"text":" Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default())","highlight_start":1,"highlight_end":111},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (false) => {","highlight_start":1,"highlight_end":17},{"text":" Literal::Boolean(false, Default::default())","highlight_start":1,"highlight_end":52},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (true) => {","highlight_start":1,"highlight_end":16},{"text":" Literal::Boolean(true, Default::default())","highlight_start":1,"highlight_end":51},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (null) => {","highlight_start":1,"highlight_end":16},{"text":" Literal::Null(Default::default())","highlight_start":1,"highlight_end":42},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (_) => {","highlight_start":1,"highlight_end":13},{"text":" Ident::from(\"_\")","highlight_start":1,"highlight_end":25},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($ident:ident) => {","highlight_start":1,"highlight_end":24},{"text":" Ident::from(stringify!($ident))","highlight_start":1,"highlight_end":40},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($literal:expr) => {","highlight_start":1,"highlight_end":25},{"text":" Literal::from($literal)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[{"message":"`#[warn(array_into_iter)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!","code":null,"level":"warning","spans":[],"children":[],"rendered":null},{"message":"for more information, see issue #66145 ","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"use `.iter()` instead of `.into_iter()` to avoid ambiguity","code":null,"level":"help","spans":[{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3291,"byte_end":3300,"line_start":99,"line_end":99,"column_start":69,"column_end":78,"is_primary":true,"text":[{"text":" Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default())","highlight_start":69,"highlight_end":78}],"label":null,"suggested_replacement":"iter","suggestion_applicability":"MachineApplicable","expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":24686,"byte_end":24724,"line_start":824,"line_end":824,"column_start":23,"column_end":61,"is_primary":false,"text":[{"text":" Expr::Literal($crate::nix_token!($prefix/$($path)/+))","highlight_start":23,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23318,"byte_end":23344,"line_start":772,"line_end":772,"column_start":9,"column_end":35,"is_primary":false,"text":[{"text":" $crate::atomic!($($expr)+)","highlight_start":9,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23218,"byte_end":23269,"line_start":768,"line_end":768,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23218,"byte_end":23269,"line_start":768,"line_end":768,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23528,"byte_end":23570,"line_start":780,"line_end":780,"column_start":9,"column_end":51,"is_primary":false,"text":[{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":51}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22220,"byte_end":22247,"line_start":739,"line_end":739,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::project!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22419,"byte_end":22450,"line_start":747,"line_end":747,"column_start":9,"column_end":40,"is_primary":false,"text":[{"text":" $crate::unary!(@rule $($expr)+)","highlight_start":9,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21590,"byte_end":21615,"line_start":715,"line_end":715,"column_start":9,"column_end":34,"is_primary":false,"text":[{"text":" $crate::unary!($($expr)+)","highlight_start":9,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21489,"byte_end":21541,"line_start":711,"line_end":711,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21489,"byte_end":21541,"line_start":711,"line_end":711,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21799,"byte_end":21842,"line_start":723,"line_end":723,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20876,"byte_end":20904,"line_start":689,"line_end":689,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::has_attr!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20777,"byte_end":20827,"line_start":685,"line_end":685,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20777,"byte_end":20827,"line_start":685,"line_end":685,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21088,"byte_end":21129,"line_start":697,"line_end":697,"column_start":9,"column_end":50,"is_primary":false,"text":[{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":50}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20166,"byte_end":20192,"line_start":663,"line_end":663,"column_start":9,"column_end":35,"is_primary":false,"text":[{"text":" $crate::concat!($($expr)+)","highlight_start":9,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20066,"byte_end":20117,"line_start":659,"line_end":659,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20066,"byte_end":20117,"line_start":659,"line_end":659,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20376,"byte_end":20418,"line_start":671,"line_end":671,"column_start":9,"column_end":51,"is_primary":false,"text":[{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":51}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19144,"byte_end":19171,"line_start":630,"line_end":630,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::product!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19048,"byte_end":19095,"line_start":626,"line_end":626,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19048,"byte_end":19095,"line_start":626,"line_end":626,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19345,"byte_end":19377,"line_start":638,"line_end":638,"column_start":9,"column_end":41,"is_primary":false,"text":[{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":9,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18119,"byte_end":18142,"line_start":594,"line_end":594,"column_start":9,"column_end":32,"is_primary":false,"text":[{"text":" $crate::sum!($($expr)+)","highlight_start":9,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18020,"byte_end":18070,"line_start":590,"line_end":590,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18020,"byte_end":18070,"line_start":590,"line_end":590,"column_start":9,"column_end":59,"is_primary":false,"text":[{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":59}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18326,"byte_end":18367,"line_start":602,"line_end":602,"column_start":9,"column_end":50,"is_primary":false,"text":[{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":50}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17148,"byte_end":17174,"line_start":565,"line_end":565,"column_start":9,"column_end":35,"is_primary":false,"text":[{"text":" $crate::update!($($expr)+)","highlight_start":9,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17048,"byte_end":17099,"line_start":561,"line_end":561,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17048,"byte_end":17099,"line_start":561,"line_end":561,"column_start":9,"column_end":60,"is_primary":false,"text":[{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17358,"byte_end":17400,"line_start":573,"line_end":573,"column_start":9,"column_end":51,"is_primary":false,"text":[{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":51}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15730,"byte_end":15757,"line_start":521,"line_end":521,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::compare!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15629,"byte_end":15681,"line_start":517,"line_end":517,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15629,"byte_end":15681,"line_start":517,"line_end":517,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15941,"byte_end":15984,"line_start":529,"line_end":529,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14792,"byte_end":14820,"line_start":489,"line_end":489,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::equality!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14697,"byte_end":14743,"line_start":485,"line_end":485,"column_start":9,"column_end":55,"is_primary":false,"text":[{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14697,"byte_end":14743,"line_start":485,"line_end":485,"column_start":9,"column_end":55,"is_primary":false,"text":[{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":55}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15004,"byte_end":15041,"line_start":497,"line_end":497,"column_start":9,"column_end":46,"is_primary":false,"text":[{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":46}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14106,"byte_end":14128,"line_start":463,"line_end":463,"column_start":9,"column_end":31,"is_primary":false,"text":[{"text":" $crate::or!($($expr)+)","highlight_start":9,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14010,"byte_end":14057,"line_start":459,"line_end":459,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14010,"byte_end":14057,"line_start":459,"line_end":459,"column_start":9,"column_end":56,"is_primary":false,"text":[{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":56}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14312,"byte_end":14350,"line_start":471,"line_end":471,"column_start":9,"column_end":47,"is_primary":false,"text":[{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13419,"byte_end":13442,"line_start":437,"line_end":437,"column_start":9,"column_end":32,"is_primary":false,"text":[{"text":" $crate::and!($($expr)+)","highlight_start":9,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13321,"byte_end":13370,"line_start":433,"line_end":433,"column_start":9,"column_end":58,"is_primary":false,"text":[{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13321,"byte_end":13370,"line_start":433,"line_end":433,"column_start":9,"column_end":58,"is_primary":false,"text":[{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13626,"byte_end":13666,"line_start":445,"line_end":445,"column_start":9,"column_end":49,"is_primary":false,"text":[{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":49}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12946,"byte_end":12971,"line_start":419,"line_end":419,"column_start":9,"column_end":34,"is_primary":false,"text":[{"text":" $crate::imply!($($expr)+);","highlight_start":9,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11852,"byte_end":11879,"line_start":379,"line_end":379,"column_start":9,"column_end":36,"is_primary":false,"text":[{"text":" $crate::if_else!($($expr)+)","highlight_start":9,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11751,"byte_end":11803,"line_start":375,"line_end":375,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11751,"byte_end":11803,"line_start":375,"line_end":375,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12063,"byte_end":12106,"line_start":387,"line_end":387,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10083,"byte_end":10111,"line_start":329,"line_end":329,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::function!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2808,"byte_end":2836,"line_start":83,"line_end":83,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::nix_expr!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":4246,"byte_end":4272,"line_start":139,"line_end":139,"column_start":23,"column_end":49,"is_primary":false,"text":[{"text":" let default = $crate::nix!($($default)+);","highlight_start":23,"highlight_end":49}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":5856,"byte_end":5914,"line_start":183,"line_end":183,"column_start":9,"column_end":67,"is_primary":false,"text":[{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":5856,"byte_end":5914,"line_start":183,"line_end":183,"column_start":9,"column_end":67,"is_primary":false,"text":[{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":6145,"byte_end":6194,"line_start":195,"line_end":195,"column_start":9,"column_end":58,"is_primary":false,"text":[{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":9,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":4863,"byte_end":4894,"line_start":153,"line_end":153,"column_start":41,"column_end":72,"is_primary":false,"text":[{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":41,"highlight_end":72}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10709,"byte_end":10743,"line_start":349,"line_end":349,"column_start":23,"column_end":57,"is_primary":false,"text":[{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":23,"highlight_end":57}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":11751,"byte_end":11803,"line_start":375,"line_end":375,"column_start":9,"column_end":61,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":9,"highlight_end":61}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12063,"byte_end":12106,"line_start":387,"line_end":387,"column_start":9,"column_end":52,"is_primary":false,"text":[{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":9,"highlight_end":52}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10083,"byte_end":10111,"line_start":329,"line_end":329,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::function!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2808,"byte_end":2836,"line_start":83,"line_end":83,"column_start":9,"column_end":37,"is_primary":false,"text":[{"text":" $crate::nix_expr!($($expr)+)","highlight_start":9,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":{"span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":25395,"byte_end":25424,"line_start":864,"line_end":864,"column_start":9,"column_end":38,"is_primary":false,"text":[{"text":" nix!({ x, y ? ./hello, }: _);","highlight_start":9,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},"macro_decl_name":"nix!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2626,"byte_end":2846,"line_start":77,"line_end":85,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix {","highlight_start":1,"highlight_end":19},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_expr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_expr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10027,"byte_end":10120,"line_start":327,"line_end":331,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_expr {","highlight_start":1,"highlight_end":24},{"text":" ($($expr:tt)+) => {","highlight_start":1,"highlight_end":24},{"text":" $crate::function!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_formals!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":3776,"byte_end":6204,"line_start":129,"line_end":197,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_formals {","highlight_start":1,"highlight_end":27},{"text":" (@formals (_ ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":58},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":68},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":40},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident) , $($rest:tt)*) => {{","highlight_start":1,"highlight_end":50},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal).chain($crate::nix_formals!($($rest)*))","highlight_start":1,"highlight_end":73},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_ ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":43},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident ? $($default:tt)+)) => {{","highlight_start":1,"highlight_end":53},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let default = $crate::nix!($($default)+);","highlight_start":1,"highlight_end":50},{"text":" let formal = Formal::new(name, Some(default), Default::default());","highlight_start":1,"highlight_end":75},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals (_)) => {{","highlight_start":1,"highlight_end":25},{"text":" let name = $crate::nix_token!(_);","highlight_start":1,"highlight_end":42},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($name:ident)) => {{","highlight_start":1,"highlight_end":35},{"text":" let name = $crate::nix_token!($name);","highlight_start":1,"highlight_end":46},{"text":" let formal = Formal::new(name, None, Default::default());","highlight_start":1,"highlight_end":66},{"text":" ::std::iter::once(formal)","highlight_start":1,"highlight_end":34},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@formals ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":57},{"text":" $crate::nix_formals!(@formals ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":67},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" () => {","highlight_start":1,"highlight_end":12},{"text":" ::std::iter::empty()","highlight_start":1,"highlight_end":29},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($first:tt $($rest:tt)*) => {{","highlight_start":1,"highlight_end":35},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_formals!(@formals ($first) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2626,"byte_end":2846,"line_start":77,"line_end":85,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix {","highlight_start":1,"highlight_end":19},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::nix_expr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_expr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10027,"byte_end":10120,"line_start":327,"line_end":331,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_expr {","highlight_start":1,"highlight_end":24},{"text":" ($($expr:tt)+) => {","highlight_start":1,"highlight_end":24},{"text":" $crate::function!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::function!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":10153,"byte_end":12116,"line_start":335,"line_end":389,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! function {","highlight_start":1,"highlight_end":24},{"text":" (@rule (_:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":36},{"text":" let pattern = Pattern::Simple($crate::nix_token!(_));","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($arg:ident:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":45},{"text":" let pattern = Pattern::Simple($crate::nix_token!($arg));","highlight_start":1,"highlight_end":65},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ({ $($formals:tt)* }:) $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let formals = $crate::nix_formals!($($formals)*).collect();","highlight_start":1,"highlight_end":68},{"text":" let set_pattern = SetPattern::new(formals, None, None, Default::default());","highlight_start":1,"highlight_end":84},{"text":" let pattern = Pattern::Set(set_pattern);","highlight_start":1,"highlight_end":49},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprFnDecl::new(pattern, body, Default::default()))","highlight_start":1,"highlight_end":71},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (with $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":53},{"text":" let with = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":44},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprWith::new(with, expr, Default::default()))","highlight_start":1,"highlight_end":66},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (assert $($expr:tt)+) ; $($rest:tt)+) => {{","highlight_start":1,"highlight_end":55},{"text":" let assert = $crate::nix!($($expr)+);","highlight_start":1,"highlight_end":46},{"text":" let expr = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprAssert::new(assert, expr, Default::default()))","highlight_start":1,"highlight_end":70},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule (let $($binds:tt)+) in $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let binds = $crate::nix_binds!($($binds)+).collect();","highlight_start":1,"highlight_end":62},{"text":" let body = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprLetIn::new(binds, body, Default::default()))","highlight_start":1,"highlight_end":68},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::function!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::if_else!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::function!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::if_else!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":12149,"byte_end":12981,"line_start":393,"line_end":421,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! if_else {","highlight_start":1,"highlight_end":23},{"text":" (@cond (if $($cond:tt)+) then $($rest:tt)+) => {{","highlight_start":1,"highlight_end":54},{"text":" let cond = $crate::nix!($($cond)+);","highlight_start":1,"highlight_end":44},{"text":" let (body, alt) = $crate::if_else!(@body (then) $($rest)+);","highlight_start":1,"highlight_end":68},{"text":" Expr::from(ExprIf::new(cond, body, alt, Default::default()))","highlight_start":1,"highlight_end":69},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@cond ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::if_else!(@cond ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@body (then $($body:tt)+) else $($rest:tt)+) => {{","highlight_start":1,"highlight_end":56},{"text":" let body = $crate::nix!($($body)+);","highlight_start":1,"highlight_end":44},{"text":" let alt = $crate::nix!($($rest)+);","highlight_start":1,"highlight_end":43},{"text":" (body, alt)","highlight_start":1,"highlight_end":20},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@body ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::if_else!(@body ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (if $($rest:tt)+) => {","highlight_start":1,"highlight_end":27},{"text":" $crate::if_else!(@cond (if) $($rest)+)","highlight_start":1,"highlight_end":47},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($expr:tt)+) => {","highlight_start":1,"highlight_end":24},{"text":" $crate::imply!($($expr)+);","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::imply!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13014,"byte_end":13676,"line_start":425,"line_end":447,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! imply {","highlight_start":1,"highlight_end":21},{"text":" (@rule ($($lhs:tt)+) -> $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::and!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::imply!($($rhs)+);","highlight_start":1,"highlight_end":44},{"text":" Expr::from(ExprBinary::new(BinaryOp::Impl, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::imply!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":58},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::and!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::imply!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":49},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::and!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":13709,"byte_end":14360,"line_start":451,"line_end":473,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! and {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($lhs:tt)+) && $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::or!($($lhs)+);","highlight_start":1,"highlight_end":41},{"text":" let rhs = $crate::and!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::And, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::and!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::or!($($expr)+)","highlight_start":1,"highlight_end":31},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::and!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":47},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::or!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":14393,"byte_end":15051,"line_start":477,"line_end":499,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! or {","highlight_start":1,"highlight_end":18},{"text":" (@rule ($($lhs:tt)+) || $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::equality!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::or!($($rhs)+);","highlight_start":1,"highlight_end":41},{"text":" Expr::from(ExprBinary::new(BinaryOp::Or, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::or!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::equality!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::or!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":46},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::equality!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":15084,"byte_end":15994,"line_start":503,"line_end":531,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! equality {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) == $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Eq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":80},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) != $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::compare!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::compare!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::NotEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":83},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::equality!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::compare!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::equality!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::compare!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":16027,"byte_end":17410,"line_start":535,"line_end":575,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! compare {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) <= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":88},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) < $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::LessThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":86},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) >= $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThanEq, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":91},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) > $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::update!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::GreaterThan, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":89},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::compare!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::update!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::compare!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::update!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":17443,"byte_end":18377,"line_start":579,"line_end":604,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! update {","highlight_start":1,"highlight_end":22},{"text":" // Note that the update (`//`) operator is separated by a space in this macro because it also","highlight_start":1,"highlight_end":98},{"text":" // happens to be the comment token in Rust. The `nix_expr_and_str!()` macro will replace these","highlight_start":1,"highlight_end":99},{"text":" // occurrences with the correct `//` form in the output string.","highlight_start":1,"highlight_end":68},{"text":" (@rule ($($lhs:tt)+) / / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":48},{"text":" let lhs = $crate::sum!($($lhs)+);","highlight_start":1,"highlight_end":42},{"text":" let rhs = $crate::update!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Update, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::update!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::sum!($($expr)+)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::update!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::sum!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":18410,"byte_end":19387,"line_start":608,"line_end":640,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! sum {","highlight_start":1,"highlight_end":19},{"text":" (@rule ($($prev:tt)*) ++ $($rest:tt)*) => {","highlight_start":1,"highlight_end":48},{"text":" $crate::sum!(@rule ($($prev)* ++) $($rest)*)","highlight_start":1,"highlight_end":53},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) + $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Add, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($lhs:tt)+) - $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::product!($($lhs)+);","highlight_start":1,"highlight_end":46},{"text":" let rhs = $crate::sum!($($rhs)+);","highlight_start":1,"highlight_end":42},{"text":" Expr::from(ExprBinary::new(BinaryOp::Sub, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::sum!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":56},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::product!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $($expr:tt)+ ) => {{","highlight_start":1,"highlight_end":27},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::sum!(@rule () $($expr)*)","highlight_start":1,"highlight_end":41},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::product!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":19420,"byte_end":20428,"line_start":644,"line_end":673,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! product {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($lhs:tt)+) * $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::concat!($($lhs)+);","highlight_start":1,"highlight_end":45},{"text":" let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":46},{"text":" Expr::from(ExprBinary::new(BinaryOp::Mul, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":81},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" // FIXME: This operator does not work currently because it interferes with path parsing.","highlight_start":1,"highlight_end":93},{"text":" // (@rule ($($lhs:tt)+) / $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":49},{"text":" // let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" // let rhs = $crate::product!($($rhs)+);","highlight_start":1,"highlight_end":49},{"text":" // Expr::from(ExprBinary::new(BinaryOp::Div, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" // }};","highlight_start":1,"highlight_end":11},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::product!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::concat!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::product!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::concat!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":20461,"byte_end":21139,"line_start":677,"line_end":699,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! concat {","highlight_start":1,"highlight_end":22},{"text":" (@rule ($($lhs:tt)+) ++ $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":47},{"text":" let lhs = $crate::has_attr!($($lhs)+);","highlight_start":1,"highlight_end":47},{"text":" let rhs = $crate::concat!($($rhs)+);","highlight_start":1,"highlight_end":45},{"text":" Expr::from(ExprBinary::new(BinaryOp::Concat, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":84},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::concat!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":59},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::has_attr!($($expr)+)","highlight_start":1,"highlight_end":37},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::concat!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":50},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::has_attr!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21172,"byte_end":21852,"line_start":703,"line_end":725,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! has_attr {","highlight_start":1,"highlight_end":24},{"text":" (@rule ($($lhs:tt)+) ? $($rhs:tt)+) => {{","highlight_start":1,"highlight_end":46},{"text":" let lhs = $crate::unary!($($lhs)+);","highlight_start":1,"highlight_end":44},{"text":" let rhs = $crate::has_attr!($($rhs)+);","highlight_start":1,"highlight_end":47},{"text":" Expr::from(ExprBinary::new(BinaryOp::HasAttr, lhs, rhs, Default::default()))","highlight_start":1,"highlight_end":85},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::has_attr!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":61},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::unary!($($expr)+)","highlight_start":1,"highlight_end":34},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::has_attr!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":52},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::unary!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21885,"byte_end":22460,"line_start":729,"line_end":749,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! unary {","highlight_start":1,"highlight_end":21},{"text":" (@rule - $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Neg, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ! $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Not, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule $($expr:tt)+) => {","highlight_start":1,"highlight_end":30},{"text":" $crate::project!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::unary!(@rule $($expr)+)","highlight_start":1,"highlight_end":40},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::unary!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":21885,"byte_end":22460,"line_start":729,"line_end":749,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! unary {","highlight_start":1,"highlight_end":21},{"text":" (@rule - $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Neg, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ! $($expr:tt)+) => {","highlight_start":1,"highlight_end":32},{"text":" Expr::from(ExprUnary::new(UnaryOp::Not, $crate::project!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":98},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule $($expr:tt)+) => {","highlight_start":1,"highlight_end":30},{"text":" $crate::project!($($expr)+)","highlight_start":1,"highlight_end":36},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($expr:tt)+) => {{","highlight_start":1,"highlight_end":25},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::unary!(@rule $($expr)+)","highlight_start":1,"highlight_end":40},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::project!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":22493,"byte_end":23580,"line_start":753,"line_end":782,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! project {","highlight_start":1,"highlight_end":23},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+ or $($fallback:tt)+) => {{","highlight_start":1,"highlight_end":72},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" let fallback = $crate::project!($($fallback)+);","highlight_start":1,"highlight_end":56},{"text":" Expr::from(ExprProj::new(base, path, Some(fallback), Default::default()))","highlight_start":1,"highlight_end":82},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+) . $($path:ident).+) => {{","highlight_start":1,"highlight_end":52},{"text":" let base = $crate::atomic!($($expr)+);","highlight_start":1,"highlight_end":47},{"text":" let path = AttrPath::new(vec![$(AttrSegment::Ident(Ident::from(stringify!($path)))),+]);","highlight_start":1,"highlight_end":97},{"text":" Expr::from(ExprProj::new(base, path, None, Default::default()))","highlight_start":1,"highlight_end":72},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($prev:tt)*) $next:tt $($rest:tt)*) => {","highlight_start":1,"highlight_end":54},{"text":" $crate::project!(@rule ($($prev)* $next) $($rest)*)","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (@rule ($($expr:tt)+)) => {","highlight_start":1,"highlight_end":32},{"text":" $crate::atomic!($($expr)+)","highlight_start":1,"highlight_end":35},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ( $first:tt $($rest:tt)* ) => {{","highlight_start":1,"highlight_end":37},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::*;","highlight_start":1,"highlight_end":28},{"text":" #[allow(unused_imports)]","highlight_start":1,"highlight_end":33},{"text":" use $crate::ast::tokens::*;","highlight_start":1,"highlight_end":36},{"text":" $crate::project!(@rule ($first) $($rest)*)","highlight_start":1,"highlight_end":51},{"text":" }};","highlight_start":1,"highlight_end":8},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::atomic!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":23613,"byte_end":25256,"line_start":786,"line_end":854,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! atomic {","highlight_start":1,"highlight_end":22},{"text":" (antiquote!($antiquote:expr)) => {","highlight_start":1,"highlight_end":39},{"text":" ($antiquote)","highlight_start":1,"highlight_end":21},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (($($expr:tt)+)) => {","highlight_start":1,"highlight_end":26},{"text":" Expr::from(ExprParen::new($crate::nix_expr!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":85},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ({$($binds:tt)*}) => {","highlight_start":1,"highlight_end":27},{"text":" Expr::Set(ExprSet::new($crate::nix_binds!($($binds)*).collect(), Default::default()))","highlight_start":1,"highlight_end":94},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (rec {$($binds:tt)*}) => {","highlight_start":1,"highlight_end":31},{"text":" Expr::Rec(ExprRec::new($crate::nix_binds!($($binds)*).collect(), Default::default()))","highlight_start":1,"highlight_end":94},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (let {$($binds:tt)*}) => {","highlight_start":1,"highlight_end":31},{"text":" Expr::Let(ExprLet::new($crate::nix_binds!($($binds)*).collect(), Default::default()))","highlight_start":1,"highlight_end":94},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($dollar:tt { $($expr:tt)+ }) => {","highlight_start":1,"highlight_end":39},{"text":" Expr::from(ExprInterpolation::new($crate::nix!($($expr)+), Default::default()))","highlight_start":1,"highlight_end":88},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ([$($expr:tt)*]) => {","highlight_start":1,"highlight_end":26},{"text":" Expr::List($crate::nix_list!([$($expr)*]))","highlight_start":1,"highlight_end":51},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (<$($template:tt)/+>) => {","highlight_start":1,"highlight_end":31},{"text":" Expr::Literal($crate::nix_token!(<$($template)/+>))","highlight_start":1,"highlight_end":60},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (/ $($path:tt)/+) => {","highlight_start":1,"highlight_end":27},{"text":" Expr::Literal($crate::nix_token!(/$($path)/+))","highlight_start":1,"highlight_end":55},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($prefix:tt / $($path:tt)/+) => {","highlight_start":1,"highlight_end":38},{"text":" Expr::Literal($crate::nix_token!($prefix/$($path)/+))","highlight_start":1,"highlight_end":62},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (false) => {","highlight_start":1,"highlight_end":17},{"text":" Expr::Literal($crate::nix_token!(false))","highlight_start":1,"highlight_end":49},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (true) => {","highlight_start":1,"highlight_end":16},{"text":" Expr::Literal($crate::nix_token!(true))","highlight_start":1,"highlight_end":48},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (null) => {","highlight_start":1,"highlight_end":16},{"text":" Expr::Literal($crate::nix_token!(null))","highlight_start":1,"highlight_end":48},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (_) => {","highlight_start":1,"highlight_end":13},{"text":" Expr::Ident($crate::nix_token!(_))","highlight_start":1,"highlight_end":43},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($attr:ident) => {","highlight_start":1,"highlight_end":23},{"text":" Expr::Ident($crate::nix_token!($attr))","highlight_start":1,"highlight_end":47},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($literal:expr) => {","highlight_start":1,"highlight_end":25},{"text":" Expr::Literal($crate::nix_token!($literal))","highlight_start":1,"highlight_end":52},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($($err:tt)*) => {","highlight_start":1,"highlight_end":23},{"text":" compile_error!(stringify!($($err)*));","highlight_start":1,"highlight_end":46},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}},"macro_decl_name":"$crate::nix_token!","def_site_span":{"file_name":"nix-parser/src/ast/macros.rs","byte_start":2879,"byte_end":3743,"line_start":89,"line_end":125,"column_start":1,"column_end":2,"is_primary":false,"text":[{"text":"macro_rules! nix_token {","highlight_start":1,"highlight_end":25},{"text":" (<$($template:tt)/+>) => {","highlight_start":1,"highlight_end":31},{"text":" Literal::PathTemplate([\"<\", $(stringify!($template)),+, \">\"].into_iter().collect(), Default::default())","highlight_start":1,"highlight_end":112},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (/ $($path:tt)/+) => {","highlight_start":1,"highlight_end":27},{"text":" Literal::Path([\"/\", $(stringify!($path)),+].into_iter().collect(), Default::default())","highlight_start":1,"highlight_end":95},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($prefix:tt / $($path:tt)/+) => {","highlight_start":1,"highlight_end":38},{"text":" Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default())","highlight_start":1,"highlight_end":111},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (false) => {","highlight_start":1,"highlight_end":17},{"text":" Literal::Boolean(false, Default::default())","highlight_start":1,"highlight_end":52},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (true) => {","highlight_start":1,"highlight_end":16},{"text":" Literal::Boolean(true, Default::default())","highlight_start":1,"highlight_end":51},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (null) => {","highlight_start":1,"highlight_end":16},{"text":" Literal::Null(Default::default())","highlight_start":1,"highlight_end":42},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" (_) => {","highlight_start":1,"highlight_end":13},{"text":" Ident::from(\"_\")","highlight_start":1,"highlight_end":25},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($ident:ident) => {","highlight_start":1,"highlight_end":24},{"text":" Ident::from(stringify!($ident))","highlight_start":1,"highlight_end":40},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"","highlight_start":1,"highlight_end":1},{"text":" ($literal:expr) => {","highlight_start":1,"highlight_end":25},{"text":" Literal::from($literal)","highlight_start":1,"highlight_end":32},{"text":" };","highlight_start":1,"highlight_end":7},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}}}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter` (due to autoref coercions), but that might change in the future when `IntoIterator` impls for arrays are added.\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnix-parser/src/ast/macros.rs:99:69\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m99\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default())\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: use `.iter()` instead of `.into_iter()` to avoid ambiguity: `iter`\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m864\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m nix!({ x, y ? ./hello, }: _);\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-----------------------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12min this macro invocation\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(array_into_iter)]` on by default\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mwarning\u001b[0m\u001b[0m: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: for more information, see issue #66145 \u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)\u001b[0m\n\n"}} [INFO] [stdout] warning: this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter` (due to autoref coercions), but that might change in the future when `IntoIterator` impls for arrays are added. [INFO] [stdout] --> nix-parser/src/ast/macros.rs:99:69 [INFO] [stdout] | [INFO] [stdout] 99 | Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default()) [INFO] [stdout] | ^^^^^^^^^ help: use `.iter()` instead of `.into_iter()` to avoid ambiguity: `iter` [INFO] [stdout] ... [INFO] [stdout] 918 | nix!([foo ./bar/baz]); [INFO] [stdout] | ---------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #66145 [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter` (due to autoref coercions), but that might change in the future when `IntoIterator` impls for arrays are added. [INFO] [stdout] --> nix-parser/src/ast/macros.rs:95:53 [INFO] [stdout] | [INFO] [stdout] 95 | Literal::Path(["/", $(stringify!($path)),+].into_iter().collect(), Default::default()) [INFO] [stdout] | ^^^^^^^^^ help: use `.iter()` instead of `.into_iter()` to avoid ambiguity: `iter` [INFO] [stdout] ... [INFO] [stdout] 919 | nix!(/foo/bar); [INFO] [stdout] | --------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #66145 [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter` (due to autoref coercions), but that might change in the future when `IntoIterator` impls for arrays are added. [INFO] [stdout] --> nix-parser/src/ast/macros.rs:99:69 [INFO] [stdout] | [INFO] [stdout] 99 | Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default()) [INFO] [stdout] | ^^^^^^^^^ help: use `.iter()` instead of `.into_iter()` to avoid ambiguity: `iter` [INFO] [stdout] ... [INFO] [stdout] 920 | nix!(~/foo/bar); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #66145 [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter` (due to autoref coercions), but that might change in the future when `IntoIterator` impls for arrays are added. [INFO] [stdout] --> nix-parser/src/ast/macros.rs:99:69 [INFO] [stdout] | [INFO] [stdout] 99 | Literal::Path([stringify!($prefix), $(stringify!($path)),+].into_iter().collect(), Default::default()) [INFO] [stdout] | ^^^^^^^^^ help: use `.iter()` instead of `.into_iter()` to avoid ambiguity: `iter` [INFO] [stdout] ... [INFO] [stdout] 921 | nix!(./foo/bar); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #66145 [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this method call currently resolves to `<&[T; N] as IntoIterator>::into_iter` (due to autoref coercions), but that might change in the future when `IntoIterator` impls for arrays are added. [INFO] [stdout] --> nix-parser/src/ast/macros.rs:91:70 [INFO] [stdout] | [INFO] [stdout] 91 | Literal::PathTemplate(["<", $(stringify!($template)),+, ">"].into_iter().collect(), Default::default()) [INFO] [stdout] | ^^^^^^^^^ help: use `.iter()` instead of `.into_iter()` to avoid ambiguity: `iter` [INFO] [stdout] ... [INFO] [stdout] 922 | nix!(); [INFO] [stdout] | -------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #66145 [INFO] [stdout] = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking codespan-lsp v0.8.0 [INFO] [stderr] Checking tower-lsp v0.9.0 [INFO] [stderr] Checking codespan-lsp v0.9.3 [INFO] [stderr] Checking nix-errors v0.1.0 (/opt/rustwide/workdir/nix-errors) [INFO] [stderr] Checking nix-parser2 v0.1.0 (/opt/rustwide/workdir/nix-parser2) [INFO] [stdout] warning: associated function is never used: `token` [INFO] [stdout] --> nix-parser2/src/cst.rs:325:12 [INFO] [stdout] | [INFO] [stdout] 325 | pub fn token>(&mut self, kind: TokenKind, text: T) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `error` [INFO] [stdout] --> nix-parser2/src/cst.rs:336:12 [INFO] [stdout] | [INFO] [stdout] 336 | pub fn error(&mut self, error: Error) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `tokens` [INFO] [stdout] --> nix-parser2/src/lib.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | tokens: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `token` [INFO] [stdout] --> nix-parser2/src/cst.rs:325:12 [INFO] [stdout] | [INFO] [stdout] 325 | pub fn token>(&mut self, kind: TokenKind, text: T) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `error` [INFO] [stdout] --> nix-parser2/src/cst.rs:336:12 [INFO] [stdout] | [INFO] [stdout] 336 | pub fn error(&mut self, error: Error) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `tokens` [INFO] [stdout] --> nix-parser2/src/lib.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | tokens: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 3 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 3 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking nix-language-server v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2m 17s [INFO] running `Command { std: "docker" "inspect" "15ab960be13d5e881af58b7e850e6ce56e4bdc643f5b37328f7debb4b334f866", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "15ab960be13d5e881af58b7e850e6ce56e4bdc643f5b37328f7debb4b334f866", kill_on_drop: false }` [INFO] [stdout] 15ab960be13d5e881af58b7e850e6ce56e4bdc643f5b37328f7debb4b334f866