Rust: internal error: entered unreachable code

Created on 31 Jul 2019  路  15Comments  路  Source: rust-lang/rust

Seems to be something to do with Rocket. Having a get on the internal function is causing the compiler to blow up.

fn moo() {
    #[get("/moo")]
    fn get() -> String {
        "moo".to_string()
    }
}

Version:

rustc 1.38.0-nightly (dddb7fca0 2019-07-30)
binary: rustc
commit-hash: dddb7fca09dc817ba275602b950bb81a9032fb6d
commit-date: 2019-07-30
host: x86_64-unknown-linux-gnu
release: 1.38.0-nightly
LLVM version: 9.0

Stack trace:

thread 'rustc' panicked at 'internal error: entered unreachable code', src/librustc_privacy/lib.rs:767:17
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:47
   3: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:36
   4: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:200
   5: std::panicking::default_hook
             at src/libstd/panicking.rs:214
   6: rustc::util::common::panic_hook
   7: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:481
   8: std::panicking::begin_panic
   9: <rustc_privacy::EmbargoVisitor as rustc::hir::intravisit::Visitor>::visit_macro_def
  10: rustc_privacy::privacy_access_levels
  11: rustc::ty::query::__query_compute::privacy_access_levels
  12: rustc::dep_graph::graph::DepGraph::with_task_impl
  13: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  14: rustc::util::common::time
  15: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
  16: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:80
  17: rustc_interface::passes::analysis::{{closure}}
  18: rustc::util::common::time
  19: rustc_interface::passes::analysis
  20: rustc::ty::query::__query_compute::analysis
  21: rustc::dep_graph::graph::DepGraph::with_task_impl
  22: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  23: rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}
  24: rustc_interface::passes::create_global_ctxt::{{closure}}
  25: rustc_interface::interface::run_compiler_in_existing_thread_pool
  26: std::thread::local::LocalKey<T>::with
  27: syntax::with_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
query stack during panic:
#0 [privacy_access_levels] privacy access levels
#1 [analysis] running analysis passes on this crate
end of query stack
A-macros A-macros-2.0 A-visibility C-bug I-ICE P-high T-compiler

All 15 comments

@cazgp I think this issue might be better-suited for the Rocket repository.

Ah OK. The output told me to file an issue here so I thought it might be a compiler problem rather than something specific to Rocket. Can we leave it open for a bit just until it's confirmed as Rocket-specific?

Hm, this bug probably originates with interesting codegen in Rocket, but is likely a bug in rustc in the end. I would keep it here, though letting Rocket know about it might not be a bad idea.

I'm going to label this as P-high for now since it affects Rocket.

cc @petrochenkov re. macros & privacy.

Without looking too deeply I would wager that we're getting a ForeignMod here, although it could be any other ItemKind which would be worrisome:

https://github.com/rust-lang/rust/blob/676d282dd3cd2dedba651e98c9a41af42983f08b/src/librustc_privacy/lib.rs#L761-L768

Would be great to have a reproducer that did not depend on Rocket and codegen, if it is possible.

