blob: a31aed32fd4f0492780108c15eb4dd1e0e2cb9f0 [file] [log] [blame]
//@aux-build:proc_macro_attr.rs
//@compile-flags: --test --cfg dummy_cfg
#![feature(custom_inner_attributes)]
#![warn(clippy::mixed_attributes_style)]
#[macro_use]
extern crate proc_macro_attr;
#[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
}
// 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]
}
}