diff options
| author | Jieyou Xu <jieyouxu@outlook.com> | 2025-03-18 13:16:01 +0800 | 
|---|---|---|
| committer | Jieyou Xu <jieyouxu@outlook.com> | 2025-03-23 19:08:54 +0800 | 
| commit | 0e7dbab1fc4a2cfc63bac4f5c4d283d2504f1547 (patch) | |
| tree | bf9f39c1c4343a949781da0d12e4f085e91fb5b3 /compiler/rustc_driver_impl/src | |
| parent | 60a3084f64607e86dd7715d72f11764cd500c364 (diff) | |
| download | rust-0e7dbab1fc4a2cfc63bac4f5c4d283d2504f1547.tar.gz rust-0e7dbab1fc4a2cfc63bac4f5c4d283d2504f1547.zip | |
Implement `supported-crate-types` print request
As an unstable print request.
Diffstat (limited to 'compiler/rustc_driver_impl/src')
| -rw-r--r-- | compiler/rustc_driver_impl/src/lib.rs | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs index 4ba076c64e1..37755e7d61d 100644 --- a/compiler/rustc_driver_impl/src/lib.rs +++ b/compiler/rustc_driver_impl/src/lib.rs @@ -20,7 +20,7 @@ // tidy-alphabetical-end use std::cmp::max; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, BTreeSet}; use std::ffi::OsString; use std::fmt::Write as _; use std::fs::{self, File}; @@ -61,7 +61,7 @@ use rustc_session::config::{ }; use rustc_session::getopts::{self, Matches}; use rustc_session::lint::{Lint, LintId}; -use rustc_session::output::collect_crate_types; +use rustc_session::output::{CRATE_TYPES, collect_crate_types, invalid_output_for_target}; use rustc_session::{EarlyDiagCtxt, Session, config, filesearch}; use rustc_span::FileName; use rustc_target::json::ToJson; @@ -790,6 +790,16 @@ fn print_crate_info( sess.dcx().fatal("only Apple targets currently support deployment version info") } } + SupportedCrateTypes => { + let supported_crate_types = CRATE_TYPES + .iter() + .filter(|(_, crate_type)| !invalid_output_for_target(&sess, *crate_type)) + .map(|(crate_type_sym, _)| *crate_type_sym) + .collect::<BTreeSet<_>>(); + for supported_crate_type in supported_crate_types { + println_info!("{}", supported_crate_type.as_str()); + } + } } req.out.overwrite(&crate_info, sess); | 