Trying to get a simple reproducible example and am unable to :( It got a little time-consuming and I really need to get work done so have worked around it for now. I could possibly publish everything in a repo, but it would still be rocket + codegen and not a very simple example!

Latest nightly (2019-08-11) still panics, but with different error message:

thread 'rustc' panicked at 'not a module', src/librustc/hir/map/mod.rs:528:18
stack backtrace:
   0:     0x7f0ad7d6c61b - backtrace::backtrace::libunwind::trace::ha0c5be6d84ff3577
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/libunwind.rs:88
   1:     0x7f0ad7d6c61b - backtrace::backtrace::trace_unsynchronized::h0140f1905fe5df01
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/mod.rs:66
   2:     0x7f0ad7d6c61b - std::sys_common::backtrace::_print::h71c90b55c1552895
                               at src/libstd/sys_common/backtrace.rs:47
   3:     0x7f0ad7d6c61b - std::sys_common::backtrace::print::h0d9ae497e80a66d3
                               at src/libstd/sys_common/backtrace.rs:36
   4:     0x7f0ad7d6c61b - std::panicking::default_hook::{{closure}}::h0f874d2b67342285
                               at src/libstd/panicking.rs:200
   5:     0x7f0ad7d6c2f6 - std::panicking::default_hook::hb16f7323e318d7e4
                               at src/libstd/panicking.rs:214
   6:     0x7f0ad9a864a1 - rustc::util::common::panic_hook::h429013132a47c4fc
   7:     0x7f0ad7d6ce76 - std::panicking::rust_panic_with_hook::h399c25a83b2171e5
                               at src/libstd/panicking.rs:481
   8:     0x7f0ad9aec655 - std::panicking::begin_panic::he315ffb87476d743
   9:     0x7f0ad97341e9 - rustc::hir::map::Map::get_module::h1210e98f2c905b81
  10:     0x7f0ad8796c55 - rustc_privacy::EmbargoVisitor::update_macro_reachable::h03ea7b13a3744e67
  11:     0x7f0ad8798b18 - <rustc_privacy::EmbargoVisitor as rustc::hir::intravisit::Visitor>::visit_macro_def::hacc66c1d53288339
  12:     0x7f0ad879dcd9 - rustc_privacy::privacy_access_levels::h2f299a855f11d2ea
  13:     0x7f0ad83f4995 - rustc::ty::query::__query_compute::privacy_access_levels::h0a7b4c7f05bc2167
  14:     0x7f0ad83f719c - rustc::dep_graph::graph::DepGraph::with_task_impl::h4453007938f8cfe3
  15:     0x7f0ad83e61c7 - rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query::hc392c801ffb5ed4c
  16:     0x7f0ad838d59e - rustc::util::common::time::h15d9e7ce0076925b
  17:     0x7f0ad82fa5db - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h12546751fd40c726
  18:     0x7f0ad7d7d70a - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:80
  19:     0x7f0ad8392f62 - rustc_interface::passes::analysis::{{closure}}::h8734b7d05d191413
  20:     0x7f0ad838c820 - rustc::util::common::time::h02a48a90970b1bac
  21:     0x7f0ad8349b14 - rustc_interface::passes::analysis::h57ebb0969e450b3d
  22:     0x7f0ad8233f31 - rustc::ty::query::__query_compute::analysis::h6c096f0d36ed86f6
  23:     0x7f0ad82353b9 - rustc::dep_graph::graph::DepGraph::with_task_impl::h2550ad6665d41399
  24:     0x7f0ad824795e - rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query::hc5055ce71170472f
  25:     0x7f0ad825509a - rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}::h4786e32a4ca81311
  26:     0x7f0ad83c351a - rustc_interface::passes::create_global_ctxt::{{closure}}::h597429a0e6926f58
  27:     0x7f0ad8257aaf - rustc_interface::interface::run_compiler_in_existing_thread_pool::hff30cd26e49be082
  28:     0x7f0ad82904f2 - std::thread::local::LocalKey<T>::with::hd8d9ab6c3632b928
  29:     0x7f0ad82a6a00 - syntax::with_globals::hab02661e6f94b740
  30:     0x7f0ad8228a62 - std::sys_common::backtrace::__rust_begin_short_backtrace::h142cd21c5b6016af
  31:     0x7f0ad7d7d70a - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:80
  32:     0x7f0ad8259029 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hc6e3bc11b5dabea5
  33:     0x7f0ad7d502ff - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::hc06a52252b8da4d8
                               at /rustc/00ee1b47f42129a0a6e33510578fbcf07c1e5382/src/liballoc/boxed.rs:787
  34:     0x7f0ad7d7c390 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::ha593cf28b5c6f358
                               at /rustc/00ee1b47f42129a0a6e33510578fbcf07c1e5382/src/liballoc/boxed.rs:787
  35:     0x7f0ad7d7c390 - std::sys_common::thread::start_thread::h0e1c86ca3f5e2a0a
                               at src/libstd/sys_common/thread.rs:13
  36:     0x7f0ad7d7c390 - std::sys::unix::thread::Thread::new::thread_start::h2c0daa2b9405abac
                               at src/libstd/sys/unix/thread.rs:79
  37:     0x7f0ad7cbb75a - start_thread
  38:     0x7f0ad7bd09f3 - __clone
  39:                0x0 - <unknown>
query stack during panic:
#0 [privacy_access_levels] privacy access levels
#1 [analysis] running analysis passes on this crate
end of query stack

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.38.0-nightly (00ee1b47f 2019-08-11) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=2 -C incremental --crate-type bin

