//@aux-build:../../ui/auxiliary/proc_macros.rs //@revisions: default allow_crates allow_long no_short //@[default] rustc-env:CLIPPY_CONF_DIR=tests/ui-toml/absolute_paths/default //@[allow_crates] rustc-env:CLIPPY_CONF_DIR=tests/ui-toml/absolute_paths/allow_crates //@[allow_long] rustc-env:CLIPPY_CONF_DIR=tests/ui-toml/absolute_paths/allow_long //@[no_short] rustc-env:CLIPPY_CONF_DIR=tests/ui-toml/absolute_paths/no_short #![deny(clippy::absolute_paths)] extern crate proc_macros; use proc_macros::{external, inline_macros, with_span}; #[inline_macros] fn main() { let _ = std::path::is_separator(' '); //~[default]^ absolute_paths //~[allow_crates]| absolute_paths //~[no_short]| absolute_paths // Make sure this is treated as having three path segments, not four. let _ = ::std::path::MAIN_SEPARATOR; //~[default]^ absolute_paths //~[allow_crates]| absolute_paths //~[no_short]| absolute_paths let _ = std::collections::hash_map::HashMap::::new(); //~ absolute_paths // Note `std::path::Path::new` is treated as having three parts let _: &std::path::Path = std::path::Path::new(""); //~[default]^ absolute_paths //~[default]| absolute_paths //~[allow_crates]| absolute_paths //~[allow_crates]| absolute_paths //~[no_short]| absolute_paths //~[no_short]| absolute_paths // Treated as having three parts. let _ = ::core::clone::Clone::clone(&0i32); //~[default]^ absolute_paths //~[no_short]| absolute_paths let _ = ::clone(&0i32); //~[default]^ absolute_paths //~[no_short]| absolute_paths let _ = std::option::Option::None::; //~[default]^ absolute_paths //~[allow_crates]| absolute_paths //~[no_short]| absolute_paths { // FIXME: macro calls should be checked. let x = 1i32; let _ = core::ptr::addr_of!(x); } { // FIXME: derive macro paths should be checked. #[derive(core::clone::Clone)] struct S; } { use core::fmt; use core::marker::PhantomData; struct X(PhantomData); impl core::fmt::Display for X //~[default]^ absolute_paths //~[default]| absolute_paths //~[no_short]| absolute_paths //~[no_short]| absolute_paths where T: core::clone::Clone //~[no_short]^ absolute_paths //~[default]| absolute_paths { fn fmt(&self, _: &mut fmt::Formatter) -> fmt::Result { Ok(()) } } } { mod m1 { pub(crate) mod m2 { pub(crate) const FOO: i32 = 0; } } let _ = m1::m2::FOO; } with_span! { span let _ = std::path::is_separator(' '); } external! { let _ = std::path::is_separator(' '); } inline! { let _ = std::path::is_separator(' '); } } pub use core::cmp::Ordering; pub use std::fs::File; #[derive(Clone)] pub struct S; mod m1 { pub use crate::S; } //~[no_short]v absolute_paths pub const _: crate::S = { let crate::S = m1::S; //~[no_short] absolute_paths crate::m1::S //~[default]^ absolute_paths //~[no_short]| absolute_paths }; pub fn f() { let _ = ::clone(&m1::S); //~[no_short] absolute_paths }