1 #![forbid(unsafe_code)]
2 #![warn(nonstandard_style, rust_2018_idioms, rustdoc, unused)]
3 // Note: This does not guarantee compatibility with forbidding these lints in the future.
4 // If rustc adds a new lint, we may not be able to keep this.
5 #![forbid(future_incompatible, rust_2018_compatibility)]
6 #![allow(unknown_lints)] // for old compilers
10 disjoint_capture_drop_reorder
,
11 elided_lifetimes_in_paths
,
12 explicit_outlives_requirements
,
13 macro_use_extern_crate
,
16 missing_copy_implementations
,
17 missing_crate_level_docs
,
18 missing_debug_implementations
,
23 trivial_numeric_casts
,
29 unused_qualifications
,
31 variant_size_differences
33 // absolute_paths_not_starting_with_crate, anonymous_parameters, keyword_idents, pointer_structural_match, semicolon_in_expressions_from_macros: forbidden as a part of future_incompatible
34 // missing_doc_code_examples, private_doc_tests, invalid_html_tags: warned as a part of rustdoc
35 // unsafe_block_in_unsafe_fn: unstable
36 // unsafe_code: forbidden
37 // unstable_features: deprecated: https://doc.rust-lang.org/beta/rustc/lints/listing/allowed-by-default.html#unstable-features
38 // unused_crate_dependencies: unrelated
39 #![warn(clippy::all, clippy::pedantic, clippy::nursery)]
40 #![warn(clippy::restriction)]
41 #![allow(clippy::blanket_clippy_restriction_lints)] // this is a test, so enable all restriction lints intentionally.
42 #![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)] // TODO
44 // Check interoperability with rustc and clippy lints.
47 include
!("include/basic.rs");
50 pub mod box_pointers
{
51 use pin_project_lite
::pin_project
;
64 #[project_ref = EnumProjRef]
77 pub mod explicit_outlives_requirements
{
78 use pin_project_lite
::pin_project
;
82 pub struct Struct
<'a
, T
, U
>
88 pub pinned
: &'a
mut T
,
89 pub unpinned
: &'a
mut U
,
95 #[project_ref = EnumProjRef]
97 pub enum Enum
<'a
, T
, U
>
112 pub mod variant_size_differences
{
113 use pin_project_lite
::pin_project
;
116 #[project = EnumProj]
117 #[project_ref = EnumProjRef]
118 #[allow(missing_debug_implementations, missing_copy_implementations)] // https://github.com/rust-lang/rust/pull/74060
119 #[allow(variant_size_differences)] // for the type itself
120 #[allow(clippy::large_enum_variant)] // for the type itself
123 V2 { f: [u8; 1024] }
,
128 pub mod clippy_mut_mut
{
129 use pin_project_lite
::pin_project
;
133 pub struct Struct
<'a
, T
, U
> {
135 pub pinned
: &'a
mut T
,
136 pub unpinned
: &'a
mut U
,
141 #[project = EnumProj]
142 #[project_ref = EnumProjRef]
144 pub enum Enum
<'a
, T
, U
> {
155 #[allow(unreachable_pub)]
156 mod clippy_redundant_pub_crate
{
157 use pin_project_lite
::pin_project
;
161 pub struct Struct
<T
, U
> {
170 #[project = EnumProj]
171 #[project_ref = EnumProjRef]
173 pub enum Enum
<T
, U
> {
184 pub mod clippy_type_repetition_in_bounds
{
185 use pin_project_lite
::pin_project
;
189 pub struct Struct
<T
, U
>
200 #[project = EnumProj]
201 #[project_ref = EnumProjRef]
217 pub mod clippy_used_underscore_binding
{
218 use pin_project_lite
::pin_project
;
222 pub struct Struct
<T
, U
> {
230 #[project = EnumProj]
231 #[project_ref = EnumProjRef]
233 pub enum Enum
<T
, U
> {
243 pub mod clippy_ref_option_ref
{
244 use pin_project_lite
::pin_project
;
247 pub struct Struct
<'a
> {
249 pub _pinned
: Option
<&'
a ()>,
250 pub _unpinned
: Option
<&'
a ()>,
255 #[project = EnumProj]
256 #[project_ref = EnumProjRef]
260 _pinned
: Option
<&'
a ()>,
261 _unpinned
: Option
<&'
a ()>,