Also as a sidenote: Rocket master does not ICE anymore. The ICE "was fixed" by https://github.com/SergioBenitez/Rocket/commit/2f458b5217bc581074432fb110f8a0f3385e8bff so it may be a problem with decl_macro ?

@hellow554 I would still wan't rustc not to ICE on the face of malformed input.

https://github.com/rust-lang/rust/blob/60960a260f7b5c695fd0717311d72ce62dd4eb43/src/librustc/hir/map/mod.rs#L517-L530

For future reference, when panicking or using bug for not finding what you expect it is a good idea to include in the message what the found value was. :)

@hellow554 I would still wan't rustc not to ICE on the face of malformed input.

I think you got me wrong. I haven't said, that this should be closed because upstream code has changed, but I said, that upstream does not ICE anymore, so I looked into it, what caused it to not ICE anymore.

For future reference, when panicking or using bug for not finding what you expect it is a good idea to include in the message what the found value was. :)

I try to go that ;)


Confirmed, that it is related to decl maros

@rustbot modify labels: +A-macros-2.0

@jonas-schievink I need your help with the tags here please ^^

#![feature(decl_macro)]

pub fn moo() {
    pub macro ABC() {{}}
}

fn main() {}


Backtraces


60960a260

thread 'rustc' panicked at 'not a module', src/librustc/hir/map/mod.rs:528:18
stack backtrace:
   0:     0x7f99dcf3868b - backtrace::backtrace::libunwind::trace::h2577eef7cb82271e
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/libunwind.rs:88
   1:     0x7f99dcf3868b - backtrace::backtrace::trace_unsynchronized::ha9b72a77aa6c4ce9
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/mod.rs:66
   2:     0x7f99dcf3868b - std::sys_common::backtrace::_print::h8e2c1c5cda6e4e6e
                               at src/libstd/sys_common/backtrace.rs:47
   3:     0x7f99dcf3868b - std::sys_common::backtrace::print::h7e0f8aad0d8a6f3b
                               at src/libstd/sys_common/backtrace.rs:36
   4:     0x7f99dcf3868b - std::panicking::default_hook::{{closure}}::haae4327ede06a559
                               at src/libstd/panicking.rs:200
   5:     0x7f99dcf38366 - std::panicking::default_hook::hbf5f36093f15fccc
                               at src/libstd/panicking.rs:214
   6:     0x7f99deddf6c1 - rustc::util::common::panic_hook::h186d7378210995d5
   7:     0x7f99dcf38ee6 - std::panicking::rust_panic_with_hook::hf385e0a05e771036
                               at src/libstd/panicking.rs:481
   8:     0x7f99ded60535 - std::panicking::begin_panic::h98efcde0b33861fd
   9:     0x7f99dea1e8e9 - rustc::hir::map::Map::get_module::h8459c30767a59634
  10:     0x7f99dd976bd5 - rustc_privacy::EmbargoVisitor::update_macro_reachable::h6a3b276385f70843
  11:     0x7f99dd978ae5 - <rustc_privacy::EmbargoVisitor as rustc::hir::intravisit::Visitor>::visit_macro_def::hcbafa5fdfe7ec278
  12:     0x7f99dd97da19 - rustc_privacy::privacy_access_levels::hab5fb8ebf6879a00
  13:     0x7f99dd5c9875 - rustc::ty::query::__query_compute::privacy_access_levels::h997d37146502020c
  14:     0x7f99dd5ce5cc - rustc::dep_graph::graph::DepGraph::with_task_impl::h5b324a86c2bc7b54
  15:     0x7f99dd5baad7 - rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query::hb10373db1d5669d1
  16:     0x7f99dd55d12e - rustc::util::common::time::h48c99f483b081dea
  17:     0x7f99dd4c5edb - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h9e5808ec22ae1930
  18:     0x7f99dcf497da - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:80
  19:     0x7f99dd562182 - rustc_interface::passes::analysis::{{closure}}::h054b9f0f0c77f34b
  20:     0x7f99dd55d8e0 - rustc::util::common::time::h8409e1576e8c0d89
  21:     0x7f99dd518954 - rustc_interface::passes::analysis::heb3974148e32c83a
  22:     0x7f99dd3fe941 - rustc::ty::query::__query_compute::analysis::h83791fe1f4d00f5f
  23:     0x7f99dd3ffe99 - rustc::dep_graph::graph::DepGraph::with_task_impl::h28a3f59ca4aea2c5
  24:     0x7f99dd40e09e - rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query::h598f4a5ef7d98b4a
  25:     0x7f99dd41f97a - rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}::h7aa52f166037c173
  26:     0x7f99dd59888a - rustc_interface::passes::create_global_ctxt::{{closure}}::h970097f89991677c
  27:     0x7f99dd42142f - rustc_interface::interface::run_compiler_in_existing_thread_pool::h2009c7257c3c167e
  28:     0x7f99dd45b302 - std::thread::local::LocalKey<T>::with::h5f3bc545c05a19af
  29:     0x7f99dd471ae0 - syntax::with_globals::h55d1d6dcdd17adef
  30:     0x7f99dd3f37c2 - std::sys_common::backtrace::__rust_begin_short_backtrace::hfa7060075d41bdcb
  31:     0x7f99dcf497da - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:80
  32:     0x7f99dd423c09 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hc822505d1ebef265
  33:     0x7f99dcf1c34f - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::hcb726170bbd77169
                               at /rustc/60960a260f7b5c695fd0717311d72ce62dd4eb43/src/liballoc/boxed.rs:787
  34:     0x7f99dcf48460 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h8f9a27f02cc198cd
                               at /rustc/60960a260f7b5c695fd0717311d72ce62dd4eb43/src/liballoc/boxed.rs:787
  35:     0x7f99dcf48460 - std::sys_common::thread::start_thread::h7b733f0fbf8d0251
                               at src/libstd/sys_common/thread.rs:13
  36:     0x7f99dcf48460 - std::sys::unix::thread::Thread::new::thread_start::h69a20ebd2130c891
                               at src/libstd/sys/unix/thread.rs:79
  37:     0x7f99dce8775a - start_thread
  38:     0x7f99dcd9c9f3 - __clone
  39:                0x0 - <unknown>
