| // Copyright 2022 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| //! Tests lints that should compile. |
| //! |
| //! Tests (unit or integration) don't trigger missing_docs, so this must be a binary or library. |
| //! Binary is simpler. Alternatively, this could be part of the ui/compile-fail test fixture. |
| |
| /// Tests that basic attributes propagate, like documentation. |
| pub mod docs { |
| #![deny(missing_docs)] |
| use open_enum::open_enum; |
| |
| #[open_enum] |
| /// This struct has documentation. |
| pub enum ImportantLetters { |
| /// A is the first letter of the English alphabet. |
| A, |
| |
| /// B is for Bananaphone. |
| B, |
| } |
| } |
| |
| /// Tests that allow lints propagate through an open enum definition correctly. |
| pub mod allow_lint_propagates { |
| #![deny(missing_docs)] |
| use open_enum::open_enum; |
| |
| // Checks that local lints propagate correctly. |
| #[open_enum] |
| #[allow(missing_docs)] |
| pub enum HasLintTop { |
| A, |
| B, |
| } |
| |
| #[allow(missing_docs)] |
| #[open_enum] |
| pub enum HasLintBottom { |
| A, |
| B, |
| } |
| } |
| |
| pub mod clippy { |
| // We should pass this, as this is a newtype. |
| #![deny(clippy::exhaustive_structs)] |
| |
| #[open_enum::open_enum] |
| pub enum Foo { |
| Bar, |
| Baz, |
| } |
| } |
| |
| pub mod nonliteral { |
| #![deny(dead_code)] |
| |
| #[open_enum::open_enum] |
| #[derive(PartialEq, Eq)] // for some reason this has to be here to get a dead_code lint to trigger |
| #[repr(u32)] |
| pub enum Fuzz { |
| Balls = 1 << 1, |
| } |
| } |
| |
| fn main() {} |