2023-02-11 03:08:36 +00:00
|
|
|
#![allow(clippy::extra_unused_type_parameters)]
|
|
|
|
|
Resolve wildcard_imports pedantic clippy lint
error: usage of wildcard import
--> tests/marker.rs:3:5
|
3 | use proc_macro2::*;
| ^^^^^^^^^^^^^^ help: try: `proc_macro2::{Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree}`
|
= note: `-D clippy::wildcard-imports` implied by `-D clippy::pedantic`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
error: usage of wildcard import
--> tests/marker.rs:65:9
|
65 | use super::*;
| ^^^^^^^^ help: try: `super::{Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree}`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
2021-09-30 05:04:11 +00:00
|
|
|
use proc_macro2::{
|
|
|
|
Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree,
|
|
|
|
};
|
2018-11-11 22:25:53 +00:00
|
|
|
|
|
|
|
macro_rules! assert_impl {
|
|
|
|
($ty:ident is $($marker:ident) and +) => {
|
|
|
|
#[test]
|
|
|
|
#[allow(non_snake_case)]
|
|
|
|
fn $ty() {
|
|
|
|
fn assert_implemented<T: $($marker +)+>() {}
|
|
|
|
assert_implemented::<$ty>();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2020-09-09 19:30:22 +00:00
|
|
|
($ty:ident is not $($marker:ident) or +) => {
|
2018-11-11 22:25:53 +00:00
|
|
|
#[test]
|
|
|
|
#[allow(non_snake_case)]
|
|
|
|
fn $ty() {
|
|
|
|
$(
|
|
|
|
{
|
|
|
|
// Implemented for types that implement $marker.
|
|
|
|
trait IsNotImplemented {
|
|
|
|
fn assert_not_implemented() {}
|
|
|
|
}
|
|
|
|
impl<T: $marker> IsNotImplemented for T {}
|
|
|
|
|
|
|
|
// Implemented for the type being tested.
|
|
|
|
trait IsImplemented {
|
|
|
|
fn assert_not_implemented() {}
|
|
|
|
}
|
|
|
|
impl IsImplemented for $ty {}
|
|
|
|
|
|
|
|
// If $ty does not implement $marker, there is no ambiguity
|
|
|
|
// in the following trait method call.
|
|
|
|
<$ty>::assert_not_implemented();
|
|
|
|
}
|
|
|
|
)+
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2020-09-09 19:30:22 +00:00
|
|
|
assert_impl!(Delimiter is Send and Sync);
|
|
|
|
assert_impl!(Spacing is Send and Sync);
|
2018-11-11 22:25:53 +00:00
|
|
|
|
2020-09-09 19:30:22 +00:00
|
|
|
assert_impl!(Group is not Send or Sync);
|
|
|
|
assert_impl!(Ident is not Send or Sync);
|
|
|
|
assert_impl!(LexError is not Send or Sync);
|
|
|
|
assert_impl!(Literal is not Send or Sync);
|
|
|
|
assert_impl!(Punct is not Send or Sync);
|
|
|
|
assert_impl!(Span is not Send or Sync);
|
|
|
|
assert_impl!(TokenStream is not Send or Sync);
|
|
|
|
assert_impl!(TokenTree is not Send or Sync);
|
2018-11-11 22:25:53 +00:00
|
|
|
|
|
|
|
#[cfg(procmacro2_semver_exempt)]
|
|
|
|
mod semver_exempt {
|
2021-09-30 05:15:45 +00:00
|
|
|
use proc_macro2::{LineColumn, SourceFile};
|
2018-11-11 22:25:53 +00:00
|
|
|
|
2020-09-09 19:30:22 +00:00
|
|
|
assert_impl!(LineColumn is Send and Sync);
|
|
|
|
|
|
|
|
assert_impl!(SourceFile is not Send or Sync);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(not(no_libprocmacro_unwind_safe))]
|
|
|
|
mod unwind_safe {
|
Resolve wildcard_imports pedantic clippy lint
error: usage of wildcard import
--> tests/marker.rs:3:5
|
3 | use proc_macro2::*;
| ^^^^^^^^^^^^^^ help: try: `proc_macro2::{Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree}`
|
= note: `-D clippy::wildcard-imports` implied by `-D clippy::pedantic`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
error: usage of wildcard import
--> tests/marker.rs:65:9
|
65 | use super::*;
| ^^^^^^^^ help: try: `super::{Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree}`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wildcard_imports
2021-09-30 05:04:11 +00:00
|
|
|
use proc_macro2::{
|
|
|
|
Delimiter, Group, Ident, LexError, Literal, Punct, Spacing, Span, TokenStream, TokenTree,
|
|
|
|
};
|
2021-09-30 05:15:45 +00:00
|
|
|
#[cfg(procmacro2_semver_exempt)]
|
|
|
|
use proc_macro2::{LineColumn, SourceFile};
|
2020-09-09 19:30:22 +00:00
|
|
|
use std::panic::{RefUnwindSafe, UnwindSafe};
|
|
|
|
|
|
|
|
macro_rules! assert_unwind_safe {
|
|
|
|
($($types:ident)*) => {
|
|
|
|
$(
|
|
|
|
assert_impl!($types is UnwindSafe and RefUnwindSafe);
|
|
|
|
)*
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
assert_unwind_safe! {
|
|
|
|
Delimiter
|
|
|
|
Group
|
|
|
|
Ident
|
|
|
|
LexError
|
|
|
|
Literal
|
|
|
|
Punct
|
|
|
|
Spacing
|
|
|
|
Span
|
|
|
|
TokenStream
|
|
|
|
TokenTree
|
|
|
|
}
|
2018-11-11 22:25:53 +00:00
|
|
|
|
2020-09-09 19:30:22 +00:00
|
|
|
#[cfg(procmacro2_semver_exempt)]
|
|
|
|
assert_unwind_safe! {
|
|
|
|
LineColumn
|
|
|
|
SourceFile
|
|
|
|
}
|
2018-11-11 22:25:53 +00:00
|
|
|
}
|