query stack during panic:
#0 [privacy_access_levels] privacy access levels
#1 [analysis] running analysis passes on this crate
end of query stack

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.38.0-nightly (60960a260 2019-08-12) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=2 -C incremental --crate-type bin



dddb7fca0

thread 'rustc' panicked at 'internal error: entered unreachable code', src/librustc_privacy/lib.rs:767:17
stack backtrace:
   0:     0x7fe45d04600b - backtrace::backtrace::libunwind::trace::h52f24a95439ef578
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/libunwind.rs:88
   1:     0x7fe45d04600b - backtrace::backtrace::trace_unsynchronized::h95d5121d267c42e7
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/mod.rs:66
   2:     0x7fe45d04600b - std::sys_common::backtrace::_print::hb84c1e80b3c39e3b
                               at src/libstd/sys_common/backtrace.rs:47
   3:     0x7fe45d04600b - std::sys_common::backtrace::print::hf6f56322692db8bf
                               at src/libstd/sys_common/backtrace.rs:36
   4:     0x7fe45d04600b - std::panicking::default_hook::{{closure}}::h19298f991e34e518
                               at src/libstd/panicking.rs:200
   5:     0x7fe45d045ce6 - std::panicking::default_hook::h24d4b216d9b958a7
                               at src/libstd/panicking.rs:214
   6:     0x7fe45ed242e1 - rustc::util::common::panic_hook::h1dd7f28a1964c2cb
   7:     0x7fe45d046866 - std::panicking::rust_panic_with_hook::hec63884fa234b28d
                               at src/libstd/panicking.rs:481
   8:     0x7fe45da20d45 - std::panicking::begin_panic::h57aa041734b11738
   9:     0x7fe45da4e1b0 - <rustc_privacy::EmbargoVisitor as rustc::hir::intravisit::Visitor>::visit_macro_def::hc1da9eff917bcabe
  10:     0x7fe45da53229 - rustc_privacy::privacy_access_levels::h783d64b1d818203b
  11:     0x7fe45d6b5f95 - rustc::ty::query::__query_compute::privacy_access_levels::hd8b8fec48aa4f30a
  12:     0x7fe45d6ba6ec - rustc::dep_graph::graph::DepGraph::with_task_impl::ha23193b852ec19e8
  13:     0x7fe45d68f787 - rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query::h062ebe411627cf5a
  14:     0x7fe45d6637be - rustc::util::common::time::hce9d9246aef66790
  15:     0x7fe45d5bbb1b - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h89d28534075d9ced
  16:     0x7fe45d0570fa - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:80
  17:     0x7fe45d667ab2 - rustc_interface::passes::analysis::{{closure}}::h984f4e19f4d1fe61
  18:     0x7fe45d661330 - rustc::util::common::time::h0a2f2eb1d7acc77d
  19:     0x7fe45d60d484 - rustc_interface::passes::analysis::h33ebf750c675f89b
  20:     0x7fe45d4f68e1 - rustc::ty::query::__query_compute::analysis::h63934db633e843ec
  21:     0x7fe45d4f8399 - rustc::dep_graph::graph::DepGraph::with_task_impl::ha5757adb20b9ea3b
  22:     0x7fe45d505e0e - rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query::h2d5f2f2a098a1b29
  23:     0x7fe45d51808a - rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}::hb6313b20433cdbc4
  24:     0x7fe45d66696a - rustc_interface::passes::create_global_ctxt::{{closure}}::hccd7c77555c50c54
  25:     0x7fe45d519434 - rustc_interface::interface::run_compiler_in_existing_thread_pool::h02ba1ec2154be072
  26:     0x7fe45d552152 - std::thread::local::LocalKey<T>::with::he42ca5b61e1e7359
  27:     0x7fe45d5682c0 - syntax::with_globals::h287fa2caf2b24706
  28:     0x7fe45d4ebe22 - std::sys_common::backtrace::__rust_begin_short_backtrace::h113d82c9ba2144b4
  29:     0x7fe45d0570fa - __rust_maybe_catch_panic
                               at src/libpanic_unwind/lib.rs:80
  30:     0x7fe45d51b939 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hcddb7194ffd10ee0
  31:     0x7fe45d029d8f - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h82a57145aa4239a7
                               at /rustc/dddb7fca09dc817ba275602b950bb81a9032fb6d/src/liballoc/boxed.rs:770
  32:     0x7fe45d055d80 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h167c1ef971e93086
                               at /rustc/dddb7fca09dc817ba275602b950bb81a9032fb6d/src/liballoc/boxed.rs:770
  33:     0x7fe45d055d80 - std::sys_common::thread::start_thread::h739b9b99c7f25b24
                               at src/libstd/sys_common/thread.rs:13
  34:     0x7fe45d055d80 - std::sys::unix::thread::Thread::new::thread_start::h79a2f27ba62f96ae
                               at src/libstd/sys/unix/thread.rs:79
  35:     0x7fe45cf9575a - start_thread
  36:     0x7fe45ceaa9f3 - __clone
  37:                0x0 - <unknown>
