Hex Artifact Content
Not logged in

Artifact 83d39548efd65bcbbb19bedc98038675a22c6dc6:


0000: 2f 2f 21 20 23 20 4c 69 6e 74 73 20 69 6e 20 74  //! # Lints in t
0010: 68 65 20 52 75 73 74 20 63 6f 6d 70 69 6c 65 72  he Rust compiler
0020: 0a 2f 2f 21 0a 2f 2f 21 20 54 68 69 73 20 63 75  .//!.//! This cu
0030: 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 63 6f 6e  rrently only con
0040: 74 61 69 6e 73 20 74 68 65 20 64 65 66 69 6e 69  tains the defini
0050: 74 69 6f 6e 73 20 61 6e 64 20 69 6d 70 6c 65 6d  tions and implem
0060: 65 6e 74 61 74 69 6f 6e 73 0a 2f 2f 21 20 6f 66  entations.//! of
0070: 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 6c 69 6e   most of the lin
0080: 74 73 20 74 68 61 74 20 60 72 75 73 74 63 60 20  ts that `rustc` 
0090: 73 75 70 70 6f 72 74 73 20 64 69 72 65 63 74 6c  supports directl
00a0: 79 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 0a 2f  y, it does not./
00b0: 2f 21 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 69  /! contain the i
00c0: 6e 66 72 61 73 74 72 75 63 74 75 72 65 20 66 6f  nfrastructure fo
00d0: 72 20 64 65 66 69 6e 69 6e 67 2f 72 65 67 69 73  r defining/regis
00e0: 74 65 72 69 6e 67 20 6c 69 6e 74 73 2e 20 54 68  tering lints. Th
00f0: 61 74 20 69 73 0a 2f 2f 21 20 61 76 61 69 6c 61  at is.//! availa
0100: 62 6c 65 20 69 6e 20 60 72 75 73 74 63 3a 3a 6c  ble in `rustc::l
0110: 69 6e 74 60 20 61 6e 64 20 60 72 75 73 74 63 5f  int` and `rustc_
0120: 64 72 69 76 65 72 3a 3a 70 6c 75 67 69 6e 60 20  driver::plugin` 
0130: 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 2f 2f  respectively..//
0140: 21 0a 2f 2f 21 20 23 23 20 4e 6f 74 65 0a 2f 2f  !.//! ## Note.//
0150: 21 0a 2f 2f 21 20 54 68 69 73 20 41 50 49 20 69  !.//! This API i
0160: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 75 6e 73  s completely uns
0170: 74 61 62 6c 65 20 61 6e 64 20 73 75 62 6a 65 63  table and subjec
0180: 74 20 74 6f 20 63 68 61 6e 67 65 2e 0a 0a 23 21  t to change...#!
0190: 5b 64 6f 63 28 68 74 6d 6c 5f 72 6f 6f 74 5f 75  [doc(html_root_u
01a0: 72 6c 20 3d 20 22 68 74 74 70 73 3a 2f 2f 64 6f  rl = "https://do
01b0: 63 2e 72 75 73 74 2d 6c 61 6e 67 2e 6f 72 67 2f  c.rust-lang.org/
01c0: 6e 69 67 68 74 6c 79 2f 22 29 5d 0a 0a 23 21 5b  nightly/")]..#![
01d0: 63 66 67 5f 61 74 74 72 28 74 65 73 74 2c 20 66  cfg_attr(test, f
01e0: 65 61 74 75 72 65 28 74 65 73 74 29 29 5d 0a 23  eature(test))].#
01f0: 21 5b 66 65 61 74 75 72 65 28 62 6f 6f 6c 5f 74  ![feature(bool_t
0200: 6f 5f 6f 70 74 69 6f 6e 29 5d 0a 23 21 5b 66 65  o_option)].#![fe
0210: 61 74 75 72 65 28 62 6f 78 5f 70 61 74 74 65 72  ature(box_patter
0220: 6e 73 29 5d 0a 23 21 5b 66 65 61 74 75 72 65 28  ns)].#![feature(
0230: 62 6f 78 5f 73 79 6e 74 61 78 29 5d 0a 23 21 5b  box_syntax)].#![
0240: 66 65 61 74 75 72 65 28 6e 6c 6c 29 5d 0a 23 21  feature(nll)].#!
0250: 5b 66 65 61 74 75 72 65 28 6d 61 74 63 68 65 73  [feature(matches
0260: 5f 6d 61 63 72 6f 29 5d 0a 0a 23 21 5b 72 65 63  _macro)]..#![rec
0270: 75 72 73 69 6f 6e 5f 6c 69 6d 69 74 3d 22 32 35  ursion_limit="25
0280: 36 22 5d 0a 0a 23 5b 6d 61 63 72 6f 5f 75 73 65  6"]..#[macro_use
0290: 5d 0a 65 78 74 65 72 6e 20 63 72 61 74 65 20 72  ].extern crate r
02a0: 75 73 74 63 3b 0a 23 5b 6d 61 63 72 6f 5f 75 73  ustc;.#[macro_us
02b0: 65 5d 0a 65 78 74 65 72 6e 20 63 72 61 74 65 20  e].extern crate 
02c0: 72 75 73 74 63 5f 73 65 73 73 69 6f 6e 3b 0a 0a  rustc_session;..
02d0: 6d 6f 64 20 61 72 72 61 79 5f 69 6e 74 6f 5f 69  mod array_into_i
02e0: 74 65 72 3b 0a 6d 6f 64 20 6e 6f 6e 73 74 61 6e  ter;.mod nonstan
02f0: 64 61 72 64 5f 73 74 79 6c 65 3b 0a 6d 6f 64 20  dard_style;.mod 
0300: 72 65 64 75 6e 64 61 6e 74 5f 73 65 6d 69 63 6f  redundant_semico
0310: 6c 6f 6e 3b 0a 70 75 62 20 6d 6f 64 20 62 75 69  lon;.pub mod bui
0320: 6c 74 69 6e 3b 0a 6d 6f 64 20 74 79 70 65 73 3b  ltin;.mod types;
0330: 0a 6d 6f 64 20 75 6e 75 73 65 64 3b 0a 6d 6f 64  .mod unused;.mod
0340: 20 6e 6f 6e 5f 61 73 63 69 69 5f 69 64 65 6e 74   non_ascii_ident
0350: 73 3b 0a 0a 75 73 65 20 72 75 73 74 63 3a 3a 6c  s;..use rustc::l
0360: 69 6e 74 3b 0a 75 73 65 20 72 75 73 74 63 3a 3a  int;.use rustc::
0370: 6c 69 6e 74 3a 3a 7b 45 61 72 6c 79 43 6f 6e 74  lint::{EarlyCont
0380: 65 78 74 2c 20 4c 61 74 65 43 6f 6e 74 65 78 74  ext, LateContext
0390: 2c 20 4c 61 74 65 4c 69 6e 74 50 61 73 73 2c 20  , LateLintPass, 
03a0: 45 61 72 6c 79 4c 69 6e 74 50 61 73 73 2c 20 4c  EarlyLintPass, L
03b0: 69 6e 74 50 61 73 73 2c 20 4c 69 6e 74 41 72 72  intPass, LintArr
03c0: 61 79 7d 3b 0a 75 73 65 20 72 75 73 74 63 3a 3a  ay};.use rustc::
03d0: 6c 69 6e 74 3a 3a 62 75 69 6c 74 69 6e 3a 3a 7b  lint::builtin::{
03e0: 0a 20 20 20 20 42 41 52 45 5f 54 52 41 49 54 5f  .    BARE_TRAIT_
03f0: 4f 42 4a 45 43 54 53 2c 0a 20 20 20 20 45 4c 49  OBJECTS,.    ELI
0400: 44 45 44 5f 4c 49 46 45 54 49 4d 45 53 5f 49 4e  DED_LIFETIMES_IN
0410: 5f 50 41 54 48 53 2c 0a 20 20 20 20 45 58 50 4c  _PATHS,.    EXPL
0420: 49 43 49 54 5f 4f 55 54 4c 49 56 45 53 5f 52 45  ICIT_OUTLIVES_RE
0430: 51 55 49 52 45 4d 45 4e 54 53 2c 0a 20 20 20 20  QUIREMENTS,.    
0440: 49 4e 54 52 41 5f 44 4f 43 5f 4c 49 4e 4b 5f 52  INTRA_DOC_LINK_R
0450: 45 53 4f 4c 55 54 49 4f 4e 5f 46 41 49 4c 55 52  ESOLUTION_FAILUR
0460: 45 2c 0a 20 20 20 20 4d 49 53 53 49 4e 47 5f 44  E,.    MISSING_D
0470: 4f 43 5f 43 4f 44 45 5f 45 58 41 4d 50 4c 45 53  OC_CODE_EXAMPLES
0480: 2c 0a 20 20 20 20 50 52 49 56 41 54 45 5f 44 4f  ,.    PRIVATE_DO
0490: 43 5f 54 45 53 54 53 2c 0a 7d 3b 0a 75 73 65 20  C_TESTS,.};.use 
04a0: 72 75 73 74 63 3a 3a 68 69 72 3b 0a 75 73 65 20  rustc::hir;.use 
04b0: 72 75 73 74 63 3a 3a 68 69 72 3a 3a 64 65 66 5f  rustc::hir::def_
04c0: 69 64 3a 3a 44 65 66 49 64 3b 0a 75 73 65 20 72  id::DefId;.use r
04d0: 75 73 74 63 3a 3a 74 79 3a 3a 71 75 65 72 79 3a  ustc::ty::query:
04e0: 3a 50 72 6f 76 69 64 65 72 73 3b 0a 75 73 65 20  :Providers;.use 
04f0: 72 75 73 74 63 3a 3a 74 79 3a 3a 54 79 43 74 78  rustc::ty::TyCtx
0500: 74 3b 0a 0a 75 73 65 20 73 79 6e 74 61 78 3a 3a  t;..use syntax::
0510: 61 73 74 3b 0a 75 73 65 20 73 79 6e 74 61 78 5f  ast;.use syntax_
0520: 70 6f 73 3a 3a 53 70 61 6e 3b 0a 0a 75 73 65 20  pos::Span;..use 
0530: 6c 69 6e 74 3a 3a 4c 69 6e 74 49 64 3b 0a 0a 75  lint::LintId;..u
0540: 73 65 20 72 65 64 75 6e 64 61 6e 74 5f 73 65 6d  se redundant_sem
0550: 69 63 6f 6c 6f 6e 3a 3a 2a 3b 0a 75 73 65 20 6e  icolon::*;.use n
0560: 6f 6e 73 74 61 6e 64 61 72 64 5f 73 74 79 6c 65  onstandard_style
0570: 3a 3a 2a 3b 0a 75 73 65 20 62 75 69 6c 74 69 6e  ::*;.use builtin
0580: 3a 3a 2a 3b 0a 75 73 65 20 74 79 70 65 73 3a 3a  ::*;.use types::
0590: 2a 3b 0a 75 73 65 20 75 6e 75 73 65 64 3a 3a 2a  *;.use unused::*
05a0: 3b 0a 75 73 65 20 6e 6f 6e 5f 61 73 63 69 69 5f  ;.use non_ascii_
05b0: 69 64 65 6e 74 73 3a 3a 2a 3b 0a 75 73 65 20 72  idents::*;.use r
05c0: 75 73 74 63 3a 3a 6c 69 6e 74 3a 3a 69 6e 74 65  ustc::lint::inte
05d0: 72 6e 61 6c 3a 3a 2a 3b 0a 75 73 65 20 61 72 72  rnal::*;.use arr
05e0: 61 79 5f 69 6e 74 6f 5f 69 74 65 72 3a 3a 41 72  ay_into_iter::Ar
05f0: 72 61 79 49 6e 74 6f 49 74 65 72 3b 0a 0a 2f 2f  rayIntoIter;..//
0600: 2f 20 55 73 65 66 75 6c 20 66 6f 72 20 6f 74 68  / Useful for oth
0610: 65 72 20 70 61 72 74 73 20 6f 66 20 74 68 65 20  er parts of the 
0620: 63 6f 6d 70 69 6c 65 72 2e 0a 70 75 62 20 75 73  compiler..pub us
0630: 65 20 62 75 69 6c 74 69 6e 3a 3a 53 6f 66 74 4c  e builtin::SoftL
0640: 69 6e 74 73 3b 0a 0a 70 75 62 20 66 6e 20 70 72  ints;..pub fn pr
0650: 6f 76 69 64 65 28 70 72 6f 76 69 64 65 72 73 3a  ovide(providers:
0660: 20 26 6d 75 74 20 50 72 6f 76 69 64 65 72 73 3c   &mut Providers<
0670: 27 5f 3e 29 20 7b 0a 20 20 20 20 2a 70 72 6f 76  '_>) {.    *prov
0680: 69 64 65 72 73 20 3d 20 50 72 6f 76 69 64 65 72  iders = Provider
0690: 73 20 7b 0a 20 20 20 20 20 20 20 20 6c 69 6e 74  s {.        lint
06a0: 5f 6d 6f 64 2c 0a 20 20 20 20 20 20 20 20 2e 2e  _mod,.        ..
06b0: 2a 70 72 6f 76 69 64 65 72 73 0a 20 20 20 20 7d  *providers.    }
06c0: 3b 0a 7d 0a 0a 66 6e 20 6c 69 6e 74 5f 6d 6f 64  ;.}..fn lint_mod
06d0: 28 74 63 78 3a 20 54 79 43 74 78 74 3c 27 5f 3e  (tcx: TyCtxt<'_>
06e0: 2c 20 6d 6f 64 75 6c 65 5f 64 65 66 5f 69 64 3a  , module_def_id:
06f0: 20 44 65 66 49 64 29 20 7b 0a 20 20 20 20 6c 69   DefId) {.    li
0700: 6e 74 3a 3a 6c 61 74 65 5f 6c 69 6e 74 5f 6d 6f  nt::late_lint_mo
0710: 64 28 74 63 78 2c 20 6d 6f 64 75 6c 65 5f 64 65  d(tcx, module_de
0720: 66 5f 69 64 2c 20 42 75 69 6c 74 69 6e 43 6f 6d  f_id, BuiltinCom
0730: 62 69 6e 65 64 4d 6f 64 75 6c 65 4c 61 74 65 4c  binedModuleLateL
0740: 69 6e 74 50 61 73 73 3a 3a 6e 65 77 28 29 29 3b  intPass::new());
0750: 0a 7d 0a 0a 6d 61 63 72 6f 5f 72 75 6c 65 73 21  .}..macro_rules!
0760: 20 70 72 65 5f 65 78 70 61 6e 73 69 6f 6e 5f 6c   pre_expansion_l
0770: 69 6e 74 5f 70 61 73 73 65 73 20 7b 0a 20 20 20  int_passes {.   
0780: 20 28 24 6d 61 63 72 6f 3a 70 61 74 68 2c 20 24   ($macro:path, $
0790: 61 72 67 73 3a 74 74 29 20 3d 3e 20 28 0a 20 20  args:tt) => (.  
07a0: 20 20 20 20 20 20 24 6d 61 63 72 6f 21 28 24 61        $macro!($a
07b0: 72 67 73 2c 20 5b 0a 20 20 20 20 20 20 20 20 20  rgs, [.         
07c0: 20 20 20 4b 65 79 77 6f 72 64 49 64 65 6e 74 73     KeywordIdents
07d0: 3a 20 4b 65 79 77 6f 72 64 49 64 65 6e 74 73 2c  : KeywordIdents,
07e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 75  .            Unu
07f0: 73 65 64 44 6f 63 43 6f 6d 6d 65 6e 74 3a 20 55  sedDocComment: U
0800: 6e 75 73 65 64 44 6f 63 43 6f 6d 6d 65 6e 74 2c  nusedDocComment,
0810: 0a 20 20 20 20 20 20 20 20 5d 29 3b 0a 20 20 20  .        ]);.   
0820: 20 29 0a 7d 0a 0a 6d 61 63 72 6f 5f 72 75 6c 65   ).}..macro_rule
0830: 73 21 20 65 61 72 6c 79 5f 6c 69 6e 74 5f 70 61  s! early_lint_pa
0840: 73 73 65 73 20 7b 0a 20 20 20 20 28 24 6d 61 63  sses {.    ($mac
0850: 72 6f 3a 70 61 74 68 2c 20 24 61 72 67 73 3a 74  ro:path, $args:t
0860: 74 29 20 3d 3e 20 28 0a 20 20 20 20 20 20 20 20  t) => (.        
0870: 24 6d 61 63 72 6f 21 28 24 61 72 67 73 2c 20 5b  $macro!($args, [
0880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 75  .            Unu
0890: 73 65 64 50 61 72 65 6e 73 3a 20 55 6e 75 73 65  sedParens: Unuse
08a0: 64 50 61 72 65 6e 73 2c 0a 20 20 20 20 20 20 20  dParens,.       
08b0: 20 20 20 20 20 55 6e 75 73 65 64 49 6d 70 6f 72       UnusedImpor
08c0: 74 42 72 61 63 65 73 3a 20 55 6e 75 73 65 64 49  tBraces: UnusedI
08d0: 6d 70 6f 72 74 42 72 61 63 65 73 2c 0a 20 20 20  mportBraces,.   
08e0: 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 43           UnsafeC
08f0: 6f 64 65 3a 20 55 6e 73 61 66 65 43 6f 64 65 2c  ode: UnsafeCode,
0900: 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 6e 6f  .            Ano
0910: 6e 79 6d 6f 75 73 50 61 72 61 6d 65 74 65 72 73  nymousParameters
0920: 3a 20 41 6e 6f 6e 79 6d 6f 75 73 50 61 72 61 6d  : AnonymousParam
0930: 65 74 65 72 73 2c 0a 20 20 20 20 20 20 20 20 20  eters,.         
0940: 20 20 20 45 6c 6c 69 70 73 69 73 49 6e 63 6c 75     EllipsisInclu
0950: 73 69 76 65 52 61 6e 67 65 50 61 74 74 65 72 6e  siveRangePattern
0960: 73 3a 20 45 6c 6c 69 70 73 69 73 49 6e 63 6c 75  s: EllipsisInclu
0970: 73 69 76 65 52 61 6e 67 65 50 61 74 74 65 72 6e  siveRangePattern
0980: 73 3a 3a 64 65 66 61 75 6c 74 28 29 2c 0a 20 20  s::default(),.  
0990: 20 20 20 20 20 20 20 20 20 20 4e 6f 6e 43 61 6d            NonCam
09a0: 65 6c 43 61 73 65 54 79 70 65 73 3a 20 4e 6f 6e  elCaseTypes: Non
09b0: 43 61 6d 65 6c 43 61 73 65 54 79 70 65 73 2c 0a  CamelCaseTypes,.
09c0: 20 20 20 20 20 20 20 20 20 20 20 20 44 65 70 72              Depr
09d0: 65 63 61 74 65 64 41 74 74 72 3a 20 44 65 70 72  ecatedAttr: Depr
09e0: 65 63 61 74 65 64 41 74 74 72 3a 3a 6e 65 77 28  ecatedAttr::new(
09f0: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 57  ),.            W
0a00: 68 69 6c 65 54 72 75 65 3a 20 57 68 69 6c 65 54  hileTrue: WhileT
0a10: 72 75 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20  rue,.           
0a20: 20 4e 6f 6e 41 73 63 69 69 49 64 65 6e 74 73 3a   NonAsciiIdents:
0a30: 20 4e 6f 6e 41 73 63 69 69 49 64 65 6e 74 73 2c   NonAsciiIdents,
0a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 63  .            Inc
0a50: 6f 6d 70 6c 65 74 65 46 65 61 74 75 72 65 73 3a  ompleteFeatures:
0a60: 20 49 6e 63 6f 6d 70 6c 65 74 65 46 65 61 74 75   IncompleteFeatu
0a70: 72 65 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20  res,.           
0a80: 20 52 65 64 75 6e 64 61 6e 74 53 65 6d 69 63 6f   RedundantSemico
0a90: 6c 6f 6e 3a 20 52 65 64 75 6e 64 61 6e 74 53 65  lon: RedundantSe
0aa0: 6d 69 63 6f 6c 6f 6e 2c 0a 20 20 20 20 20 20 20  micolon,.       
0ab0: 20 5d 29 3b 0a 20 20 20 20 29 0a 7d 0a 0a 6d 61   ]);.    ).}..ma
0ac0: 63 72 6f 5f 72 75 6c 65 73 21 20 64 65 63 6c 61  cro_rules! decla
0ad0: 72 65 5f 63 6f 6d 62 69 6e 65 64 5f 65 61 72 6c  re_combined_earl
0ae0: 79 5f 70 61 73 73 20 7b 0a 20 20 20 20 28 5b 24  y_pass {.    ([$
0af0: 6e 61 6d 65 3a 69 64 65 6e 74 5d 2c 20 24 70 61  name:ident], $pa
0b00: 73 73 65 73 3a 74 74 29 20 3d 3e 20 28 0a 20 20  sses:tt) => (.  
0b10: 20 20 20 20 20 20 65 61 72 6c 79 5f 6c 69 6e 74        early_lint
0b20: 5f 6d 65 74 68 6f 64 73 21 28 64 65 63 6c 61 72  _methods!(declar
0b30: 65 5f 63 6f 6d 62 69 6e 65 64 5f 65 61 72 6c 79  e_combined_early
0b40: 5f 6c 69 6e 74 5f 70 61 73 73 2c 20 5b 70 75 62  _lint_pass, [pub
0b50: 20 24 6e 61 6d 65 2c 20 24 70 61 73 73 65 73 5d   $name, $passes]
0b60: 29 3b 0a 20 20 20 20 29 0a 7d 0a 0a 70 72 65 5f  );.    ).}..pre_
0b70: 65 78 70 61 6e 73 69 6f 6e 5f 6c 69 6e 74 5f 70  expansion_lint_p
0b80: 61 73 73 65 73 21 28 64 65 63 6c 61 72 65 5f 63  asses!(declare_c
0b90: 6f 6d 62 69 6e 65 64 5f 65 61 72 6c 79 5f 70 61  ombined_early_pa
0ba0: 73 73 2c 20 5b 42 75 69 6c 74 69 6e 43 6f 6d 62  ss, [BuiltinComb
0bb0: 69 6e 65 64 50 72 65 45 78 70 61 6e 73 69 6f 6e  inedPreExpansion
0bc0: 4c 69 6e 74 50 61 73 73 5d 29 3b 0a 65 61 72 6c  LintPass]);.earl
0bd0: 79 5f 6c 69 6e 74 5f 70 61 73 73 65 73 21 28 64  y_lint_passes!(d
0be0: 65 63 6c 61 72 65 5f 63 6f 6d 62 69 6e 65 64 5f  eclare_combined_
0bf0: 65 61 72 6c 79 5f 70 61 73 73 2c 20 5b 42 75 69  early_pass, [Bui
0c00: 6c 74 69 6e 43 6f 6d 62 69 6e 65 64 45 61 72 6c  ltinCombinedEarl
0c10: 79 4c 69 6e 74 50 61 73 73 5d 29 3b 0a 0a 6d 61  yLintPass]);..ma
0c20: 63 72 6f 5f 72 75 6c 65 73 21 20 6c 61 74 65 5f  cro_rules! late_
0c30: 6c 69 6e 74 5f 70 61 73 73 65 73 20 7b 0a 20 20  lint_passes {.  
0c40: 20 20 28 24 6d 61 63 72 6f 3a 70 61 74 68 2c 20    ($macro:path, 
0c50: 24 61 72 67 73 3a 74 74 29 20 3d 3e 20 28 0a 20  $args:tt) => (. 
0c60: 20 20 20 20 20 20 20 24 6d 61 63 72 6f 21 28 24         $macro!($
0c70: 61 72 67 73 2c 20 5b 0a 20 20 20 20 20 20 20 20  args, [.        
0c80: 20 20 20 20 2f 2f 20 46 49 58 4d 45 3a 20 4c 6f      // FIXME: Lo
0c90: 6f 6b 20 69 6e 74 6f 20 72 65 67 72 65 73 73 69  ok into regressi
0ca0: 6f 6e 20 77 68 65 6e 20 74 68 69 73 20 69 73 20  on when this is 
0cb0: 75 73 65 64 20 61 73 20 61 20 6d 6f 64 75 6c 65  used as a module
0cc0: 20 6c 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20   lint.          
0cd0: 20 20 2f 2f 20 4d 61 79 20 44 65 70 65 6e 64 20    // May Depend 
0ce0: 6f 6e 20 63 6f 6e 73 74 61 6e 74 73 20 65 6c 73  on constants els
0cf0: 65 77 68 65 72 65 0a 20 20 20 20 20 20 20 20 20  ewhere.         
0d00: 20 20 20 55 6e 75 73 65 64 42 72 6f 6b 65 6e 43     UnusedBrokenC
0d10: 6f 6e 73 74 3a 20 55 6e 75 73 65 64 42 72 6f 6b  onst: UnusedBrok
0d20: 65 6e 43 6f 6e 73 74 2c 0a 0a 20 20 20 20 20 20  enConst,..      
0d30: 20 20 20 20 20 20 2f 2f 20 55 73 65 73 20 61 74        // Uses at
0d40: 74 72 3a 3a 69 73 5f 75 73 65 64 20 77 68 69 63  tr::is_used whic
0d50: 68 20 69 73 20 75 6e 74 72 61 63 6b 65 64 2c 20  h is untracked, 
0d60: 63 61 6e 27 74 20 62 65 20 61 6e 20 69 6e 63 72  can't be an incr
0d70: 65 6d 65 6e 74 61 6c 20 6d 6f 64 75 6c 65 20 70  emental module p
0d80: 61 73 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20  ass..           
0d90: 20 55 6e 75 73 65 64 41 74 74 72 69 62 75 74 65   UnusedAttribute
0da0: 73 3a 20 55 6e 75 73 65 64 41 74 74 72 69 62 75  s: UnusedAttribu
0db0: 74 65 73 3a 3a 6e 65 77 28 29 2c 0a 0a 20 20 20  tes::new(),..   
0dc0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 65 65 64           // Need
0dd0: 73 20 74 6f 20 72 75 6e 20 61 66 74 65 72 20 55  s to run after U
0de0: 6e 75 73 65 64 41 74 74 72 69 62 75 74 65 73 20  nusedAttributes 
0df0: 61 73 20 69 74 20 6d 61 72 6b 73 20 61 6c 6c 20  as it marks all 
0e00: 60 66 65 61 74 75 72 65 60 20 61 74 74 72 69 62  `feature` attrib
0e10: 75 74 65 73 20 61 73 20 75 73 65 64 2e 0a 20 20  utes as used..  
0e20: 20 20 20 20 20 20 20 20 20 20 55 6e 73 74 61 62            Unstab
0e30: 6c 65 46 65 61 74 75 72 65 73 3a 20 55 6e 73 74  leFeatures: Unst
0e40: 61 62 6c 65 46 65 61 74 75 72 65 73 2c 0a 0a 20  ableFeatures,.. 
0e50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 72             // Tr
0e60: 61 63 6b 73 20 73 74 61 74 65 20 61 63 72 6f 73  acks state acros
0e70: 73 20 6d 6f 64 75 6c 65 73 0a 20 20 20 20 20 20  s modules.      
0e80: 20 20 20 20 20 20 55 6e 6e 61 6d 65 61 62 6c 65        Unnameable
0e90: 54 65 73 74 49 74 65 6d 73 3a 20 55 6e 6e 61 6d  TestItems: Unnam
0ea0: 65 61 62 6c 65 54 65 73 74 49 74 65 6d 73 3a 3a  eableTestItems::
0eb0: 6e 65 77 28 29 2c 0a 0a 20 20 20 20 20 20 20 20  new(),..        
0ec0: 20 20 20 20 2f 2f 20 54 72 61 63 6b 73 20 61 74      // Tracks at
0ed0: 74 72 69 62 75 74 65 73 20 6f 66 20 70 61 72 65  tributes of pare
0ee0: 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  nts.            
0ef0: 4d 69 73 73 69 6e 67 44 6f 63 3a 20 4d 69 73 73  MissingDoc: Miss
0f00: 69 6e 67 44 6f 63 3a 3a 6e 65 77 28 29 2c 0a 0a  ingDoc::new(),..
0f10: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
0f20: 65 70 65 6e 64 73 20 6f 6e 20 61 63 63 65 73 73  epends on access
0f30: 20 6c 65 76 65 6c 73 0a 20 20 20 20 20 20 20 20   levels.        
0f40: 20 20 20 20 2f 2f 20 46 49 58 4d 45 3a 20 54 75      // FIXME: Tu
0f50: 72 6e 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69  rn the computati
0f60: 6f 6e 20 6f 66 20 74 79 70 65 73 20 77 68 69 63  on of types whic
0f70: 68 20 69 6d 70 6c 65 6d 65 6e 74 20 44 65 62 75  h implement Debu
0f80: 67 20 69 6e 74 6f 20 61 20 71 75 65 72 79 0a 20  g into a query. 
0f90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 6e             // an
0fa0: 64 20 63 68 61 6e 67 65 20 74 68 69 73 20 74 6f  d change this to
0fb0: 20 61 20 6d 6f 64 75 6c 65 20 6c 69 6e 74 20 70   a module lint p
0fc0: 61 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20  ass.            
0fd0: 4d 69 73 73 69 6e 67 44 65 62 75 67 49 6d 70 6c  MissingDebugImpl
0fe0: 65 6d 65 6e 74 61 74 69 6f 6e 73 3a 20 4d 69 73  ementations: Mis
0ff0: 73 69 6e 67 44 65 62 75 67 49 6d 70 6c 65 6d 65  singDebugImpleme
1000: 6e 74 61 74 69 6f 6e 73 3a 3a 64 65 66 61 75 6c  ntations::defaul
1010: 74 28 29 2c 0a 0a 20 20 20 20 20 20 20 20 20 20  t(),..          
1020: 20 20 41 72 72 61 79 49 6e 74 6f 49 74 65 72 3a    ArrayIntoIter:
1030: 20 41 72 72 61 79 49 6e 74 6f 49 74 65 72 2c 0a   ArrayIntoIter,.
1040: 20 20 20 20 20 20 20 20 5d 29 3b 0a 20 20 20 20          ]);.    
1050: 29 0a 7d 0a 0a 6d 61 63 72 6f 5f 72 75 6c 65 73  ).}..macro_rules
1060: 21 20 6c 61 74 65 5f 6c 69 6e 74 5f 6d 6f 64 5f  ! late_lint_mod_
1070: 70 61 73 73 65 73 20 7b 0a 20 20 20 20 28 24 6d  passes {.    ($m
1080: 61 63 72 6f 3a 70 61 74 68 2c 20 24 61 72 67 73  acro:path, $args
1090: 3a 74 74 29 20 3d 3e 20 28 0a 20 20 20 20 20 20  :tt) => (.      
10a0: 20 20 24 6d 61 63 72 6f 21 28 24 61 72 67 73 2c    $macro!($args,
10b0: 20 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 48   [.            H
10c0: 61 72 64 77 69 72 65 64 4c 69 6e 74 73 3a 20 48  ardwiredLints: H
10d0: 61 72 64 77 69 72 65 64 4c 69 6e 74 73 2c 0a 20  ardwiredLints,. 
10e0: 20 20 20 20 20 20 20 20 20 20 20 49 6d 70 72 6f             Impro
10f0: 70 65 72 43 54 79 70 65 73 3a 20 49 6d 70 72 6f  perCTypes: Impro
1100: 70 65 72 43 54 79 70 65 73 2c 0a 20 20 20 20 20  perCTypes,.     
1110: 20 20 20 20 20 20 20 56 61 72 69 61 6e 74 53 69         VariantSi
1120: 7a 65 44 69 66 66 65 72 65 6e 63 65 73 3a 20 56  zeDifferences: V
1130: 61 72 69 61 6e 74 53 69 7a 65 44 69 66 66 65 72  ariantSizeDiffer
1140: 65 6e 63 65 73 2c 0a 20 20 20 20 20 20 20 20 20  ences,.         
1150: 20 20 20 42 6f 78 50 6f 69 6e 74 65 72 73 3a 20     BoxPointers: 
1160: 42 6f 78 50 6f 69 6e 74 65 72 73 2c 0a 20 20 20  BoxPointers,.   
1170: 20 20 20 20 20 20 20 20 20 50 61 74 68 53 74 61           PathSta
1180: 74 65 6d 65 6e 74 73 3a 20 50 61 74 68 53 74 61  tements: PathSta
1190: 74 65 6d 65 6e 74 73 2c 0a 0a 20 20 20 20 20 20  tements,..      
11a0: 20 20 20 20 20 20 2f 2f 20 44 65 70 65 6e 64 73        // Depends
11b0: 20 6f 6e 20 72 65 66 65 72 65 6e 63 65 64 20 66   on referenced f
11c0: 75 6e 63 74 69 6f 6e 20 73 69 67 6e 61 74 75 72  unction signatur
11d0: 65 73 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e  es in expression
11e0: 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e  s.            Un
11f0: 75 73 65 64 52 65 73 75 6c 74 73 3a 20 55 6e 75  usedResults: Unu
1200: 73 65 64 52 65 73 75 6c 74 73 2c 0a 0a 20 20 20  sedResults,..   
1210: 20 20 20 20 20 20 20 20 20 4e 6f 6e 55 70 70 65           NonUppe
1220: 72 43 61 73 65 47 6c 6f 62 61 6c 73 3a 20 4e 6f  rCaseGlobals: No
1230: 6e 55 70 70 65 72 43 61 73 65 47 6c 6f 62 61 6c  nUpperCaseGlobal
1240: 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e  s,.            N
1250: 6f 6e 53 68 6f 72 74 68 61 6e 64 46 69 65 6c 64  onShorthandField
1260: 50 61 74 74 65 72 6e 73 3a 20 4e 6f 6e 53 68 6f  Patterns: NonSho
1270: 72 74 68 61 6e 64 46 69 65 6c 64 50 61 74 74 65  rthandFieldPatte
1280: 72 6e 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20  rns,.           
1290: 20 55 6e 75 73 65 64 41 6c 6c 6f 63 61 74 69 6f   UnusedAllocatio
12a0: 6e 3a 20 55 6e 75 73 65 64 41 6c 6c 6f 63 61 74  n: UnusedAllocat
12b0: 69 6f 6e 2c 0a 0a 20 20 20 20 20 20 20 20 20 20  ion,..          
12c0: 20 20 2f 2f 20 44 65 70 65 6e 64 73 20 6f 6e 20    // Depends on 
12d0: 74 79 70 65 73 20 75 73 65 64 20 69 6e 20 74 79  types used in ty
12e0: 70 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 0a 20  pe definitions. 
12f0: 20 20 20 20 20 20 20 20 20 20 20 4d 69 73 73 69             Missi
1300: 6e 67 43 6f 70 79 49 6d 70 6c 65 6d 65 6e 74 61  ngCopyImplementa
1310: 74 69 6f 6e 73 3a 20 4d 69 73 73 69 6e 67 43 6f  tions: MissingCo
1320: 70 79 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  pyImplementation
1330: 73 2c 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  s,..            
1340: 2f 2f 20 44 65 70 65 6e 64 73 20 6f 6e 20 72 65  // Depends on re
1350: 66 65 72 65 6e 63 65 64 20 66 75 6e 63 74 69 6f  ferenced functio
1360: 6e 20 73 69 67 6e 61 74 75 72 65 73 20 69 6e 20  n signatures in 
1370: 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20  expressions.    
1380: 20 20 20 20 20 20 20 20 4d 75 74 61 62 6c 65 54          MutableT
1390: 72 61 6e 73 6d 75 74 65 73 3a 20 4d 75 74 61 62  ransmutes: Mutab
13a0: 6c 65 54 72 61 6e 73 6d 75 74 65 73 2c 0a 0a 20  leTransmutes,.. 
13b0: 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65 41             TypeA
13c0: 6c 69 61 73 42 6f 75 6e 64 73 3a 20 54 79 70 65  liasBounds: Type
13d0: 41 6c 69 61 73 42 6f 75 6e 64 73 2c 0a 0a 20 20  AliasBounds,..  
13e0: 20 20 20 20 20 20 20 20 20 20 54 72 69 76 69 61            Trivia
13f0: 6c 43 6f 6e 73 74 72 61 69 6e 74 73 3a 20 54 72  lConstraints: Tr
1400: 69 76 69 61 6c 43 6f 6e 73 74 72 61 69 6e 74 73  ivialConstraints
1410: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 79  ,.            Ty
1420: 70 65 4c 69 6d 69 74 73 3a 20 54 79 70 65 4c 69  peLimits: TypeLi
1430: 6d 69 74 73 3a 3a 6e 65 77 28 29 2c 0a 0a 20 20  mits::new(),..  
1440: 20 20 20 20 20 20 20 20 20 20 4e 6f 6e 53 6e 61            NonSna
1450: 6b 65 43 61 73 65 3a 20 4e 6f 6e 53 6e 61 6b 65  keCase: NonSnake
1460: 43 61 73 65 2c 0a 20 20 20 20 20 20 20 20 20 20  Case,.          
1470: 20 20 49 6e 76 61 6c 69 64 4e 6f 4d 61 6e 67 6c    InvalidNoMangl
1480: 65 49 74 65 6d 73 3a 20 49 6e 76 61 6c 69 64 4e  eItems: InvalidN
1490: 6f 4d 61 6e 67 6c 65 49 74 65 6d 73 2c 0a 0a 20  oMangleItems,.. 
14a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65             // De
14b0: 70 65 6e 64 73 20 6f 6e 20 61 63 63 65 73 73 20  pends on access 
14c0: 6c 65 76 65 6c 73 0a 20 20 20 20 20 20 20 20 20  levels.         
14d0: 20 20 20 55 6e 72 65 61 63 68 61 62 6c 65 50 75     UnreachablePu
14e0: 62 3a 20 55 6e 72 65 61 63 68 61 62 6c 65 50 75  b: UnreachablePu
14f0: 62 2c 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
1500: 45 78 70 6c 69 63 69 74 4f 75 74 6c 69 76 65 73  ExplicitOutlives
1510: 52 65 71 75 69 72 65 6d 65 6e 74 73 3a 20 45 78  Requirements: Ex
1520: 70 6c 69 63 69 74 4f 75 74 6c 69 76 65 73 52 65  plicitOutlivesRe
1530: 71 75 69 72 65 6d 65 6e 74 73 2c 0a 20 20 20 20  quirements,.    
1540: 20 20 20 20 20 20 20 20 49 6e 76 61 6c 69 64 56          InvalidV
1550: 61 6c 75 65 3a 20 49 6e 76 61 6c 69 64 56 61 6c  alue: InvalidVal
1560: 75 65 2c 0a 20 20 20 20 20 20 20 20 5d 29 3b 0a  ue,.        ]);.
1570: 20 20 20 20 29 0a 7d 0a 0a 6d 61 63 72 6f 5f 72      ).}..macro_r
1580: 75 6c 65 73 21 20 64 65 63 6c 61 72 65 5f 63 6f  ules! declare_co
1590: 6d 62 69 6e 65 64 5f 6c 61 74 65 5f 70 61 73 73  mbined_late_pass
15a0: 20 7b 0a 20 20 20 20 28 5b 24 76 3a 76 69 73 20   {.    ([$v:vis 
15b0: 24 6e 61 6d 65 3a 69 64 65 6e 74 5d 2c 20 24 70  $name:ident], $p
15c0: 61 73 73 65 73 3a 74 74 29 20 3d 3e 20 28 0a 20  asses:tt) => (. 
15d0: 20 20 20 20 20 20 20 6c 61 74 65 5f 6c 69 6e 74         late_lint
15e0: 5f 6d 65 74 68 6f 64 73 21 28 64 65 63 6c 61 72  _methods!(declar
15f0: 65 5f 63 6f 6d 62 69 6e 65 64 5f 6c 61 74 65 5f  e_combined_late_
1600: 6c 69 6e 74 5f 70 61 73 73 2c 20 5b 24 76 20 24  lint_pass, [$v $
1610: 6e 61 6d 65 2c 20 24 70 61 73 73 65 73 5d 2c 20  name, $passes], 
1620: 5b 27 74 63 78 5d 29 3b 0a 20 20 20 20 29 0a 7d  ['tcx]);.    ).}
1630: 0a 0a 2f 2f 20 46 49 58 4d 45 3a 20 4d 61 6b 65  ..// FIXME: Make
1640: 20 61 20 73 65 70 61 72 61 74 65 20 6c 69 6e 74   a separate lint
1650: 20 74 79 70 65 20 77 68 69 63 68 20 64 6f 20 6e   type which do n
1660: 6f 74 20 72 65 71 75 69 72 65 20 74 79 70 65 63  ot require typec
1670: 6b 20 74 61 62 6c 65 73 0a 6c 61 74 65 5f 6c 69  k tables.late_li
1680: 6e 74 5f 70 61 73 73 65 73 21 28 64 65 63 6c 61  nt_passes!(decla
1690: 72 65 5f 63 6f 6d 62 69 6e 65 64 5f 6c 61 74 65  re_combined_late
16a0: 5f 70 61 73 73 2c 20 5b 70 75 62 20 42 75 69 6c  _pass, [pub Buil
16b0: 74 69 6e 43 6f 6d 62 69 6e 65 64 4c 61 74 65 4c  tinCombinedLateL
16c0: 69 6e 74 50 61 73 73 5d 29 3b 0a 0a 6c 61 74 65  intPass]);..late
16d0: 5f 6c 69 6e 74 5f 6d 6f 64 5f 70 61 73 73 65 73  _lint_mod_passes
16e0: 21 28 64 65 63 6c 61 72 65 5f 63 6f 6d 62 69 6e  !(declare_combin
16f0: 65 64 5f 6c 61 74 65 5f 70 61 73 73 2c 20 5b 42  ed_late_pass, [B
1700: 75 69 6c 74 69 6e 43 6f 6d 62 69 6e 65 64 4d 6f  uiltinCombinedMo
1710: 64 75 6c 65 4c 61 74 65 4c 69 6e 74 50 61 73 73  duleLateLintPass
1720: 5d 29 3b 0a 0a 70 75 62 20 66 6e 20 6e 65 77 5f  ]);..pub fn new_
1730: 6c 69 6e 74 5f 73 74 6f 72 65 28 6e 6f 5f 69 6e  lint_store(no_in
1740: 74 65 72 6c 65 61 76 65 5f 6c 69 6e 74 73 3a 20  terleave_lints: 
1750: 62 6f 6f 6c 2c 20 69 6e 74 65 72 6e 61 6c 5f 6c  bool, internal_l
1760: 69 6e 74 73 3a 20 62 6f 6f 6c 29 20 2d 3e 20 6c  ints: bool) -> l
1770: 69 6e 74 3a 3a 4c 69 6e 74 53 74 6f 72 65 20 7b  int::LintStore {
1780: 0a 20 20 20 20 6c 65 74 20 6d 75 74 20 6c 69 6e  .    let mut lin
1790: 74 5f 73 74 6f 72 65 20 3d 20 6c 69 6e 74 3a 3a  t_store = lint::
17a0: 4c 69 6e 74 53 74 6f 72 65 3a 3a 6e 65 77 28 29  LintStore::new()
17b0: 3b 0a 0a 20 20 20 20 72 65 67 69 73 74 65 72 5f  ;..    register_
17c0: 62 75 69 6c 74 69 6e 73 28 26 6d 75 74 20 6c 69  builtins(&mut li
17d0: 6e 74 5f 73 74 6f 72 65 2c 20 6e 6f 5f 69 6e 74  nt_store, no_int
17e0: 65 72 6c 65 61 76 65 5f 6c 69 6e 74 73 29 3b 0a  erleave_lints);.
17f0: 20 20 20 20 69 66 20 69 6e 74 65 72 6e 61 6c 5f      if internal_
1800: 6c 69 6e 74 73 20 7b 0a 20 20 20 20 20 20 20 20  lints {.        
1810: 72 65 67 69 73 74 65 72 5f 69 6e 74 65 72 6e 61  register_interna
1820: 6c 73 28 26 6d 75 74 20 6c 69 6e 74 5f 73 74 6f  ls(&mut lint_sto
1830: 72 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  re);.    }..    
1840: 6c 69 6e 74 5f 73 74 6f 72 65 0a 7d 0a 0a 2f 2f  lint_store.}..//
1850: 2f 20 54 65 6c 6c 20 74 68 65 20 60 4c 69 6e 74  / Tell the `Lint
1860: 53 74 6f 72 65 60 20 61 62 6f 75 74 20 61 6c 6c  Store` about all
1870: 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 6c 69   the built-in li
1880: 6e 74 73 20 28 74 68 65 20 6f 6e 65 73 0a 2f 2f  nts (the ones.//
1890: 2f 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 69  / defined in thi
18a0: 73 20 63 72 61 74 65 20 61 6e 64 20 74 68 65 20  s crate and the 
18b0: 6f 6e 65 73 20 64 65 66 69 6e 65 64 20 69 6e 0a  ones defined in.
18c0: 2f 2f 2f 20 60 72 75 73 74 63 3a 3a 6c 69 6e 74  /// `rustc::lint
18d0: 3a 3a 62 75 69 6c 74 69 6e 60 29 2e 0a 66 6e 20  ::builtin`)..fn 
18e0: 72 65 67 69 73 74 65 72 5f 62 75 69 6c 74 69 6e  register_builtin
18f0: 73 28 73 74 6f 72 65 3a 20 26 6d 75 74 20 6c 69  s(store: &mut li
1900: 6e 74 3a 3a 4c 69 6e 74 53 74 6f 72 65 2c 20 6e  nt::LintStore, n
1910: 6f 5f 69 6e 74 65 72 6c 65 61 76 65 5f 6c 69 6e  o_interleave_lin
1920: 74 73 3a 20 62 6f 6f 6c 29 20 7b 0a 20 20 20 20  ts: bool) {.    
1930: 6d 61 63 72 6f 5f 72 75 6c 65 73 21 20 61 64 64  macro_rules! add
1940: 5f 6c 69 6e 74 5f 67 72 6f 75 70 20 7b 0a 20 20  _lint_group {.  
1950: 20 20 20 20 20 20 28 24 6e 61 6d 65 3a 65 78 70        ($name:exp
1960: 72 2c 20 24 28 24 6c 69 6e 74 3a 69 64 65 6e 74  r, $($lint:ident
1970: 29 2c 2a 29 20 3d 3e 20 28 0a 20 20 20 20 20 20  ),*) => (.      
1980: 20 20 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69        store.regi
1990: 73 74 65 72 5f 67 72 6f 75 70 28 66 61 6c 73 65  ster_group(false
19a0: 2c 20 24 6e 61 6d 65 2c 20 4e 6f 6e 65 2c 20 76  , $name, None, v
19b0: 65 63 21 5b 24 28 4c 69 6e 74 49 64 3a 3a 6f 66  ec![$(LintId::of
19c0: 28 24 6c 69 6e 74 29 29 2c 2a 5d 29 3b 0a 20 20  ($lint)),*]);.  
19d0: 20 20 20 20 20 20 29 0a 20 20 20 20 7d 0a 0a 20        ).    }.. 
19e0: 20 20 20 6d 61 63 72 6f 5f 72 75 6c 65 73 21 20     macro_rules! 
19f0: 72 65 67 69 73 74 65 72 5f 70 61 73 73 20 7b 0a  register_pass {.
1a00: 20 20 20 20 20 20 20 20 28 24 6d 65 74 68 6f 64          ($method
1a10: 3a 69 64 65 6e 74 2c 20 24 74 79 3a 69 64 65 6e  :ident, $ty:iden
1a20: 74 2c 20 24 63 6f 6e 73 74 72 75 63 74 6f 72 3a  t, $constructor:
1a30: 65 78 70 72 29 20 3d 3e 20 28 0a 20 20 20 20 20  expr) => (.     
1a40: 20 20 20 20 20 20 20 73 74 6f 72 65 2e 72 65 67         store.reg
1a50: 69 73 74 65 72 5f 6c 69 6e 74 73 28 26 24 74 79  ister_lints(&$ty
1a60: 3a 3a 67 65 74 5f 6c 69 6e 74 73 28 29 29 3b 0a  ::get_lints());.
1a70: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 6f 72              stor
1a80: 65 2e 24 6d 65 74 68 6f 64 28 7c 7c 20 62 6f 78  e.$method(|| box
1a90: 20 24 63 6f 6e 73 74 72 75 63 74 6f 72 29 3b 0a   $constructor);.
1aa0: 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 7d 0a          ).    }.
1ab0: 0a 20 20 20 20 6d 61 63 72 6f 5f 72 75 6c 65 73  .    macro_rules
1ac0: 21 20 72 65 67 69 73 74 65 72 5f 70 61 73 73 65  ! register_passe
1ad0: 73 20 7b 0a 20 20 20 20 20 20 20 20 28 24 6d 65  s {.        ($me
1ae0: 74 68 6f 64 3a 69 64 65 6e 74 2c 20 5b 24 28 24  thod:ident, [$($
1af0: 70 61 73 73 65 73 3a 69 64 65 6e 74 3a 20 24 63  passes:ident: $c
1b00: 6f 6e 73 74 72 75 63 74 6f 72 3a 65 78 70 72 2c  onstructor:expr,
1b10: 29 2a 5d 29 20 3d 3e 20 28 0a 20 20 20 20 20 20  )*]) => (.      
1b20: 20 20 20 20 20 20 24 28 0a 20 20 20 20 20 20 20        $(.       
1b30: 20 20 20 20 20 20 20 20 20 72 65 67 69 73 74 65           registe
1b40: 72 5f 70 61 73 73 21 28 24 6d 65 74 68 6f 64 2c  r_pass!($method,
1b50: 20 24 70 61 73 73 65 73 2c 20 24 63 6f 6e 73 74   $passes, $const
1b60: 72 75 63 74 6f 72 29 3b 0a 20 20 20 20 20 20 20  ructor);.       
1b70: 20 20 20 20 20 29 2a 0a 20 20 20 20 20 20 20 20       )*.        
1b80: 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20  ).    }..    if 
1b90: 6e 6f 5f 69 6e 74 65 72 6c 65 61 76 65 5f 6c 69  no_interleave_li
1ba0: 6e 74 73 20 7b 0a 20 20 20 20 20 20 20 20 70 72  nts {.        pr
1bb0: 65 5f 65 78 70 61 6e 73 69 6f 6e 5f 6c 69 6e 74  e_expansion_lint
1bc0: 5f 70 61 73 73 65 73 21 28 72 65 67 69 73 74 65  _passes!(registe
1bd0: 72 5f 70 61 73 73 65 73 2c 20 72 65 67 69 73 74  r_passes, regist
1be0: 65 72 5f 70 72 65 5f 65 78 70 61 6e 73 69 6f 6e  er_pre_expansion
1bf0: 5f 70 61 73 73 29 3b 0a 20 20 20 20 20 20 20 20  _pass);.        
1c00: 65 61 72 6c 79 5f 6c 69 6e 74 5f 70 61 73 73 65  early_lint_passe
1c10: 73 21 28 72 65 67 69 73 74 65 72 5f 70 61 73 73  s!(register_pass
1c20: 65 73 2c 20 72 65 67 69 73 74 65 72 5f 65 61 72  es, register_ear
1c30: 6c 79 5f 70 61 73 73 29 3b 0a 20 20 20 20 20 20  ly_pass);.      
1c40: 20 20 6c 61 74 65 5f 6c 69 6e 74 5f 70 61 73 73    late_lint_pass
1c50: 65 73 21 28 72 65 67 69 73 74 65 72 5f 70 61 73  es!(register_pas
1c60: 73 65 73 2c 20 72 65 67 69 73 74 65 72 5f 6c 61  ses, register_la
1c70: 74 65 5f 70 61 73 73 29 3b 0a 20 20 20 20 20 20  te_pass);.      
1c80: 20 20 6c 61 74 65 5f 6c 69 6e 74 5f 6d 6f 64 5f    late_lint_mod_
1c90: 70 61 73 73 65 73 21 28 72 65 67 69 73 74 65 72  passes!(register
1ca0: 5f 70 61 73 73 65 73 2c 20 72 65 67 69 73 74 65  _passes, registe
1cb0: 72 5f 6c 61 74 65 5f 6d 6f 64 5f 70 61 73 73 29  r_late_mod_pass)
1cc0: 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20  ;.    } else {. 
1cd0: 20 20 20 20 20 20 20 73 74 6f 72 65 2e 72 65 67         store.reg
1ce0: 69 73 74 65 72 5f 6c 69 6e 74 73 28 26 42 75 69  ister_lints(&Bui
1cf0: 6c 74 69 6e 43 6f 6d 62 69 6e 65 64 50 72 65 45  ltinCombinedPreE
1d00: 78 70 61 6e 73 69 6f 6e 4c 69 6e 74 50 61 73 73  xpansionLintPass
1d10: 3a 3a 67 65 74 5f 6c 69 6e 74 73 28 29 29 3b 0a  ::get_lints());.
1d20: 20 20 20 20 20 20 20 20 73 74 6f 72 65 2e 72 65          store.re
1d30: 67 69 73 74 65 72 5f 6c 69 6e 74 73 28 26 42 75  gister_lints(&Bu
1d40: 69 6c 74 69 6e 43 6f 6d 62 69 6e 65 64 45 61 72  iltinCombinedEar
1d50: 6c 79 4c 69 6e 74 50 61 73 73 3a 3a 67 65 74 5f  lyLintPass::get_
1d60: 6c 69 6e 74 73 28 29 29 3b 0a 20 20 20 20 20 20  lints());.      
1d70: 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72    store.register
1d80: 5f 6c 69 6e 74 73 28 26 42 75 69 6c 74 69 6e 43  _lints(&BuiltinC
1d90: 6f 6d 62 69 6e 65 64 4d 6f 64 75 6c 65 4c 61 74  ombinedModuleLat
1da0: 65 4c 69 6e 74 50 61 73 73 3a 3a 67 65 74 5f 6c  eLintPass::get_l
1db0: 69 6e 74 73 28 29 29 3b 0a 20 20 20 20 20 20 20  ints());.       
1dc0: 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f   store.register_
1dd0: 6c 69 6e 74 73 28 26 42 75 69 6c 74 69 6e 43 6f  lints(&BuiltinCo
1de0: 6d 62 69 6e 65 64 4c 61 74 65 4c 69 6e 74 50 61  mbinedLateLintPa
1df0: 73 73 3a 3a 67 65 74 5f 6c 69 6e 74 73 28 29 29  ss::get_lints())
1e00: 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 64 64  ;.    }..    add
1e10: 5f 6c 69 6e 74 5f 67 72 6f 75 70 21 28 22 6e 6f  _lint_group!("no
1e20: 6e 73 74 61 6e 64 61 72 64 5f 73 74 79 6c 65 22  nstandard_style"
1e30: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
1e40: 20 20 20 20 20 20 4e 4f 4e 5f 43 41 4d 45 4c 5f        NON_CAMEL_
1e50: 43 41 53 45 5f 54 59 50 45 53 2c 0a 20 20 20 20  CASE_TYPES,.    
1e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e70: 4e 4f 4e 5f 53 4e 41 4b 45 5f 43 41 53 45 2c 0a  NON_SNAKE_CASE,.
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e90: 20 20 20 20 4e 4f 4e 5f 55 50 50 45 52 5f 43 41      NON_UPPER_CA
1ea0: 53 45 5f 47 4c 4f 42 41 4c 53 29 3b 0a 0a 20 20  SE_GLOBALS);..  
1eb0: 20 20 61 64 64 5f 6c 69 6e 74 5f 67 72 6f 75 70    add_lint_group
1ec0: 21 28 22 75 6e 75 73 65 64 22 2c 0a 20 20 20 20  !("unused",.    
1ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee0: 55 4e 55 53 45 44 5f 49 4d 50 4f 52 54 53 2c 0a  UNUSED_IMPORTS,.
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f00: 20 20 20 20 55 4e 55 53 45 44 5f 56 41 52 49 41      UNUSED_VARIA
1f10: 42 4c 45 53 2c 0a 20 20 20 20 20 20 20 20 20 20  BLES,.          
1f20: 20 20 20 20 20 20 20 20 20 20 55 4e 55 53 45 44            UNUSED
1f30: 5f 41 53 53 49 47 4e 4d 45 4e 54 53 2c 0a 20 20  _ASSIGNMENTS,.  
1f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f50: 20 20 44 45 41 44 5f 43 4f 44 45 2c 0a 20 20 20    DEAD_CODE,.   
1f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f70: 20 55 4e 55 53 45 44 5f 4d 55 54 2c 0a 20 20 20   UNUSED_MUT,.   
1f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f90: 20 55 4e 52 45 41 43 48 41 42 4c 45 5f 43 4f 44   UNREACHABLE_COD
1fa0: 45 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E,.             
1fb0: 20 20 20 20 20 20 20 55 4e 52 45 41 43 48 41 42         UNREACHAB
1fc0: 4c 45 5f 50 41 54 54 45 52 4e 53 2c 0a 20 20 20  LE_PATTERNS,.   
1fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe0: 20 4f 56 45 52 4c 41 50 50 49 4e 47 5f 50 41 54   OVERLAPPING_PAT
1ff0: 54 45 52 4e 53 2c 0a 20 20 20 20 20 20 20 20 20  TERNS,.         
2000: 20 20 20 20 20 20 20 20 20 20 20 55 4e 55 53 45             UNUSE
2010: 44 5f 4d 55 53 54 5f 55 53 45 2c 0a 20 20 20 20  D_MUST_USE,.    
2020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2030: 55 4e 55 53 45 44 5f 55 4e 53 41 46 45 2c 0a 20  UNUSED_UNSAFE,. 
2040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2050: 20 20 20 50 41 54 48 5f 53 54 41 54 45 4d 45 4e     PATH_STATEMEN
2060: 54 53 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  TS,.            
2070: 20 20 20 20 20 20 20 20 55 4e 55 53 45 44 5f 41          UNUSED_A
2080: 54 54 52 49 42 55 54 45 53 2c 0a 20 20 20 20 20  TTRIBUTES,.     
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
20a0: 4e 55 53 45 44 5f 4d 41 43 52 4f 53 2c 0a 20 20  NUSED_MACROS,.  
20b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c0: 20 20 55 4e 55 53 45 44 5f 41 4c 4c 4f 43 41 54    UNUSED_ALLOCAT
20d0: 49 4f 4e 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ION,.           
20e0: 20 20 20 20 20 20 20 20 20 55 4e 55 53 45 44 5f           UNUSED_
20f0: 44 4f 43 5f 43 4f 4d 4d 45 4e 54 53 2c 0a 20 20  DOC_COMMENTS,.  
2100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2110: 20 20 55 4e 55 53 45 44 5f 45 58 54 45 52 4e 5f    UNUSED_EXTERN_
2120: 43 52 41 54 45 53 2c 0a 20 20 20 20 20 20 20 20  CRATES,.        
2130: 20 20 20 20 20 20 20 20 20 20 20 20 55 4e 55 53              UNUS
2140: 45 44 5f 46 45 41 54 55 52 45 53 2c 0a 20 20 20  ED_FEATURES,.   
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 55 4e 55 53 45 44 5f 4c 41 42 45 4c 53 2c 0a   UNUSED_LABELS,.
2170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2180: 20 20 20 20 55 4e 55 53 45 44 5f 50 41 52 45 4e      UNUSED_PAREN
2190: 53 29 3b 0a 0a 20 20 20 20 61 64 64 5f 6c 69 6e  S);..    add_lin
21a0: 74 5f 67 72 6f 75 70 21 28 22 72 75 73 74 5f 32  t_group!("rust_2
21b0: 30 31 38 5f 69 64 69 6f 6d 73 22 2c 0a 20 20 20  018_idioms",.   
21c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d0: 20 42 41 52 45 5f 54 52 41 49 54 5f 4f 42 4a 45   BARE_TRAIT_OBJE
21e0: 43 54 53 2c 0a 20 20 20 20 20 20 20 20 20 20 20  CTS,.           
21f0: 20 20 20 20 20 20 20 20 20 55 4e 55 53 45 44 5f           UNUSED_
2200: 45 58 54 45 52 4e 5f 43 52 41 54 45 53 2c 0a 20  EXTERN_CRATES,. 
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 20 45 4c 4c 49 50 53 49 53 5f 49 4e 43 4c     ELLIPSIS_INCL
2230: 55 53 49 56 45 5f 52 41 4e 47 45 5f 50 41 54 54  USIVE_RANGE_PATT
2240: 45 52 4e 53 2c 0a 20 20 20 20 20 20 20 20 20 20  ERNS,.          
2250: 20 20 20 20 20 20 20 20 20 20 45 4c 49 44 45 44            ELIDED
2260: 5f 4c 49 46 45 54 49 4d 45 53 5f 49 4e 5f 50 41  _LIFETIMES_IN_PA
2270: 54 48 53 2c 0a 20 20 20 20 20 20 20 20 20 20 20  THS,.           
2280: 20 20 20 20 20 20 20 20 20 45 58 50 4c 49 43 49           EXPLICI
2290: 54 5f 4f 55 54 4c 49 56 45 53 5f 52 45 51 55 49  T_OUTLIVES_REQUI
22a0: 52 45 4d 45 4e 54 53 0a 0a 20 20 20 20 20 20 20  REMENTS..       
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
22c0: 46 49 58 4d 45 28 23 35 32 36 36 35 2c 20 23 34  FIXME(#52665, #4
22d0: 37 38 31 36 29 20 6e 6f 74 20 61 6c 77 61 79 73  7816) not always
22e0: 20 61 70 70 6c 69 63 61 62 6c 65 20 61 6e 64 20   applicable and 
22f0: 6e 6f 74 20 61 6c 6c 0a 20 20 20 20 20 20 20 20  not all.        
2300: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6d              // m
2310: 61 63 72 6f 73 20 61 72 65 20 72 65 61 64 79 20  acros are ready 
2320: 66 6f 72 20 74 68 69 73 20 79 65 74 2e 0a 20 20  for this yet..  
2330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2340: 20 20 2f 2f 20 55 4e 52 45 41 43 48 41 42 4c 45    // UNREACHABLE
2350: 5f 50 55 42 2c 0a 0a 20 20 20 20 20 20 20 20 20  _PUB,..         
2360: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 49             // FI
2370: 58 4d 45 20 6d 61 63 72 6f 20 63 72 61 74 65 73  XME macro crates
2380: 20 61 72 65 20 6e 6f 74 20 75 70 20 66 6f 72 20   are not up for 
2390: 74 68 69 73 20 79 65 74 2c 20 74 6f 6f 20 6d 75  this yet, too mu
23a0: 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ch.             
23b0: 20 20 20 20 20 20 20 2f 2f 20 62 72 65 61 6b 61         // breaka
23c0: 67 65 20 69 73 20 73 65 65 6e 20 69 66 20 77 65  ge is seen if we
23d0: 20 74 72 79 20 74 6f 20 65 6e 63 6f 75 72 61 67   try to encourag
23e0: 65 20 74 68 69 73 20 6c 69 6e 74 2e 0a 20 20 20  e this lint..   
23f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2400: 20 2f 2f 20 4d 41 43 52 4f 5f 55 53 45 5f 45 58   // MACRO_USE_EX
2410: 54 45 52 4e 5f 43 52 41 54 45 2c 0a 20 20 20 20  TERN_CRATE,.    
2420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2430: 29 3b 0a 0a 20 20 20 20 61 64 64 5f 6c 69 6e 74  );..    add_lint
2440: 5f 67 72 6f 75 70 21 28 22 72 75 73 74 64 6f 63  _group!("rustdoc
2450: 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ",.             
2460: 20 20 20 20 20 20 20 49 4e 54 52 41 5f 44 4f 43         INTRA_DOC
2470: 5f 4c 49 4e 4b 5f 52 45 53 4f 4c 55 54 49 4f 4e  _LINK_RESOLUTION
2480: 5f 46 41 49 4c 55 52 45 2c 0a 20 20 20 20 20 20  _FAILURE,.      
2490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 49                MI
24a0: 53 53 49 4e 47 5f 44 4f 43 5f 43 4f 44 45 5f 45  SSING_DOC_CODE_E
24b0: 58 41 4d 50 4c 45 53 2c 0a 20 20 20 20 20 20 20  XAMPLES,.       
24c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 52 49               PRI
24d0: 56 41 54 45 5f 44 4f 43 5f 54 45 53 54 53 29 3b  VATE_DOC_TESTS);
24e0: 0a 0a 20 20 20 20 2f 2f 20 52 65 67 69 73 74 65  ..    // Registe
24f0: 72 20 72 65 6e 61 6d 65 64 20 61 6e 64 20 72 65  r renamed and re
2500: 6d 6f 76 65 64 20 6c 69 6e 74 73 2e 0a 20 20 20  moved lints..   
2510: 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f   store.register_
2520: 72 65 6e 61 6d 65 64 28 22 73 69 6e 67 6c 65 5f  renamed("single_
2530: 75 73 65 5f 6c 69 66 65 74 69 6d 65 22 2c 20 22  use_lifetime", "
2540: 73 69 6e 67 6c 65 5f 75 73 65 5f 6c 69 66 65 74  single_use_lifet
2550: 69 6d 65 73 22 29 3b 0a 20 20 20 20 73 74 6f 72  imes");.    stor
2560: 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6e 61 6d  e.register_renam
2570: 65 64 28 22 65 6c 69 64 65 64 5f 6c 69 66 65 74  ed("elided_lifet
2580: 69 6d 65 5f 69 6e 5f 70 61 74 68 22 2c 20 22 65  ime_in_path", "e
2590: 6c 69 64 65 64 5f 6c 69 66 65 74 69 6d 65 73 5f  lided_lifetimes_
25a0: 69 6e 5f 70 61 74 68 73 22 29 3b 0a 20 20 20 20  in_paths");.    
25b0: 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72  store.register_r
25c0: 65 6e 61 6d 65 64 28 22 62 61 72 65 5f 74 72 61  enamed("bare_tra
25d0: 69 74 5f 6f 62 6a 65 63 74 22 2c 20 22 62 61 72  it_object", "bar
25e0: 65 5f 74 72 61 69 74 5f 6f 62 6a 65 63 74 73 22  e_trait_objects"
25f0: 29 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67  );.    store.reg
2600: 69 73 74 65 72 5f 72 65 6e 61 6d 65 64 28 22 75  ister_renamed("u
2610: 6e 73 74 61 62 6c 65 5f 6e 61 6d 65 5f 63 6f 6c  nstable_name_col
2620: 6c 69 73 69 6f 6e 22 2c 20 22 75 6e 73 74 61 62  lision", "unstab
2630: 6c 65 5f 6e 61 6d 65 5f 63 6f 6c 6c 69 73 69 6f  le_name_collisio
2640: 6e 73 22 29 3b 0a 20 20 20 20 73 74 6f 72 65 2e  ns");.    store.
2650: 72 65 67 69 73 74 65 72 5f 72 65 6e 61 6d 65 64  register_renamed
2660: 28 22 75 6e 75 73 65 64 5f 64 6f 63 5f 63 6f 6d  ("unused_doc_com
2670: 6d 65 6e 74 22 2c 20 22 75 6e 75 73 65 64 5f 64  ment", "unused_d
2680: 6f 63 5f 63 6f 6d 6d 65 6e 74 73 22 29 3b 0a 20  oc_comments");. 
2690: 20 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65     store.registe
26a0: 72 5f 72 65 6e 61 6d 65 64 28 22 61 73 79 6e 63  r_renamed("async
26b0: 5f 69 64 65 6e 74 73 22 2c 20 22 6b 65 79 77 6f  _idents", "keywo
26c0: 72 64 5f 69 64 65 6e 74 73 22 29 3b 0a 20 20 20  rd_idents");.   
26d0: 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f   store.register_
26e0: 72 65 6d 6f 76 65 64 28 22 75 6e 6b 6e 6f 77 6e  removed("unknown
26f0: 5f 66 65 61 74 75 72 65 73 22 2c 20 22 72 65 70  _features", "rep
2700: 6c 61 63 65 64 20 62 79 20 61 6e 20 65 72 72 6f  laced by an erro
2710: 72 22 29 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72  r");.    store.r
2720: 65 67 69 73 74 65 72 5f 72 65 6d 6f 76 65 64 28  egister_removed(
2730: 22 75 6e 73 69 67 6e 65 64 5f 6e 65 67 61 74 69  "unsigned_negati
2740: 6f 6e 22 2c 20 22 72 65 70 6c 61 63 65 64 20 62  on", "replaced b
2750: 79 20 6e 65 67 61 74 65 5f 75 6e 73 69 67 6e 65  y negate_unsigne
2760: 64 20 66 65 61 74 75 72 65 20 67 61 74 65 22 29  d feature gate")
2770: 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69  ;.    store.regi
2780: 73 74 65 72 5f 72 65 6d 6f 76 65 64 28 22 6e 65  ster_removed("ne
2790: 67 61 74 65 5f 75 6e 73 69 67 6e 65 64 22 2c 20  gate_unsigned", 
27a0: 22 63 61 73 74 20 61 20 73 69 67 6e 65 64 20 76  "cast a signed v
27b0: 61 6c 75 65 20 69 6e 73 74 65 61 64 22 29 3b 0a  alue instead");.
27c0: 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74      store.regist
27d0: 65 72 5f 72 65 6d 6f 76 65 64 28 22 72 61 77 5f  er_removed("raw_
27e0: 70 6f 69 6e 74 65 72 5f 64 65 72 69 76 65 22 2c  pointer_derive",
27f0: 20 22 75 73 69 6e 67 20 64 65 72 69 76 65 20 77   "using derive w
2800: 69 74 68 20 72 61 77 20 70 6f 69 6e 74 65 72 73  ith raw pointers
2810: 20 69 73 20 6f 6b 22 29 3b 0a 20 20 20 20 2f 2f   is ok");.    //
2820: 20 52 65 67 69 73 74 65 72 20 6c 69 6e 74 20 67   Register lint g
2830: 72 6f 75 70 20 61 6c 69 61 73 65 73 2e 0a 20 20  roup aliases..  
2840: 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72    store.register
2850: 5f 67 72 6f 75 70 5f 61 6c 69 61 73 28 22 6e 6f  _group_alias("no
2860: 6e 73 74 61 6e 64 61 72 64 5f 73 74 79 6c 65 22  nstandard_style"
2870: 2c 20 22 62 61 64 5f 73 74 79 6c 65 22 29 3b 0a  , "bad_style");.
2880: 20 20 20 20 2f 2f 20 54 68 69 73 20 77 61 73 20      // This was 
2890: 72 65 6e 61 6d 65 64 20 74 6f 20 60 72 61 77 5f  renamed to `raw_
28a0: 70 6f 69 6e 74 65 72 5f 64 65 72 69 76 65 60 2c  pointer_derive`,
28b0: 20 77 68 69 63 68 20 77 61 73 20 74 68 65 6e 20   which was then 
28c0: 72 65 6d 6f 76 65 64 2c 0a 20 20 20 20 2f 2f 20  removed,.    // 
28d0: 73 6f 20 69 74 20 69 73 20 61 6c 73 6f 20 63 6f  so it is also co
28e0: 6e 73 69 64 65 72 65 64 20 72 65 6d 6f 76 65 64  nsidered removed
28f0: 2e 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69  ..    store.regi
2900: 73 74 65 72 5f 72 65 6d 6f 76 65 64 28 22 72 61  ster_removed("ra
2910: 77 5f 70 6f 69 6e 74 65 72 5f 64 65 72 69 76 69  w_pointer_derivi
2920: 6e 67 22 2c 20 22 75 73 69 6e 67 20 64 65 72 69  ng", "using deri
2930: 76 65 20 77 69 74 68 20 72 61 77 20 70 6f 69 6e  ve with raw poin
2940: 74 65 72 73 20 69 73 20 6f 6b 22 29 3b 0a 20 20  ters is ok");.  
2950: 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72    store.register
2960: 5f 72 65 6d 6f 76 65 64 28 22 64 72 6f 70 5f 77  _removed("drop_w
2970: 69 74 68 5f 72 65 70 72 5f 65 78 74 65 72 6e 22  ith_repr_extern"
2980: 2c 20 22 64 72 6f 70 20 66 6c 61 67 73 20 68 61  , "drop flags ha
2990: 76 65 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 22  ve been removed"
29a0: 29 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67  );.    store.reg
29b0: 69 73 74 65 72 5f 72 65 6d 6f 76 65 64 28 22 66  ister_removed("f
29c0: 61 74 5f 70 74 72 5f 74 72 61 6e 73 6d 75 74 65  at_ptr_transmute
29d0: 73 22 2c 20 22 77 61 73 20 61 63 63 69 64 65 6e  s", "was acciden
29e0: 74 61 6c 6c 79 20 72 65 6d 6f 76 65 64 20 62 61  tally removed ba
29f0: 63 6b 20 69 6e 20 32 30 31 34 22 29 3b 0a 20 20  ck in 2014");.  
2a00: 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72    store.register
2a10: 5f 72 65 6d 6f 76 65 64 28 22 64 65 70 72 65 63  _removed("deprec
2a20: 61 74 65 64 5f 61 74 74 72 22 2c 20 22 75 73 65  ated_attr", "use
2a30: 20 60 64 65 70 72 65 63 61 74 65 64 60 20 69 6e   `deprecated` in
2a40: 73 74 65 61 64 22 29 3b 0a 20 20 20 20 73 74 6f  stead");.    sto
2a50: 72 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d 6f  re.register_remo
2a60: 76 65 64 28 22 74 72 61 6e 73 6d 75 74 65 5f 66  ved("transmute_f
2a70: 72 6f 6d 5f 66 6e 5f 69 74 65 6d 5f 74 79 70 65  rom_fn_item_type
2a80: 73 22 2c 0a 20 20 20 20 20 20 20 20 22 61 6c 77  s",.        "alw
2a90: 61 79 73 20 63 61 73 74 20 66 75 6e 63 74 69 6f  ays cast functio
2aa0: 6e 73 20 62 65 66 6f 72 65 20 74 72 61 6e 73 6d  ns before transm
2ab0: 75 74 69 6e 67 20 74 68 65 6d 22 29 3b 0a 20 20  uting them");.  
2ac0: 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72    store.register
2ad0: 5f 72 65 6d 6f 76 65 64 28 22 68 72 5f 6c 69 66  _removed("hr_lif
2ae0: 65 74 69 6d 65 5f 69 6e 5f 61 73 73 6f 63 5f 74  etime_in_assoc_t
2af0: 79 70 65 22 2c 0a 20 20 20 20 20 20 20 20 22 63  ype",.        "c
2b00: 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 68 61  onverted into ha
2b10: 72 64 20 65 72 72 6f 72 2c 20 73 65 65 20 68 74  rd error, see ht
2b20: 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d  tps://github.com
2b30: 2f 72 75 73 74 2d 6c 61 6e 67 2f 72 75 73 74 2f  /rust-lang/rust/
2b40: 69 73 73 75 65 73 2f 33 33 36 38 35 22 29 3b 0a  issues/33685");.
2b50: 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74      store.regist
2b60: 65 72 5f 72 65 6d 6f 76 65 64 28 22 69 6e 61 63  er_removed("inac
2b70: 63 65 73 73 69 62 6c 65 5f 65 78 74 65 72 6e 5f  cessible_extern_
2b80: 63 72 61 74 65 22 2c 0a 20 20 20 20 20 20 20 20  crate",.        
2b90: 22 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20  "converted into 
2ba0: 68 61 72 64 20 65 72 72 6f 72 2c 20 73 65 65 20  hard error, see 
2bb0: 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63  https://github.c
2bc0: 6f 6d 2f 72 75 73 74 2d 6c 61 6e 67 2f 72 75 73  om/rust-lang/rus
2bd0: 74 2f 69 73 73 75 65 73 2f 33 36 38 38 36 22 29  t/issues/36886")
2be0: 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69  ;.    store.regi
2bf0: 73 74 65 72 5f 72 65 6d 6f 76 65 64 28 22 73 75  ster_removed("su
2c00: 70 65 72 5f 6f 72 5f 73 65 6c 66 5f 69 6e 5f 67  per_or_self_in_g
2c10: 6c 6f 62 61 6c 5f 70 61 74 68 22 2c 0a 20 20 20  lobal_path",.   
2c20: 20 20 20 20 20 22 63 6f 6e 76 65 72 74 65 64 20       "converted 
2c30: 69 6e 74 6f 20 68 61 72 64 20 65 72 72 6f 72 2c  into hard error,
2c40: 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 67 69 74   see https://git
2c50: 68 75 62 2e 63 6f 6d 2f 72 75 73 74 2d 6c 61 6e  hub.com/rust-lan
2c60: 67 2f 72 75 73 74 2f 69 73 73 75 65 73 2f 33 36  g/rust/issues/36
2c70: 38 38 38 22 29 3b 0a 20 20 20 20 73 74 6f 72 65  888");.    store
2c80: 2e 72 65 67 69 73 74 65 72 5f 72 65 6d 6f 76 65  .register_remove
2c90: 64 28 22 6f 76 65 72 6c 61 70 70 69 6e 67 5f 69  d("overlapping_i
2ca0: 6e 68 65 72 65 6e 74 5f 69 6d 70 6c 73 22 2c 0a  nherent_impls",.
2cb0: 20 20 20 20 20 20 20 20 22 63 6f 6e 76 65 72 74          "convert
2cc0: 65 64 20 69 6e 74 6f 20 68 61 72 64 20 65 72 72  ed into hard err
2cd0: 6f 72 2c 20 73 65 65 20 68 74 74 70 73 3a 2f 2f  or, see https://
2ce0: 67 69 74 68 75 62 2e 63 6f 6d 2f 72 75 73 74 2d  github.com/rust-
2cf0: 6c 61 6e 67 2f 72 75 73 74 2f 69 73 73 75 65 73  lang/rust/issues
2d00: 2f 33 36 38 38 39 22 29 3b 0a 20 20 20 20 73 74  /36889");.    st
2d10: 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d  ore.register_rem
2d20: 6f 76 65 64 28 22 69 6c 6c 65 67 61 6c 5f 66 6c  oved("illegal_fl
2d30: 6f 61 74 69 6e 67 5f 70 6f 69 6e 74 5f 63 6f 6e  oating_point_con
2d40: 73 74 61 6e 74 5f 70 61 74 74 65 72 6e 22 2c 0a  stant_pattern",.
2d50: 20 20 20 20 20 20 20 20 22 63 6f 6e 76 65 72 74          "convert
2d60: 65 64 20 69 6e 74 6f 20 68 61 72 64 20 65 72 72  ed into hard err
2d70: 6f 72 2c 20 73 65 65 20 68 74 74 70 73 3a 2f 2f  or, see https://
2d80: 67 69 74 68 75 62 2e 63 6f 6d 2f 72 75 73 74 2d  github.com/rust-
2d90: 6c 61 6e 67 2f 72 75 73 74 2f 69 73 73 75 65 73  lang/rust/issues
2da0: 2f 33 36 38 39 30 22 29 3b 0a 20 20 20 20 73 74  /36890");.    st
2db0: 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d  ore.register_rem
2dc0: 6f 76 65 64 28 22 69 6c 6c 65 67 61 6c 5f 73 74  oved("illegal_st
2dd0: 72 75 63 74 5f 6f 72 5f 65 6e 75 6d 5f 63 6f 6e  ruct_or_enum_con
2de0: 73 74 61 6e 74 5f 70 61 74 74 65 72 6e 22 2c 0a  stant_pattern",.
2df0: 20 20 20 20 20 20 20 20 22 63 6f 6e 76 65 72 74          "convert
2e00: 65 64 20 69 6e 74 6f 20 68 61 72 64 20 65 72 72  ed into hard err
2e10: 6f 72 2c 20 73 65 65 20 68 74 74 70 73 3a 2f 2f  or, see https://
2e20: 67 69 74 68 75 62 2e 63 6f 6d 2f 72 75 73 74 2d  github.com/rust-
2e30: 6c 61 6e 67 2f 72 75 73 74 2f 69 73 73 75 65 73  lang/rust/issues
2e40: 2f 33 36 38 39 31 22 29 3b 0a 20 20 20 20 73 74  /36891");.    st
2e50: 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d  ore.register_rem
2e60: 6f 76 65 64 28 22 6c 69 66 65 74 69 6d 65 5f 75  oved("lifetime_u
2e70: 6e 64 65 72 73 63 6f 72 65 22 2c 0a 20 20 20 20  nderscore",.    
2e80: 20 20 20 20 22 63 6f 6e 76 65 72 74 65 64 20 69      "converted i
2e90: 6e 74 6f 20 68 61 72 64 20 65 72 72 6f 72 2c 20  nto hard error, 
2ea0: 73 65 65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68  see https://gith
2eb0: 75 62 2e 63 6f 6d 2f 72 75 73 74 2d 6c 61 6e 67  ub.com/rust-lang
2ec0: 2f 72 75 73 74 2f 69 73 73 75 65 73 2f 33 36 38  /rust/issues/368
2ed0: 39 32 22 29 3b 0a 20 20 20 20 73 74 6f 72 65 2e  92");.    store.
2ee0: 72 65 67 69 73 74 65 72 5f 72 65 6d 6f 76 65 64  register_removed
2ef0: 28 22 65 78 74 72 61 5f 72 65 71 75 69 72 65 6d  ("extra_requirem
2f00: 65 6e 74 5f 69 6e 5f 69 6d 70 6c 22 2c 0a 20 20  ent_in_impl",.  
2f10: 20 20 20 20 20 20 22 63 6f 6e 76 65 72 74 65 64        "converted
2f20: 20 69 6e 74 6f 20 68 61 72 64 20 65 72 72 6f 72   into hard error
2f30: 2c 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 67 69  , see https://gi
2f40: 74 68 75 62 2e 63 6f 6d 2f 72 75 73 74 2d 6c 61  thub.com/rust-la
2f50: 6e 67 2f 72 75 73 74 2f 69 73 73 75 65 73 2f 33  ng/rust/issues/3
2f60: 37 31 36 36 22 29 3b 0a 20 20 20 20 73 74 6f 72  7166");.    stor
2f70: 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d 6f 76  e.register_remov
2f80: 65 64 28 22 6c 65 67 61 63 79 5f 69 6d 70 6f 72  ed("legacy_impor
2f90: 74 73 22 2c 0a 20 20 20 20 20 20 20 20 22 63 6f  ts",.        "co
2fa0: 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 68 61 72  nverted into har
2fb0: 64 20 65 72 72 6f 72 2c 20 73 65 65 20 68 74 74  d error, see htt
2fc0: 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f  ps://github.com/
2fd0: 72 75 73 74 2d 6c 61 6e 67 2f 72 75 73 74 2f 69  rust-lang/rust/i
2fe0: 73 73 75 65 73 2f 33 38 32 36 30 22 29 3b 0a 20  ssues/38260");. 
2ff0: 20 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65     store.registe
3000: 72 5f 72 65 6d 6f 76 65 64 28 22 63 6f 65 72 63  r_removed("coerc
3010: 65 5f 6e 65 76 65 72 22 2c 0a 20 20 20 20 20 20  e_never",.      
3020: 20 20 22 63 6f 6e 76 65 72 74 65 64 20 69 6e 74    "converted int
3030: 6f 20 68 61 72 64 20 65 72 72 6f 72 2c 20 73 65  o hard error, se
3040: 65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62  e https://github
3050: 2e 63 6f 6d 2f 72 75 73 74 2d 6c 61 6e 67 2f 72  .com/rust-lang/r
3060: 75 73 74 2f 69 73 73 75 65 73 2f 34 38 39 35 30  ust/issues/48950
3070: 22 29 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72 65  ");.    store.re
3080: 67 69 73 74 65 72 5f 72 65 6d 6f 76 65 64 28 22  gister_removed("
3090: 72 65 73 6f 6c 76 65 5f 74 72 61 69 74 5f 6f 6e  resolve_trait_on
30a0: 5f 64 65 66 61 75 6c 74 65 64 5f 75 6e 69 74 22  _defaulted_unit"
30b0: 2c 0a 20 20 20 20 20 20 20 20 22 63 6f 6e 76 65  ,.        "conve
30c0: 72 74 65 64 20 69 6e 74 6f 20 68 61 72 64 20 65  rted into hard e
30d0: 72 72 6f 72 2c 20 73 65 65 20 68 74 74 70 73 3a  rror, see https:
30e0: 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 75 73  //github.com/rus
30f0: 74 2d 6c 61 6e 67 2f 72 75 73 74 2f 69 73 73 75  t-lang/rust/issu
3100: 65 73 2f 34 38 39 35 30 22 29 3b 0a 20 20 20 20  es/48950");.    
3110: 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72  store.register_r
3120: 65 6d 6f 76 65 64 28 22 70 72 69 76 61 74 65 5f  emoved("private_
3130: 6e 6f 5f 6d 61 6e 67 6c 65 5f 66 6e 73 22 2c 0a  no_mangle_fns",.
3140: 20 20 20 20 20 20 20 20 22 6e 6f 20 6c 6f 6e 67          "no long
3150: 65 72 20 61 20 77 61 72 6e 69 6e 67 2c 20 60 23  er a warning, `#
3160: 5b 6e 6f 5f 6d 61 6e 67 6c 65 5d 60 20 66 75 6e  [no_mangle]` fun
3170: 63 74 69 6f 6e 73 20 61 6c 77 61 79 73 20 65 78  ctions always ex
3180: 70 6f 72 74 65 64 22 29 3b 0a 20 20 20 20 73 74  ported");.    st
3190: 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d  ore.register_rem
31a0: 6f 76 65 64 28 22 70 72 69 76 61 74 65 5f 6e 6f  oved("private_no
31b0: 5f 6d 61 6e 67 6c 65 5f 73 74 61 74 69 63 73 22  _mangle_statics"
31c0: 2c 0a 20 20 20 20 20 20 20 20 22 6e 6f 20 6c 6f  ,.        "no lo
31d0: 6e 67 65 72 20 61 20 77 61 72 6e 69 6e 67 2c 20  nger a warning, 
31e0: 60 23 5b 6e 6f 5f 6d 61 6e 67 6c 65 5d 60 20 73  `#[no_mangle]` s
31f0: 74 61 74 69 63 73 20 61 6c 77 61 79 73 20 65 78  tatics always ex
3200: 70 6f 72 74 65 64 22 29 3b 0a 20 20 20 20 73 74  ported");.    st
3210: 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d  ore.register_rem
3220: 6f 76 65 64 28 22 62 61 64 5f 72 65 70 72 22 2c  oved("bad_repr",
3230: 0a 20 20 20 20 20 20 20 20 22 72 65 70 6c 61 63  .        "replac
3240: 65 64 20 77 69 74 68 20 61 20 67 65 6e 65 72 69  ed with a generi
3250: 63 20 61 74 74 72 69 62 75 74 65 20 69 6e 70 75  c attribute inpu
3260: 74 20 63 68 65 63 6b 22 29 3b 0a 20 20 20 20 73  t check");.    s
3270: 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72 65  tore.register_re
3280: 6d 6f 76 65 64 28 22 64 75 70 6c 69 63 61 74 65  moved("duplicate
3290: 5f 6d 61 74 63 68 65 72 5f 62 69 6e 64 69 6e 67  _matcher_binding
32a0: 5f 6e 61 6d 65 22 2c 0a 20 20 20 20 20 20 20 20  _name",.        
32b0: 22 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20  "converted into 
32c0: 68 61 72 64 20 65 72 72 6f 72 2c 20 73 65 65 20  hard error, see 
32d0: 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63  https://github.c
32e0: 6f 6d 2f 72 75 73 74 2d 6c 61 6e 67 2f 72 75 73  om/rust-lang/rus
32f0: 74 2f 69 73 73 75 65 73 2f 35 37 37 34 32 22 29  t/issues/57742")
3300: 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69  ;.    store.regi
3310: 73 74 65 72 5f 72 65 6d 6f 76 65 64 28 22 69 6e  ster_removed("in
3320: 63 6f 68 65 72 65 6e 74 5f 66 75 6e 64 61 6d 65  coherent_fundame
3330: 6e 74 61 6c 5f 69 6d 70 6c 73 22 2c 0a 20 20 20  ntal_impls",.   
3340: 20 20 20 20 20 22 63 6f 6e 76 65 72 74 65 64 20       "converted 
3350: 69 6e 74 6f 20 68 61 72 64 20 65 72 72 6f 72 2c  into hard error,
3360: 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 67 69 74   see https://git
3370: 68 75 62 2e 63 6f 6d 2f 72 75 73 74 2d 6c 61 6e  hub.com/rust-lan
3380: 67 2f 72 75 73 74 2f 69 73 73 75 65 73 2f 34 36  g/rust/issues/46
3390: 32 30 35 22 29 3b 0a 20 20 20 20 73 74 6f 72 65  205");.    store
33a0: 2e 72 65 67 69 73 74 65 72 5f 72 65 6d 6f 76 65  .register_remove
33b0: 64 28 22 6c 65 67 61 63 79 5f 63 6f 6e 73 74 72  d("legacy_constr
33c0: 75 63 74 6f 72 5f 76 69 73 69 62 69 6c 69 74 79  uctor_visibility
33d0: 22 2c 0a 20 20 20 20 20 20 20 20 22 63 6f 6e 76  ",.        "conv
33e0: 65 72 74 65 64 20 69 6e 74 6f 20 68 61 72 64 20  erted into hard 
33f0: 65 72 72 6f 72 2c 20 73 65 65 20 68 74 74 70 73  error, see https
3400: 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 75  ://github.com/ru
3410: 73 74 2d 6c 61 6e 67 2f 72 75 73 74 2f 69 73 73  st-lang/rust/iss
3420: 75 65 73 2f 33 39 32 30 37 22 29 3b 0a 20 20 20  ues/39207");.   
3430: 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f   store.register_
3440: 72 65 6d 6f 76 65 64 28 22 6c 65 67 61 63 79 5f  removed("legacy_
3450: 64 69 72 65 63 74 6f 72 79 5f 6f 77 6e 65 72 73  directory_owners
3460: 68 69 70 22 2c 0a 20 20 20 20 20 20 20 20 22 63  hip",.        "c
3470: 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 68 61  onverted into ha
3480: 72 64 20 65 72 72 6f 72 2c 20 73 65 65 20 68 74  rd error, see ht
3490: 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d  tps://github.com
34a0: 2f 72 75 73 74 2d 6c 61 6e 67 2f 72 75 73 74 2f  /rust-lang/rust/
34b0: 69 73 73 75 65 73 2f 33 37 38 37 32 22 29 3b 0a  issues/37872");.
34c0: 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74      store.regist
34d0: 65 72 5f 72 65 6d 6f 76 65 64 28 22 73 61 66 65  er_removed("safe
34e0: 5f 65 78 74 65 72 6e 5f 73 74 61 74 69 63 73 22  _extern_statics"
34f0: 2c 0a 20 20 20 20 20 20 20 20 22 63 6f 6e 76 65  ,.        "conve
3500: 72 74 65 64 20 69 6e 74 6f 20 68 61 72 64 20 65  rted into hard e
3510: 72 72 6f 72 2c 20 73 65 65 20 68 74 74 70 73 3a  rror, see https:
3520: 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 75 73  //github.com/rus
3530: 74 2d 6c 61 6e 67 2f 72 75 73 74 2f 69 73 73 75  t-lang/rust/issu
3540: 65 73 2f 33 36 32 34 37 22 29 3b 0a 20 20 20 20  es/36247");.    
3550: 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 72  store.register_r
3560: 65 6d 6f 76 65 64 28 22 70 61 72 65 6e 74 68 65  emoved("parenthe
3570: 73 69 7a 65 64 5f 70 61 72 61 6d 73 5f 69 6e 5f  sized_params_in_
3580: 74 79 70 65 73 5f 61 6e 64 5f 6d 6f 64 75 6c 65  types_and_module
3590: 73 22 2c 0a 20 20 20 20 20 20 20 20 22 63 6f 6e  s",.        "con
35a0: 76 65 72 74 65 64 20 69 6e 74 6f 20 68 61 72 64  verted into hard
35b0: 20 65 72 72 6f 72 2c 20 73 65 65 20 68 74 74 70   error, see http
35c0: 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72  s://github.com/r
35d0: 75 73 74 2d 6c 61 6e 67 2f 72 75 73 74 2f 69 73  ust-lang/rust/is
35e0: 73 75 65 73 2f 34 32 32 33 38 22 29 3b 0a 20 20  sues/42238");.  
35f0: 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72    store.register
3600: 5f 72 65 6d 6f 76 65 64 28 22 64 75 70 6c 69 63  _removed("duplic
3610: 61 74 65 5f 6d 61 63 72 6f 5f 65 78 70 6f 72 74  ate_macro_export
3620: 73 22 2c 0a 20 20 20 20 20 20 20 20 22 63 6f 6e  s",.        "con
3630: 76 65 72 74 65 64 20 69 6e 74 6f 20 68 61 72 64  verted into hard
3640: 20 65 72 72 6f 72 2c 20 73 65 65 20 68 74 74 70   error, see http
3650: 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72  s://github.com/r
3660: 75 73 74 2d 6c 61 6e 67 2f 72 75 73 74 2f 69 73  ust-lang/rust/is
3670: 73 75 65 73 2f 33 35 38 39 36 22 29 3b 0a 20 20  sues/35896");.  
3680: 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72    store.register
3690: 5f 72 65 6d 6f 76 65 64 28 22 6e 65 73 74 65 64  _removed("nested
36a0: 5f 69 6d 70 6c 5f 74 72 61 69 74 22 2c 0a 20 20  _impl_trait",.  
36b0: 20 20 20 20 20 20 22 63 6f 6e 76 65 72 74 65 64        "converted
36c0: 20 69 6e 74 6f 20 68 61 72 64 20 65 72 72 6f 72   into hard error
36d0: 2c 20 73 65 65 20 68 74 74 70 73 3a 2f 2f 67 69  , see https://gi
36e0: 74 68 75 62 2e 63 6f 6d 2f 72 75 73 74 2d 6c 61  thub.com/rust-la
36f0: 6e 67 2f 72 75 73 74 2f 69 73 73 75 65 73 2f 35  ng/rust/issues/5
3700: 39 30 31 34 22 29 3b 0a 20 20 20 20 73 74 6f 72  9014");.    stor
3710: 65 2e 72 65 67 69 73 74 65 72 5f 72 65 6d 6f 76  e.register_remov
3720: 65 64 28 22 70 6c 75 67 69 6e 5f 61 73 5f 6c 69  ed("plugin_as_li
3730: 62 72 61 72 79 22 2c 20 22 70 6c 75 67 69 6e 73  brary", "plugins
3740: 20 68 61 76 65 20 62 65 65 6e 20 64 65 70 72 65   have been depre
3750: 63 61 74 65 64 20 61 6e 64 20 72 65 74 69 72 65  cated and retire
3760: 64 22 29 3b 0a 7d 0a 0a 66 6e 20 72 65 67 69 73  d");.}..fn regis
3770: 74 65 72 5f 69 6e 74 65 72 6e 61 6c 73 28 73 74  ter_internals(st
3780: 6f 72 65 3a 20 26 6d 75 74 20 6c 69 6e 74 3a 3a  ore: &mut lint::
3790: 4c 69 6e 74 53 74 6f 72 65 29 20 7b 0a 20 20 20  LintStore) {.   
37a0: 20 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f   store.register_
37b0: 6c 69 6e 74 73 28 26 44 65 66 61 75 6c 74 48 61  lints(&DefaultHa
37c0: 73 68 54 79 70 65 73 3a 3a 67 65 74 5f 6c 69 6e  shTypes::get_lin
37d0: 74 73 28 29 29 3b 0a 20 20 20 20 73 74 6f 72 65  ts());.    store
37e0: 2e 72 65 67 69 73 74 65 72 5f 65 61 72 6c 79 5f  .register_early_
37f0: 70 61 73 73 28 7c 7c 20 62 6f 78 20 44 65 66 61  pass(|| box Defa
3800: 75 6c 74 48 61 73 68 54 79 70 65 73 3a 3a 6e 65  ultHashTypes::ne
3810: 77 28 29 29 3b 0a 20 20 20 20 73 74 6f 72 65 2e  w());.    store.
3820: 72 65 67 69 73 74 65 72 5f 6c 69 6e 74 73 28 26  register_lints(&
3830: 4c 69 6e 74 50 61 73 73 49 6d 70 6c 3a 3a 67 65  LintPassImpl::ge
3840: 74 5f 6c 69 6e 74 73 28 29 29 3b 0a 20 20 20 20  t_lints());.    
3850: 73 74 6f 72 65 2e 72 65 67 69 73 74 65 72 5f 65  store.register_e
3860: 61 72 6c 79 5f 70 61 73 73 28 7c 7c 20 62 6f 78  arly_pass(|| box
3870: 20 4c 69 6e 74 50 61 73 73 49 6d 70 6c 29 3b 0a   LintPassImpl);.
3880: 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69 73 74      store.regist
3890: 65 72 5f 6c 69 6e 74 73 28 26 54 79 54 79 4b 69  er_lints(&TyTyKi
38a0: 6e 64 3a 3a 67 65 74 5f 6c 69 6e 74 73 28 29 29  nd::get_lints())
38b0: 3b 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69  ;.    store.regi
38c0: 73 74 65 72 5f 6c 61 74 65 5f 70 61 73 73 28 7c  ster_late_pass(|
38d0: 7c 20 62 6f 78 20 54 79 54 79 4b 69 6e 64 29 3b  | box TyTyKind);
38e0: 0a 20 20 20 20 73 74 6f 72 65 2e 72 65 67 69 73  .    store.regis
38f0: 74 65 72 5f 67 72 6f 75 70 28 0a 20 20 20 20 20  ter_group(.     
3900: 20 20 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 20     false,.      
3910: 20 20 22 72 75 73 74 63 3a 3a 69 6e 74 65 72 6e    "rustc::intern
3920: 61 6c 22 2c 0a 20 20 20 20 20 20 20 20 4e 6f 6e  al",.        Non
3930: 65 2c 0a 20 20 20 20 20 20 20 20 76 65 63 21 5b  e,.        vec![
3940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e  .            Lin
3950: 74 49 64 3a 3a 6f 66 28 44 45 46 41 55 4c 54 5f  tId::of(DEFAULT_
3960: 48 41 53 48 5f 54 59 50 45 53 29 2c 0a 20 20 20  HASH_TYPES),.   
3970: 20 20 20 20 20 20 20 20 20 4c 69 6e 74 49 64 3a           LintId:
3980: 3a 6f 66 28 55 53 41 47 45 5f 4f 46 5f 54 59 5f  :of(USAGE_OF_TY_
3990: 54 59 4b 49 4e 44 29 2c 0a 20 20 20 20 20 20 20  TYKIND),.       
39a0: 20 20 20 20 20 4c 69 6e 74 49 64 3a 3a 6f 66 28       LintId::of(
39b0: 4c 49 4e 54 5f 50 41 53 53 5f 49 4d 50 4c 5f 57  LINT_PASS_IMPL_W
39c0: 49 54 48 4f 55 54 5f 4d 41 43 52 4f 29 2c 0a 20  ITHOUT_MACRO),. 
39d0: 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e 74 49             LintI
39e0: 64 3a 3a 6f 66 28 54 59 5f 50 41 53 53 5f 42 59  d::of(TY_PASS_BY
39f0: 5f 52 45 46 45 52 45 4e 43 45 29 2c 0a 20 20 20  _REFERENCE),.   
3a00: 20 20 20 20 20 20 20 20 20 4c 69 6e 74 49 64 3a           LintId:
3a10: 3a 6f 66 28 55 53 41 47 45 5f 4f 46 5f 51 55 41  :of(USAGE_OF_QUA
3a20: 4c 49 46 49 45 44 5f 54 59 29 2c 0a 20 20 20 20  LIFIED_TY),.    
3a30: 20 20 20 20 5d 2c 0a 20 20 20 20 29 3b 0a 7d 0a      ],.    );.}.