decl_macro incremental compilation bug: missing field · Issue #112680 · rust-lang/rust (original) (raw)
Note: This may be a duplicate, but I couldn't find one, so I'm going ahead and reporting it.
When using decl_macro
, I'm encountering a strange incremental compilation bug. I have a struct, declared as follows:
use a::entity_impl;
entity_impl!(TestId, Test); // entity_impl! is the decl_macro
struct Test(u32); // now uncomment the following, and comment the above // struct Test;
To reproduce this, do the following:
- Run
cargo clean
, thencargo check
. - Comment line 3, and uncomment line 5.
- Run
cargo check
again. The error below is emitted. - If
cargo clean && cargo check
is run again with either version, it compiles fine.
I don't understand why this would happen, but I do have the code, all of which can be found in this repository. a/src/lib.rs
has the entity_impl
macros 2.0 macro, while b/src/lib.rs
has the struct & macro invocation shown above. I've minimized the example as best I can, but a normal (non-decl_macro
) does not work, and I can't seem to reproduce in a single crate. If there's anything else needed, or anything I should try, please let me know.
Error message:
error[E0609]: no field `inner` on type `TestId`
--> b/src/lib.rs:2:1
|
2 | entity_impl!(TestId, Test);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a field with a similar name exists: `inner`
|
= note: this error originates in the macro `entity_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
For more information about this error, try `rustc --explain E0609`.
error: could not compile `b` (lib) due to previous error
Meta
rustc --version --verbose
:
rustc 1.72.0-nightly (8c74a5d27 2023-06-14)
binary: rustc
commit-hash: 8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220
commit-date: 2023-06-14
host: x86_64-unknown-linux-gnu // also reproduces on x86_64-pc-windows-msvc
release: 1.72.0-nightly
LLVM version: 16.0.5
@rustbot label +A-incr-comp +A-macros-2.0
(I'm just guessing on these labels.)