query stack during panic:
#0 [privacy_access_levels] privacy access levels
#1 [analysis] running analysis passes on this crate
end of query stack

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.38.0-nightly (dddb7fca0 2019-07-30) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=2 -C incremental --crate-type bin


@rustbot modify labels: -E-needs-mcve

What is the appropriate visibility scope for macro ABC? get_module is failing because we get the following instead:

Item(Item {
    ident: moo#0,
    hir_id: HirId {
        owner: DefIndex(12),
        local_id: 0
    },
    attrs: [],
    node: Fn(
        FnDecl { inputs: [], output: DefaultReturn(file7.rs:3:14: 3:14), c_variadic: false, implicit_self: None },
        FnHeader { unsafety: Normal, constness: NotConst, asyncness: NotAsync, abi: Rust },
        Generics { params: [], where_clause: WhereClause { predicates: [], span: file7.rs:3:12: 3:13 }, span: file7.rs:3:11: 3:11 },
        BodyId { hir_id: HirId { owner: DefIndex(12), local_id: 2 } }
    ),
    vis: Spanned { node: Public, span: file7.rs:3:1: 3:4 },
    span: file7.rs:3:1: 5:2
})

In my mind the expected semantics of this could would be to scope ABC to inside moo, but currently with a macro by example it would be scoped to the current module.

I can implement either semantic. @petrochenkov?


Edit: I'm talking out of my ass, the scoping rules of macro_rules! inside of methods matches my intuition. Don't know why I thought otherwise.

Was this page helpful?
0 / 5 - 0 ratings