/
githubmirror
/
servo
Обзор
Документация
Войти
/
githubmirror
/
servo
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
support/crown/src/main.rs
85 строк
3 KB
Sam
chore: Update Rust to 1.97.1 (#47076)
08 авг 2026, 11:40
Не верифицирован
08 авг 2026, 11:40
39f05ac
Код
Авторство
О чём код?
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #![feature(rustc_private)] #![warn(rustc::internal)] #![allow(rustc::potential_query_instability)] // This rustc crates are private so they must be manually imported. extern crate rustc_ast; extern crate rustc_driver; extern crate rustc_error_messages; extern crate rustc_errors; extern crate rustc_hir; extern crate rustc_infer; extern crate rustc_interface; extern crate rustc_lint; extern crate rustc_log; extern crate rustc_macros; extern crate rustc_middle; extern crate rustc_session; extern crate rustc_span; extern crate rustc_trait_selection; extern crate rustc_type_ir; use std::path::Path; use rustc_driver::Callbacks; use rustc_interface::interface::Config; mod common; #[cfg(feature = "unrooted_must_root_lint")] mod unrooted_must_root; #[cfg(feature = "trace_in_no_trace_lint")] mod trace_in_no_trace; struct MyCallbacks; impl Callbacks for MyCallbacks { fn config(&mut self, config: &mut Config) { config.register_lints = Some(Box::new(move |sess, lint_store| { // Skip checks for proc-macro crates. if sess .opts .crate_types .contains(&rustc_session::config::CrateType::ProcMacro) { return; } #[cfg(feature = "unrooted_must_root_lint")] unrooted_must_root::register(lint_store); #[cfg(feature = "trace_in_no_trace_lint")] trace_in_no_trace::register(lint_store); })); } } /// The `crown` main function. /// /// To run `crown` manually use: /// ```bash /// RUST_BACKTRACE=1 cargo run -- \ /// "-Zcrate-attr=feature(register_tool)" \ /// "-Zcrate-attr=register_tool(crown)" tests/...` /// ``` fn main() { let handler = rustc_session::EarlyDiagCtxt::new(rustc_session::config::ErrorOutputType::default()); rustc_driver::init_logger(&handler, rustc_log::LoggerConfig::from_env("CROWN_LOG")); let mut args: Vec<_> = std::env::args().collect(); // Setting RUSTC_WRAPPER causes Cargo to pass 'rustc' as the first argument. // We're invoking the compiler programmatically, so we ignore this if args.get(1).map(Path::new).and_then(Path::file_stem) == Some("rustc".as_ref()) { args.remove(1); } // Pass cfg(crown) to rustc args.extend(["--cfg".to_owned(), "crown".to_owned()]); rustc_driver::run_compiler(&args, &mut MyCallbacks) }