1 // Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 //! Some lints that are built in to the compiler.
13 //! These are the built-in lints that are emitted direct in the main
14 //! compiler code, rather than using their own custom pass. Those
15 //! lints are all available in `rustc_lint::builtin`.
17 use lint
::{LintPass, LateLintPass, LintArray}
;
22 "constant evaluation detected erroneous expression"
28 "imports that are never used"
32 pub UNUSED_EXTERN_CRATES
,
34 "extern crates that are never used"
38 pub UNUSED_QUALIFICATIONS
,
40 "detects unnecessarily qualified names"
46 "unrecognized lint attribute"
52 "detect variables which are not used in any way"
56 pub UNUSED_ASSIGNMENTS
,
58 "detect assignments that will never be read"
64 "detect unused, unexported items"
70 "detects unreachable code paths"
74 pub UNREACHABLE_PATTERNS
,
76 "detects unreachable patterns"
82 "detects macros that were not used"
88 "mass-change the level for lints which produce warnings"
94 "unused or unknown features found in crate-level #[feature] directives"
100 "stable features found in #[feature] directive"
104 pub UNKNOWN_CRATE_TYPES
,
106 "unknown crate type found in #[crate_type] directive"
110 pub FAT_PTR_TRANSMUTES
,
112 "detects transmutes of fat pointers"
118 "detects trivial casts which could be removed"
122 pub TRIVIAL_NUMERIC_CASTS
,
124 "detects trivial casts of numeric types which could be removed"
128 pub PRIVATE_IN_PUBLIC
,
130 "detect private items in public interfaces not caught by the old implementation"
134 pub PUB_USE_OF_PRIVATE_EXTERN_CRATE
,
136 "detect public reexports of private extern crates"
140 pub INVALID_TYPE_PARAM_DEFAULT
,
142 "type parameter default erroneously allowed in invalid location"
146 pub RENAMED_AND_REMOVED_LINTS
,
148 "lints that have been renamed or removed"
152 pub RESOLVE_TRAIT_ON_DEFAULTED_UNIT
,
154 "attempt to resolve a trait on an expression whose type cannot be inferred but which \
155 currently defaults to ()"
159 pub SAFE_EXTERN_STATICS
,
161 "safe access to extern statics was erroneously allowed"
165 pub PATTERNS_IN_FNS_WITHOUT_BODY
,
167 "patterns in functions without body were erroneously allowed"
171 pub EXTRA_REQUIREMENT_IN_IMPL
,
173 "detects extra requirements in impls that were erroneously allowed"
177 pub LEGACY_DIRECTORY_OWNERSHIP
,
179 "non-inline, non-`#[path]` modules (e.g. `mod foo;`) were erroneously allowed in some files \
186 "detects names that resolve to ambiguous glob imports with RFC 1560"
190 pub LEGACY_CONSTRUCTOR_VISIBILITY
,
192 "detects use of struct constructors that would be invisible with new visibility rules"
196 pub MISSING_FRAGMENT_SPECIFIER
,
198 "detects missing fragment specifiers in unused `macro_rules!` patterns"
202 pub PARENTHESIZED_PARAMS_IN_TYPES_AND_MODULES
,
204 "detects parenthesized generic parameters in type and module names"
210 "detects use of deprecated items"
213 /// Does nothing as a lint pass, but registers some `Lint`s
214 /// which are used by other parts of the compiler.
215 #[derive(Copy, Clone)]
216 pub struct HardwiredLints
;
218 impl LintPass
for HardwiredLints
{
219 fn get_lints(&self) -> LintArray
{
222 UNUSED_EXTERN_CRATES
,
223 UNUSED_QUALIFICATIONS
,
229 UNREACHABLE_PATTERNS
,
237 TRIVIAL_NUMERIC_CASTS
,
239 PUB_USE_OF_PRIVATE_EXTERN_CRATE
,
240 INVALID_TYPE_PARAM_DEFAULT
,
242 RENAMED_AND_REMOVED_LINTS
,
243 RESOLVE_TRAIT_ON_DEFAULTED_UNIT
,
245 PATTERNS_IN_FNS_WITHOUT_BODY
,
246 EXTRA_REQUIREMENT_IN_IMPL
,
247 LEGACY_DIRECTORY_OWNERSHIP
,
249 LEGACY_CONSTRUCTOR_VISIBILITY
,
250 MISSING_FRAGMENT_SPECIFIER
,
251 PARENTHESIZED_PARAMS_IN_TYPES_AND_MODULES
,
257 impl<'a
, 'tcx
> LateLintPass
<'a
, 'tcx
> for HardwiredLints {}