2024-03-14 09:06:18 +00:00
|
|
|
//@aux-build:proc_macro_attr.rs
|
|
|
|
//@compile-flags: --test --cfg dummy_cfg
|
|
|
|
#![feature(custom_inner_attributes)]
|
2024-02-26 11:25:28 +00:00
|
|
|
#![warn(clippy::mixed_attributes_style)]
|
2024-02-28 16:38:24 +00:00
|
|
|
#![allow(clippy::duplicated_attributes)]
|
2024-02-26 11:25:28 +00:00
|
|
|
|
2024-03-14 09:06:18 +00:00
|
|
|
#[macro_use]
|
|
|
|
extern crate proc_macro_attr;
|
|
|
|
|
2024-02-26 11:25:28 +00:00
|
|
|
#[allow(unused)] //~ ERROR: item has both inner and outer attributes
|
|
|
|
fn foo1() {
|
|
|
|
#![allow(unused)]
|
|
|
|
}
|
|
|
|
|
|
|
|
#[allow(unused)]
|
|
|
|
#[allow(unused)]
|
|
|
|
fn foo2() {}
|
|
|
|
|
|
|
|
fn foo3() {
|
|
|
|
#![allow(unused)]
|
|
|
|
#![allow(unused)]
|
|
|
|
}
|
|
|
|
|
|
|
|
/// linux
|
|
|
|
//~^ ERROR: item has both inner and outer attributes
|
|
|
|
fn foo4() {
|
|
|
|
//! windows
|
|
|
|
}
|
|
|
|
|
|
|
|
/// linux
|
|
|
|
/// windows
|
|
|
|
fn foo5() {}
|
|
|
|
|
|
|
|
fn foo6() {
|
|
|
|
//! linux
|
|
|
|
//! windows
|
|
|
|
}
|
|
|
|
|
|
|
|
#[allow(unused)] //~ ERROR: item has both inner and outer attributes
|
|
|
|
mod bar {
|
|
|
|
#![allow(unused)]
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
// test code goes here
|
|
|
|
}
|
2024-03-14 09:06:18 +00:00
|
|
|
|
|
|
|
// issue #12435
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
//! Module doc, don't lint
|
|
|
|
}
|
|
|
|
#[allow(unused)]
|
|
|
|
mod baz {
|
|
|
|
//! Module doc, don't lint
|
|
|
|
const FOO: u8 = 0;
|
|
|
|
}
|
|
|
|
/// Module doc, don't lint
|
|
|
|
mod quz {
|
|
|
|
#![allow(unused)]
|
|
|
|
}
|
|
|
|
|
|
|
|
mod issue_12530 {
|
|
|
|
// don't lint different attributes entirely
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
#![allow(clippy::unreadable_literal)]
|
|
|
|
|
|
|
|
#[allow(dead_code)] //~ ERROR: item has both inner and outer attributes
|
|
|
|
mod inner_mod {
|
|
|
|
#![allow(dead_code)]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#[cfg(dummy_cfg)]
|
|
|
|
mod another_mod {
|
|
|
|
#![allow(clippy::question_mark)]
|
|
|
|
}
|
|
|
|
/// Nested mod
|
|
|
|
mod nested_mod {
|
|
|
|
#[allow(dead_code)] //~ ERROR: item has both inner and outer attributes
|
|
|
|
mod inner_mod {
|
|
|
|
#![allow(dead_code)]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/// Nested mod //~ ERROR: item has both inner and outer attributes
|
|
|
|
#[allow(unused)]
|
|
|
|
mod nest_mod_2 {
|
|
|
|
#![allow(unused)]
|
|
|
|
|
|
|
|
#[allow(dead_code)] //~ ERROR: item has both inner and outer attributes
|
|
|
|
mod inner_mod {
|
|
|
|
#![allow(dead_code)]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Different path symbols - Known FN
|
|
|
|
#[dummy]
|
|
|
|
fn use_dummy() {
|
|
|
|
#![proc_macro_attr::dummy]
|
|
|
|
}
|
|
|
|
}
|