Rollup merge of #125734 - petrochenkov:macinattr, r=wesleywiser
ast: Revert a breaking attribute visiting order change Fixes https://github.com/rust-lang/rust/issues/124535 Fixes https://github.com/rust-lang/rust/issues/125201
This commit is contained in:
commit
fdfffc0048
@ -852,10 +852,10 @@ pub fn walk_assoc_item<'a, V: Visitor<'a>>(
|
|||||||
ctxt: AssocCtxt,
|
ctxt: AssocCtxt,
|
||||||
) -> V::Result {
|
) -> V::Result {
|
||||||
let &Item { id: _, span: _, ident, ref vis, ref attrs, ref kind, tokens: _ } = item;
|
let &Item { id: _, span: _, ident, ref vis, ref attrs, ref kind, tokens: _ } = item;
|
||||||
walk_list!(visitor, visit_attribute, attrs);
|
|
||||||
try_visit!(visitor.visit_vis(vis));
|
try_visit!(visitor.visit_vis(vis));
|
||||||
try_visit!(visitor.visit_ident(ident));
|
try_visit!(visitor.visit_ident(ident));
|
||||||
try_visit!(kind.walk(item, ctxt, visitor));
|
try_visit!(kind.walk(item, ctxt, visitor));
|
||||||
|
walk_list!(visitor, visit_attribute, attrs);
|
||||||
V::Result::output()
|
V::Result::output()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,35 +1,11 @@
|
|||||||
error: using tabs in doc comments is not recommended
|
|
||||||
--> tests/ui/tabs_in_doc_comments.rs:6:5
|
|
||||||
|
|
|
||||||
LL | /// - first one
|
|
||||||
| ^^^^ help: consider using four spaces per tab
|
|
||||||
|
|
|
||||||
= note: `-D clippy::tabs-in-doc-comments` implied by `-D warnings`
|
|
||||||
= help: to override `-D warnings` add `#[allow(clippy::tabs_in_doc_comments)]`
|
|
||||||
|
|
||||||
error: using tabs in doc comments is not recommended
|
|
||||||
--> tests/ui/tabs_in_doc_comments.rs:6:13
|
|
||||||
|
|
|
||||||
LL | /// - first one
|
|
||||||
| ^^^^^^^^ help: consider using four spaces per tab
|
|
||||||
|
|
||||||
error: using tabs in doc comments is not recommended
|
|
||||||
--> tests/ui/tabs_in_doc_comments.rs:7:5
|
|
||||||
|
|
|
||||||
LL | /// - second one
|
|
||||||
| ^^^^ help: consider using four spaces per tab
|
|
||||||
|
|
||||||
error: using tabs in doc comments is not recommended
|
|
||||||
--> tests/ui/tabs_in_doc_comments.rs:7:14
|
|
||||||
|
|
|
||||||
LL | /// - second one
|
|
||||||
| ^^^^ help: consider using four spaces per tab
|
|
||||||
|
|
||||||
error: using tabs in doc comments is not recommended
|
error: using tabs in doc comments is not recommended
|
||||||
--> tests/ui/tabs_in_doc_comments.rs:10:9
|
--> tests/ui/tabs_in_doc_comments.rs:10:9
|
||||||
|
|
|
|
||||||
LL | /// - First String:
|
LL | /// - First String:
|
||||||
| ^^^^ help: consider using four spaces per tab
|
| ^^^^ help: consider using four spaces per tab
|
||||||
|
|
|
||||||
|
= note: `-D clippy::tabs-in-doc-comments` implied by `-D warnings`
|
||||||
|
= help: to override `-D warnings` add `#[allow(clippy::tabs_in_doc_comments)]`
|
||||||
|
|
||||||
error: using tabs in doc comments is not recommended
|
error: using tabs in doc comments is not recommended
|
||||||
--> tests/ui/tabs_in_doc_comments.rs:11:9
|
--> tests/ui/tabs_in_doc_comments.rs:11:9
|
||||||
@ -49,5 +25,29 @@ error: using tabs in doc comments is not recommended
|
|||||||
LL | /// - needs to be inside here
|
LL | /// - needs to be inside here
|
||||||
| ^^^^^^^^ help: consider using four spaces per tab
|
| ^^^^^^^^ help: consider using four spaces per tab
|
||||||
|
|
||||||
|
error: using tabs in doc comments is not recommended
|
||||||
|
--> tests/ui/tabs_in_doc_comments.rs:6:5
|
||||||
|
|
|
||||||
|
LL | /// - first one
|
||||||
|
| ^^^^ help: consider using four spaces per tab
|
||||||
|
|
||||||
|
error: using tabs in doc comments is not recommended
|
||||||
|
--> tests/ui/tabs_in_doc_comments.rs:6:13
|
||||||
|
|
|
||||||
|
LL | /// - first one
|
||||||
|
| ^^^^^^^^ help: consider using four spaces per tab
|
||||||
|
|
||||||
|
error: using tabs in doc comments is not recommended
|
||||||
|
--> tests/ui/tabs_in_doc_comments.rs:7:5
|
||||||
|
|
|
||||||
|
LL | /// - second one
|
||||||
|
| ^^^^ help: consider using four spaces per tab
|
||||||
|
|
||||||
|
error: using tabs in doc comments is not recommended
|
||||||
|
--> tests/ui/tabs_in_doc_comments.rs:7:14
|
||||||
|
|
|
||||||
|
LL | /// - second one
|
||||||
|
| ^^^^ help: consider using four spaces per tab
|
||||||
|
|
||||||
error: aborting due to 8 previous errors
|
error: aborting due to 8 previous errors
|
||||||
|
|
||||||
|
64
tests/ui/attributes/key-value-expansion-scope.rs
Normal file
64
tests/ui/attributes/key-value-expansion-scope.rs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#![doc = in_root!()] // FIXME, this is a bug
|
||||||
|
#![doc = in_mod!()] //~ ERROR cannot find macro `in_mod` in this scope
|
||||||
|
#![doc = in_mod_escape!()] // FIXME, this is a bug
|
||||||
|
#![doc = in_block!()] //~ ERROR cannot find macro `in_block` in this scope
|
||||||
|
|
||||||
|
#[doc = in_root!()] //~ ERROR cannot find macro `in_root` in this scope
|
||||||
|
#[doc = in_mod!()] //~ ERROR cannot find macro `in_mod` in this scope
|
||||||
|
#[doc = in_mod_escape!()] //~ ERROR cannot find macro `in_mod_escape` in this scope
|
||||||
|
#[doc = in_block!()] //~ ERROR cannot find macro `in_block` in this scope
|
||||||
|
fn before() {
|
||||||
|
#![doc = in_root!()] //~ ERROR cannot find macro `in_root` in this scope
|
||||||
|
#![doc = in_mod!()] //~ ERROR cannot find macro `in_mod` in this scope
|
||||||
|
#![doc = in_mod_escape!()] //~ ERROR cannot find macro `in_mod_escape` in this scope
|
||||||
|
#![doc = in_block!()] //~ ERROR cannot find macro `in_block` in this scope
|
||||||
|
}
|
||||||
|
|
||||||
|
macro_rules! in_root { () => { "" } }
|
||||||
|
|
||||||
|
mod macros_stay {
|
||||||
|
#![doc = in_mod!()] // FIXME, this is a bug
|
||||||
|
|
||||||
|
macro_rules! in_mod { () => { "" } }
|
||||||
|
|
||||||
|
#[doc = in_mod!()] // OK
|
||||||
|
fn f() {
|
||||||
|
#![doc = in_mod!()] // OK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macro_use]
|
||||||
|
mod macros_escape {
|
||||||
|
#![doc = in_mod_escape!()] // FIXME, this is a bug
|
||||||
|
|
||||||
|
macro_rules! in_mod_escape { () => { "" } }
|
||||||
|
|
||||||
|
#[doc = in_mod_escape!()] // OK
|
||||||
|
fn f() {
|
||||||
|
#![doc = in_mod_escape!()] // OK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn block() {
|
||||||
|
#![doc = in_block!()] //~ ERROR cannot find macro `in_block` in this scope
|
||||||
|
|
||||||
|
macro_rules! in_block { () => { "" } }
|
||||||
|
|
||||||
|
#[doc = in_block!()] // OK
|
||||||
|
fn f() {
|
||||||
|
#![doc = in_block!()] // OK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[doc = in_root!()] // OK
|
||||||
|
#[doc = in_mod!()] //~ ERROR cannot find macro `in_mod` in this scope
|
||||||
|
#[doc = in_mod_escape!()] // OK
|
||||||
|
#[doc = in_block!()] //~ ERROR cannot find macro `in_block` in this scope
|
||||||
|
fn after() {
|
||||||
|
#![doc = in_root!()] // OK
|
||||||
|
#![doc = in_mod!()] //~ ERROR cannot find macro `in_mod` in this scope
|
||||||
|
#![doc = in_mod_escape!()] // OK
|
||||||
|
#![doc = in_block!()] //~ ERROR cannot find macro `in_block` in this scope
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
122
tests/ui/attributes/key-value-expansion-scope.stderr
Normal file
122
tests/ui/attributes/key-value-expansion-scope.stderr
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
error: cannot find macro `in_mod` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:2:10
|
||||||
|
|
|
||||||
|
LL | #![doc = in_mod!()]
|
||||||
|
| ^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_block` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:4:10
|
||||||
|
|
|
||||||
|
LL | #![doc = in_block!()]
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_root` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:6:9
|
||||||
|
|
|
||||||
|
LL | #[doc = in_root!()]
|
||||||
|
| ^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_mod` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:7:9
|
||||||
|
|
|
||||||
|
LL | #[doc = in_mod!()]
|
||||||
|
| ^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_mod_escape` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:8:9
|
||||||
|
|
|
||||||
|
LL | #[doc = in_mod_escape!()]
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_block` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:9:9
|
||||||
|
|
|
||||||
|
LL | #[doc = in_block!()]
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_root` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:11:14
|
||||||
|
|
|
||||||
|
LL | #![doc = in_root!()]
|
||||||
|
| ^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_mod` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:12:14
|
||||||
|
|
|
||||||
|
LL | #![doc = in_mod!()]
|
||||||
|
| ^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_mod_escape` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:13:14
|
||||||
|
|
|
||||||
|
LL | #![doc = in_mod_escape!()]
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_block` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:14:14
|
||||||
|
|
|
||||||
|
LL | #![doc = in_block!()]
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_block` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:43:14
|
||||||
|
|
|
||||||
|
LL | #![doc = in_block!()]
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_mod` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:54:9
|
||||||
|
|
|
||||||
|
LL | #[doc = in_mod!()]
|
||||||
|
| ^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_block` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:56:9
|
||||||
|
|
|
||||||
|
LL | #[doc = in_block!()]
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_mod` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:59:14
|
||||||
|
|
|
||||||
|
LL | #![doc = in_mod!()]
|
||||||
|
| ^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: cannot find macro `in_block` in this scope
|
||||||
|
--> $DIR/key-value-expansion-scope.rs:61:14
|
||||||
|
|
|
||||||
|
LL | #![doc = in_block!()]
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= help: have you added the `#[macro_use]` on the module/import?
|
||||||
|
|
||||||
|
error: aborting due to 15 previous errors
|
||||||
|
|
@ -1,13 +1,3 @@
|
|||||||
error[E0658]: the `#[optimize]` attribute is an experimental feature
|
|
||||||
--> $DIR/feature-gate-optimize_attribute.rs:4:1
|
|
||||||
|
|
|
||||||
LL | #[optimize(size)]
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: see issue #54882 <https://github.com/rust-lang/rust/issues/54882> for more information
|
|
||||||
= help: add `#![feature(optimize_attribute)]` to the crate attributes to enable
|
|
||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
||||||
|
|
||||||
error[E0658]: the `#[optimize]` attribute is an experimental feature
|
error[E0658]: the `#[optimize]` attribute is an experimental feature
|
||||||
--> $DIR/feature-gate-optimize_attribute.rs:7:1
|
--> $DIR/feature-gate-optimize_attribute.rs:7:1
|
||||||
|
|
|
|
||||||
@ -38,6 +28,16 @@ LL | #[optimize(banana)]
|
|||||||
= help: add `#![feature(optimize_attribute)]` to the crate attributes to enable
|
= help: add `#![feature(optimize_attribute)]` to the crate attributes to enable
|
||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
|
error[E0658]: the `#[optimize]` attribute is an experimental feature
|
||||||
|
--> $DIR/feature-gate-optimize_attribute.rs:4:1
|
||||||
|
|
|
||||||
|
LL | #[optimize(size)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #54882 <https://github.com/rust-lang/rust/issues/54882> for more information
|
||||||
|
= help: add `#![feature(optimize_attribute)]` to the crate attributes to enable
|
||||||
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0658]: the `#[optimize]` attribute is an experimental feature
|
error[E0658]: the `#[optimize]` attribute is an experimental feature
|
||||||
--> $DIR/feature-gate-optimize_attribute.rs:2:1
|
--> $DIR/feature-gate-optimize_attribute.rs:2:1
|
||||||
|
|
|
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
error[E0734]: stability attributes may not be used outside of the standard library
|
|
||||||
--> $DIR/issue-43106-gating-of-stable.rs:10:1
|
|
||||||
|
|
|
||||||
LL | #[stable()]
|
|
||||||
| ^^^^^^^^^^^
|
|
||||||
|
|
||||||
error[E0734]: stability attributes may not be used outside of the standard library
|
error[E0734]: stability attributes may not be used outside of the standard library
|
||||||
--> $DIR/issue-43106-gating-of-stable.rs:14:9
|
--> $DIR/issue-43106-gating-of-stable.rs:14:9
|
||||||
|
|
|
|
||||||
@ -34,6 +28,12 @@ error[E0734]: stability attributes may not be used outside of the standard libra
|
|||||||
LL | #[stable()]
|
LL | #[stable()]
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0734]: stability attributes may not be used outside of the standard library
|
||||||
|
--> $DIR/issue-43106-gating-of-stable.rs:10:1
|
||||||
|
|
|
||||||
|
LL | #[stable()]
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0734]: stability attributes may not be used outside of the standard library
|
error[E0734]: stability attributes may not be used outside of the standard library
|
||||||
--> $DIR/issue-43106-gating-of-stable.rs:7:1
|
--> $DIR/issue-43106-gating-of-stable.rs:7:1
|
||||||
|
|
|
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
error[E0734]: stability attributes may not be used outside of the standard library
|
|
||||||
--> $DIR/issue-43106-gating-of-unstable.rs:10:1
|
|
||||||
|
|
|
||||||
LL | #[unstable()]
|
|
||||||
| ^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
error[E0734]: stability attributes may not be used outside of the standard library
|
error[E0734]: stability attributes may not be used outside of the standard library
|
||||||
--> $DIR/issue-43106-gating-of-unstable.rs:14:9
|
--> $DIR/issue-43106-gating-of-unstable.rs:14:9
|
||||||
|
|
|
|
||||||
@ -34,6 +28,12 @@ error[E0734]: stability attributes may not be used outside of the standard libra
|
|||||||
LL | #[unstable()]
|
LL | #[unstable()]
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0734]: stability attributes may not be used outside of the standard library
|
||||||
|
--> $DIR/issue-43106-gating-of-unstable.rs:10:1
|
||||||
|
|
|
||||||
|
LL | #[unstable()]
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0734]: stability attributes may not be used outside of the standard library
|
error[E0734]: stability attributes may not be used outside of the standard library
|
||||||
--> $DIR/issue-43106-gating-of-unstable.rs:7:1
|
--> $DIR/issue-43106-gating-of-unstable.rs:7:1
|
||||||
|
|
|
|
||||||
|
Loading…
Reference in New Issue
Block a user