Use lint via `lint_defs` instead of `lints` This gets rid of a blocking dependency edge from `rustc_lint->rustc_analysis->rustc_hir_typeck->rustc_interface` 
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.