• H
    Separate most of rustc::lint::builtin into a separate crate. · 532cd5f8
    Huon Wilson 提交于
    This pulls out the implementations of most built-in lints into a
    separate crate, to reduce edit-compile-test iteration times with
    librustc_lint and increase parallelism. This should enable lints to be
    refactored, added and deleted much more easily as it slashes the
    edit-compile cycle to get a minimal working compiler to test with (`make
    rustc-stage1`) from
    
        librustc -> librustc_typeck -> ... -> librustc_driver ->
            libcore -> ... -> libstd
    
    to
    
        librustc_lint -> librustc_driver -> libcore -> ... libstd
    
    which is significantly faster, mainly due to avoiding the librustc build
    itself.
    
    The intention would be to move as much as possible of the infrastructure
    into the crate too, but the plumbing is deeply intertwined with librustc
    itself at the moment. Also, there are lints for which diagnostics are
    registered directly in the compiler code, not in their own crate
    traversal, and their definitions have to remain in librustc.
    
    This is a [breaking-change] for direct users of the compiler APIs:
    callers of `rustc::session::build_session` or
    `rustc::session::build_session_` need to manually call
    `rustc_lint::register_builtins` on their return value.
    
    This should make #22206 easier.
    532cd5f8
core.rs 6.2 KB