Open
Description
The macro reference should explain how #[cfg]
and #[cfg_attr(...)]
behave inside macros.
Does this macro check the allow_clippy
flag of the crate the macro is defined in, or of the crate the macro is used in?
macro_rules! field_check {
($type:path, $field:tt) => {
// Make sure the field actually exists. This line ensures that a
// compile-time error is generated if $field is accessed through a
// Deref impl.
#[cfg_attr(allow_clippy, allow(clippy::unneeded_field_pattern))]
let $type { $field: _, .. };
};
}
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
ehuss commentedon Jun 22, 2020
I assume you are interested in more than just allow/deny diagnostic behavior. I mention that because I believe (some?) diagnostics have special behavior in external macros where they are disabled. The reference has historically shied away from documenting diagnostics, so that particular behavior is a bit of a gray area, but probably should be mentioned.
There are a few other behaviors of
cfg
/cfg_attr
that I'd like to see documented (#565, #103). In particular, I think the order of transformations ("phases of translation" in C++ parlance) would be useful to specify to make it clear whencfg
processing is done in relation to other phases.RalfJung commentedon Jun 22, 2020
Yes, I wonder about
cfg
in general (includingcfg!
). I didn't even know diagnostics have some special magic hacks.^^