test: add test for inner attribute followed by outer attribute causing ICE

This commit is contained in:
EliseZeroTwo 2021-10-26 11:45:15 +02:00
parent 7402eb001b
commit 7f0d43a003
No known key found for this signature in database
GPG Key ID: E6D56A6F7B7991DE
3 changed files with 46 additions and 0 deletions

View File

@ -0,0 +1,13 @@
// force-host
// no-prefer-dynamic
#![crate_type = "proc-macro"]
extern crate proc_macro;
use proc_macro::TokenStream;
#[proc_macro_derive(ICE)]
pub fn derive(_: TokenStream) -> TokenStream {
r#"#[allow(missing_docs)] struct X { }"#.parse().unwrap()
}

View File

@ -0,0 +1,15 @@
// aux-build:issue-89971-outer-attr-following-inner-attr-ice.rs
#[macro_use]
extern crate issue_89971_outer_attr_following_inner_attr_ice;
fn main() {
Mew();
X {};
}
#![deny(missing_docs)]
//~^ ERROR an inner attribute is not permitted in this context
#[derive(ICE)]
#[deny(missing_docs)]
struct Mew();

View File

@ -0,0 +1,18 @@
error: an inner attribute is not permitted in this context
--> $DIR/issue-89971-outer-attr-following-inner-attr-ice.rs:11:1
|
LL | #![deny(missing_docs)]
| ^^^^^^^^^^^^^^^^^^^^^^
...
LL | struct Mew();
| ------------- the inner attribute doesn't annotate this struct
|
= note: inner attributes, like `#![no_std]`, annotate the item enclosing them, and are usually found at the beginning of source files
help: to annotate the struct, change the attribute from inner to outer style
|
LL - #![deny(missing_docs)]
LL + #[deny(missing_docs)]
|
error: aborting due to previous error