Auto merge of #83934 - Dylan-DPC:rollup-nw5dadn, r=Dylan-DPC
Rollup of 7 pull requests Successful merges: - #82963 (Move `SharedContext` to `context.rs`) - #83829 (rustc_target: Rely on defaults more in target specs) - #83895 (Add listing of lints (eg via `-W help`) to rustdoc) - #83902 (Update LLVM to support more wasm simd ops) - #83903 (Fix typo in TokenStream documentation) - #83910 (Update cargo) - #83920 (Fix HashMap/HashSet LLDB pretty-printer after hashbrown 0.11.0) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
c051c5ddda
38 changed files with 137 additions and 148 deletions
|
@ -178,7 +178,7 @@ impl<CTX> HashStable<CTX> for LazyTokenStream {
|
||||||
/// The goal is for procedural macros to work with `TokenStream`s and `TokenTree`s
|
/// The goal is for procedural macros to work with `TokenStream`s and `TokenTree`s
|
||||||
/// instead of a representation of the abstract syntax tree.
|
/// instead of a representation of the abstract syntax tree.
|
||||||
/// Today's `TokenTree`s can still contain AST via `token::Interpolated` for
|
/// Today's `TokenTree`s can still contain AST via `token::Interpolated` for
|
||||||
/// backwards compatability.
|
/// backwards compatibility.
|
||||||
#[derive(Clone, Debug, Default, Encodable, Decodable)]
|
#[derive(Clone, Debug, Default, Encodable, Decodable)]
|
||||||
pub struct TokenStream(pub(crate) Lrc<Vec<TreeAndSpacing>>);
|
pub struct TokenStream(pub(crate) Lrc<Vec<TreeAndSpacing>>);
|
||||||
|
|
||||||
|
|
|
@ -845,7 +845,8 @@ the command line flag directly.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn describe_lints(sess: &Session, lint_store: &LintStore, loaded_plugins: bool) {
|
/// Write to stdout lint command options, together with a list of all available lints
|
||||||
|
pub fn describe_lints(sess: &Session, lint_store: &LintStore, loaded_plugins: bool) {
|
||||||
println!(
|
println!(
|
||||||
"
|
"
|
||||||
Available lint options:
|
Available lint options:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
use crate::spec::{LinkArgs, SplitDebuginfo, TargetOptions};
|
use crate::spec::{SplitDebuginfo, TargetOptions};
|
||||||
|
|
||||||
pub fn opts(os: &str) -> TargetOptions {
|
pub fn opts(os: &str) -> TargetOptions {
|
||||||
// ELF TLS is only available in macOS 10.7+. If you try to compile for 10.6
|
// ELF TLS is only available in macOS 10.7+. If you try to compile for 10.6
|
||||||
|
@ -27,10 +27,8 @@ pub fn opts(os: &str) -> TargetOptions {
|
||||||
is_like_osx: true,
|
is_like_osx: true,
|
||||||
dwarf_version: Some(2),
|
dwarf_version: Some(2),
|
||||||
has_rpath: true,
|
has_rpath: true,
|
||||||
dll_prefix: "lib".to_string(),
|
|
||||||
dll_suffix: ".dylib".to_string(),
|
dll_suffix: ".dylib".to_string(),
|
||||||
archive_format: "darwin".to_string(),
|
archive_format: "darwin".to_string(),
|
||||||
pre_link_args: LinkArgs::new(),
|
|
||||||
has_elf_tls: version >= (10, 7),
|
has_elf_tls: version >= (10, 7),
|
||||||
abi_return_struct_as_int: true,
|
abi_return_struct_as_int: true,
|
||||||
emit_debug_gdb_scripts: false,
|
emit_debug_gdb_scripts: false,
|
||||||
|
|
|
@ -13,7 +13,6 @@ pub fn target() -> Target {
|
||||||
|
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
features: "+v7,+thumb2,+soft-float,-neon".to_string(),
|
features: "+v7,+thumb2,+soft-float,-neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
mcount: "\u{1}__gnu_mcount_nc".to_string(),
|
mcount: "\u{1}__gnu_mcount_nc".to_string(),
|
||||||
|
|
|
@ -14,7 +14,6 @@ pub fn target() -> Target {
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
||||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
mcount: "\u{1}__gnu_mcount_nc".to_string(),
|
mcount: "\u{1}__gnu_mcount_nc".to_string(),
|
||||||
|
|
|
@ -18,7 +18,6 @@ pub fn target() -> Target {
|
||||||
|
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
features: "+v7,+thumb2,+soft-float,-neon".to_string(),
|
features: "+v7,+thumb2,+soft-float,-neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
mcount: "\u{1}mcount".to_string(),
|
mcount: "\u{1}mcount".to_string(),
|
||||||
|
|
|
@ -17,7 +17,6 @@ pub fn target() -> Target {
|
||||||
// target.
|
// target.
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
mcount: "\u{1}mcount".to_string(),
|
mcount: "\u{1}mcount".to_string(),
|
||||||
|
|
|
@ -11,7 +11,6 @@ pub fn target() -> Target {
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
env: "eabihf".to_string(),
|
env: "eabihf".to_string(),
|
||||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
mcount: "__mcount".to_string(),
|
mcount: "__mcount".to_string(),
|
||||||
|
|
|
@ -10,7 +10,6 @@ pub fn target() -> Target {
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
||||||
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
features: "+v7,+vfp3,-d32,+thumb2,-neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
..base
|
..base
|
||||||
|
|
|
@ -15,11 +15,8 @@ pub fn target(target_cpu: String) -> Target {
|
||||||
exe_suffix: ".elf".to_string(),
|
exe_suffix: ".elf".to_string(),
|
||||||
|
|
||||||
linker: Some("avr-gcc".to_owned()),
|
linker: Some("avr-gcc".to_owned()),
|
||||||
dynamic_linking: false,
|
|
||||||
executables: true,
|
executables: true,
|
||||||
linker_is_gnu: true,
|
linker_is_gnu: true,
|
||||||
has_rpath: false,
|
|
||||||
position_independent_executables: false,
|
|
||||||
eh_frame_header: false,
|
eh_frame_header: false,
|
||||||
pre_link_args: vec![(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu)])]
|
pre_link_args: vec![(LinkerFlavor::Gcc, vec![format!("-mmcu={}", target_cpu)])]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|
|
@ -23,13 +23,11 @@ pub fn opts() -> TargetOptions {
|
||||||
os: "fuchsia".to_string(),
|
os: "fuchsia".to_string(),
|
||||||
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
|
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
|
||||||
linker: Some("rust-lld".to_owned()),
|
linker: Some("rust-lld".to_owned()),
|
||||||
lld_flavor: LldFlavor::Ld,
|
|
||||||
dynamic_linking: true,
|
dynamic_linking: true,
|
||||||
executables: true,
|
executables: true,
|
||||||
os_family: Some("unix".to_string()),
|
os_family: Some("unix".to_string()),
|
||||||
is_like_fuchsia: true,
|
is_like_fuchsia: true,
|
||||||
linker_is_gnu: true,
|
linker_is_gnu: true,
|
||||||
has_rpath: false,
|
|
||||||
pre_link_args,
|
pre_link_args,
|
||||||
pre_link_objects: crt_objects::new(&[
|
pre_link_objects: crt_objects::new(&[
|
||||||
(LinkOutputKind::DynamicNoPicExe, &["Scrt1.o"]),
|
(LinkOutputKind::DynamicNoPicExe, &["Scrt1.o"]),
|
||||||
|
|
|
@ -5,7 +5,6 @@ pub fn opts() -> TargetOptions {
|
||||||
os: "haiku".to_string(),
|
os: "haiku".to_string(),
|
||||||
dynamic_linking: true,
|
dynamic_linking: true,
|
||||||
executables: true,
|
executables: true,
|
||||||
has_rpath: false,
|
|
||||||
os_family: Some("unix".to_string()),
|
os_family: Some("unix".to_string()),
|
||||||
relro_level: RelroLevel::Full,
|
relro_level: RelroLevel::Full,
|
||||||
linker_is_gnu: true,
|
linker_is_gnu: true,
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
use crate::spec::{LinkArgs, LinkerFlavor, LldFlavor, PanicStrategy};
|
use crate::spec::{LinkArgs, LinkerFlavor, LldFlavor, PanicStrategy, TargetOptions, TlsModel};
|
||||||
use crate::spec::{RelocModel, TargetOptions, TlsModel};
|
|
||||||
|
|
||||||
pub fn opts() -> TargetOptions {
|
pub fn opts() -> TargetOptions {
|
||||||
let mut pre_link_args = LinkArgs::new();
|
let mut pre_link_args = LinkArgs::new();
|
||||||
|
@ -19,8 +18,6 @@ pub fn opts() -> TargetOptions {
|
||||||
panic_strategy: PanicStrategy::Abort,
|
panic_strategy: PanicStrategy::Abort,
|
||||||
position_independent_executables: true,
|
position_independent_executables: true,
|
||||||
static_position_independent_executables: true,
|
static_position_independent_executables: true,
|
||||||
relocation_model: RelocModel::Pic,
|
|
||||||
os_family: None,
|
|
||||||
tls_model: TlsModel::InitialExec,
|
tls_model: TlsModel::InitialExec,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
use crate::spec::{LinkArgs, LinkerFlavor, LldFlavor, PanicStrategy};
|
use crate::spec::{LinkArgs, LinkerFlavor, LldFlavor, PanicStrategy, TargetOptions, TlsModel};
|
||||||
use crate::spec::{RelocModel, TargetOptions, TlsModel};
|
|
||||||
|
|
||||||
pub fn opts() -> TargetOptions {
|
pub fn opts() -> TargetOptions {
|
||||||
let mut pre_link_args = LinkArgs::new();
|
let mut pre_link_args = LinkArgs::new();
|
||||||
|
@ -20,8 +19,6 @@ pub fn opts() -> TargetOptions {
|
||||||
panic_strategy: PanicStrategy::Abort,
|
panic_strategy: PanicStrategy::Abort,
|
||||||
position_independent_executables: true,
|
position_independent_executables: true,
|
||||||
static_position_independent_executables: true,
|
static_position_independent_executables: true,
|
||||||
relocation_model: RelocModel::Pic,
|
|
||||||
os_family: None,
|
|
||||||
tls_model: TlsModel::InitialExec,
|
tls_model: TlsModel::InitialExec,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::spec::{LinkArgs, Target};
|
use crate::spec::Target;
|
||||||
|
|
||||||
pub fn target() -> Target {
|
pub fn target() -> Target {
|
||||||
let mut base = super::linux_musl_base::opts();
|
let mut base = super::linux_musl_base::opts();
|
||||||
|
@ -8,15 +8,11 @@ pub fn target() -> Target {
|
||||||
base.features = "-small-data,+hvx-length128b".to_string();
|
base.features = "-small-data,+hvx-length128b".to_string();
|
||||||
|
|
||||||
base.crt_static_default = false;
|
base.crt_static_default = false;
|
||||||
base.atomic_cas = true;
|
|
||||||
base.has_rpath = true;
|
base.has_rpath = true;
|
||||||
base.linker_is_gnu = false;
|
base.linker_is_gnu = false;
|
||||||
base.dynamic_linking = true;
|
base.dynamic_linking = true;
|
||||||
base.executables = true;
|
base.executables = true;
|
||||||
|
|
||||||
base.pre_link_args = LinkArgs::new();
|
|
||||||
base.post_link_args = LinkArgs::new();
|
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "hexagon-unknown-linux-musl".to_string(),
|
llvm_target: "hexagon-unknown-linux-musl".to_string(),
|
||||||
pointer_width: 32,
|
pointer_width: 32,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::spec::{LinkArgs, LinkerFlavor, PanicStrategy, TargetOptions};
|
use crate::spec::{LinkerFlavor, PanicStrategy, TargetOptions};
|
||||||
//use std::process::Command;
|
//use std::process::Command;
|
||||||
|
|
||||||
// Use GCC to locate code for crt* libraries from the host, not from L4Re. Note
|
// Use GCC to locate code for crt* libraries from the host, not from L4Re. Note
|
||||||
|
@ -13,18 +13,13 @@ use crate::spec::{LinkArgs, LinkerFlavor, PanicStrategy, TargetOptions};
|
||||||
//}
|
//}
|
||||||
|
|
||||||
pub fn opts() -> TargetOptions {
|
pub fn opts() -> TargetOptions {
|
||||||
let mut args = LinkArgs::new();
|
|
||||||
args.insert(LinkerFlavor::Gcc, vec![]);
|
|
||||||
|
|
||||||
TargetOptions {
|
TargetOptions {
|
||||||
os: "l4re".to_string(),
|
os: "l4re".to_string(),
|
||||||
env: "uclibc".to_string(),
|
env: "uclibc".to_string(),
|
||||||
linker_flavor: LinkerFlavor::Ld,
|
linker_flavor: LinkerFlavor::Ld,
|
||||||
executables: true,
|
executables: true,
|
||||||
has_elf_tls: false,
|
|
||||||
panic_strategy: PanicStrategy::Abort,
|
panic_strategy: PanicStrategy::Abort,
|
||||||
linker: Some("ld".to_string()),
|
linker: Some("ld".to_string()),
|
||||||
pre_link_args: args,
|
|
||||||
os_family: Some("unix".to_string()),
|
os_family: Some("unix".to_string()),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ pub fn target() -> Target {
|
||||||
cpu: "generic-rv32".to_string(),
|
cpu: "generic-rv32".to_string(),
|
||||||
max_atomic_width: Some(0),
|
max_atomic_width: Some(0),
|
||||||
atomic_cas: false,
|
atomic_cas: false,
|
||||||
features: String::new(),
|
|
||||||
executables: true,
|
executables: true,
|
||||||
panic_strategy: PanicStrategy::Abort,
|
panic_strategy: PanicStrategy::Abort,
|
||||||
relocation_model: RelocModel::Static,
|
relocation_model: RelocModel::Static,
|
||||||
|
|
|
@ -13,7 +13,6 @@ pub fn target() -> Target {
|
||||||
linker: Some("rust-lld".to_string()),
|
linker: Some("rust-lld".to_string()),
|
||||||
cpu: "generic-rv32".to_string(),
|
cpu: "generic-rv32".to_string(),
|
||||||
max_atomic_width: Some(32),
|
max_atomic_width: Some(32),
|
||||||
atomic_cas: true,
|
|
||||||
features: "+m,+a,+c".to_string(),
|
features: "+m,+a,+c".to_string(),
|
||||||
executables: true,
|
executables: true,
|
||||||
panic_strategy: PanicStrategy::Abort,
|
panic_strategy: PanicStrategy::Abort,
|
||||||
|
|
|
@ -14,7 +14,6 @@ pub fn target() -> Target {
|
||||||
llvm_abiname: "lp64d".to_string(),
|
llvm_abiname: "lp64d".to_string(),
|
||||||
cpu: "generic-rv64".to_string(),
|
cpu: "generic-rv64".to_string(),
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
atomic_cas: true,
|
|
||||||
features: "+m,+a,+f,+d,+c".to_string(),
|
features: "+m,+a,+f,+d,+c".to_string(),
|
||||||
executables: true,
|
executables: true,
|
||||||
panic_strategy: PanicStrategy::Abort,
|
panic_strategy: PanicStrategy::Abort,
|
||||||
|
|
|
@ -13,7 +13,6 @@ pub fn target() -> Target {
|
||||||
linker: Some("rust-lld".to_string()),
|
linker: Some("rust-lld".to_string()),
|
||||||
cpu: "generic-rv64".to_string(),
|
cpu: "generic-rv64".to_string(),
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
atomic_cas: true,
|
|
||||||
features: "+m,+a,+c".to_string(),
|
features: "+m,+a,+c".to_string(),
|
||||||
executables: true,
|
executables: true,
|
||||||
panic_strategy: PanicStrategy::Abort,
|
panic_strategy: PanicStrategy::Abort,
|
||||||
|
|
|
@ -45,9 +45,6 @@ pub fn target() -> Target {
|
||||||
|
|
||||||
main_needs_argc_argv: false,
|
main_needs_argc_argv: false,
|
||||||
|
|
||||||
// No thread-local storage (just use a static Cell)
|
|
||||||
has_elf_tls: false,
|
|
||||||
|
|
||||||
// don't have atomic compare-and-swap
|
// don't have atomic compare-and-swap
|
||||||
atomic_cas: false,
|
atomic_cas: false,
|
||||||
has_thumb_interworking: true,
|
has_thumb_interworking: true,
|
||||||
|
|
|
@ -29,7 +29,6 @@ pub fn target() -> Target {
|
||||||
|
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
features: "+vfp3,+neon".to_string(),
|
features: "+vfp3,+neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
..base
|
..base
|
||||||
|
|
|
@ -16,7 +16,6 @@ pub fn target() -> Target {
|
||||||
arch: "arm".to_string(),
|
arch: "arm".to_string(),
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
features: "+vfp3,+neon".to_string(),
|
features: "+vfp3,+neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
..base
|
..base
|
||||||
},
|
},
|
||||||
|
|
|
@ -17,7 +17,6 @@ pub fn target() -> Target {
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
// Info about features at https://wiki.debian.org/ArmHardFloatPort
|
||||||
features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(),
|
features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
..base
|
..base
|
||||||
|
|
|
@ -21,7 +21,6 @@ pub fn target() -> Target {
|
||||||
// target.
|
// target.
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(),
|
features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".to_string(),
|
||||||
cpu: "generic".to_string(),
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
unsupported_abis: super::arm_base::unsupported_abis(),
|
unsupported_abis: super::arm_base::unsupported_abis(),
|
||||||
mcount: "\u{1}mcount".to_string(),
|
mcount: "\u{1}mcount".to_string(),
|
||||||
|
|
|
@ -12,7 +12,6 @@ pub fn opts() -> TargetOptions {
|
||||||
os_family: Some("unix".to_string()),
|
os_family: Some("unix".to_string()),
|
||||||
linker_is_gnu: true,
|
linker_is_gnu: true,
|
||||||
has_rpath: true,
|
has_rpath: true,
|
||||||
position_independent_executables: false,
|
|
||||||
has_elf_tls: true,
|
has_elf_tls: true,
|
||||||
crt_static_default: true,
|
crt_static_default: true,
|
||||||
crt_static_respected: true,
|
crt_static_respected: true,
|
||||||
|
|
|
@ -75,7 +75,6 @@ pub fn options() -> TargetOptions {
|
||||||
exe_suffix: ".wasm".to_string(),
|
exe_suffix: ".wasm".to_string(),
|
||||||
dll_prefix: String::new(),
|
dll_prefix: String::new(),
|
||||||
dll_suffix: ".wasm".to_string(),
|
dll_suffix: ".wasm".to_string(),
|
||||||
linker_is_gnu: false,
|
|
||||||
eh_frame_header: false,
|
eh_frame_header: false,
|
||||||
|
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
|
|
|
@ -71,8 +71,6 @@ pub fn opts() -> TargetOptions {
|
||||||
dll_prefix: String::new(),
|
dll_prefix: String::new(),
|
||||||
dll_suffix: ".dll".to_string(),
|
dll_suffix: ".dll".to_string(),
|
||||||
exe_suffix: ".exe".to_string(),
|
exe_suffix: ".exe".to_string(),
|
||||||
staticlib_prefix: "lib".to_string(),
|
|
||||||
staticlib_suffix: ".a".to_string(),
|
|
||||||
os_family: Some("windows".to_string()),
|
os_family: Some("windows".to_string()),
|
||||||
is_like_windows: true,
|
is_like_windows: true,
|
||||||
allows_weak_linkage: false,
|
allows_weak_linkage: false,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use std::iter;
|
use std::iter;
|
||||||
|
|
||||||
use super::{LinkerFlavor, LldFlavor, PanicStrategy, Target, TargetOptions};
|
use super::{LinkerFlavor, LldFlavor, Target, TargetOptions};
|
||||||
|
|
||||||
pub fn target() -> Target {
|
pub fn target() -> Target {
|
||||||
const PRE_LINK_ARGS: &[&str] = &[
|
const PRE_LINK_ARGS: &[&str] = &[
|
||||||
|
@ -56,12 +56,10 @@ pub fn target() -> Target {
|
||||||
env: "sgx".into(),
|
env: "sgx".into(),
|
||||||
vendor: "fortanix".into(),
|
vendor: "fortanix".into(),
|
||||||
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
|
linker_flavor: LinkerFlavor::Lld(LldFlavor::Ld),
|
||||||
dynamic_linking: false,
|
|
||||||
executables: true,
|
executables: true,
|
||||||
linker_is_gnu: true,
|
linker_is_gnu: true,
|
||||||
linker: Some("rust-lld".to_owned()),
|
linker: Some("rust-lld".to_owned()),
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
panic_strategy: PanicStrategy::Unwind,
|
|
||||||
cpu: "x86-64".into(),
|
cpu: "x86-64".into(),
|
||||||
features: "+rdrnd,+rdseed,+lvi-cfi,+lvi-load-hardening".into(),
|
features: "+rdrnd,+rdseed,+lvi-cfi,+lvi-load-hardening".into(),
|
||||||
llvm_args: vec!["--x86-experimental-lvi-inline-asm-hardening".into()],
|
llvm_args: vec!["--x86-experimental-lvi-inline-asm-hardening".into()],
|
||||||
|
|
|
@ -527,20 +527,22 @@ class StdHashMapSyntheticProvider:
|
||||||
def update(self):
|
def update(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
table = self.table()
|
table = self.table()
|
||||||
capacity = table.GetChildMemberWithName("bucket_mask").GetValueAsUnsigned() + 1
|
inner_table = table.GetChildMemberWithName("table")
|
||||||
ctrl = table.GetChildMemberWithName("ctrl").GetChildAtIndex(0)
|
|
||||||
|
|
||||||
self.size = table.GetChildMemberWithName("items").GetValueAsUnsigned()
|
capacity = inner_table.GetChildMemberWithName("bucket_mask").GetValueAsUnsigned() + 1
|
||||||
|
ctrl = inner_table.GetChildMemberWithName("ctrl").GetChildAtIndex(0)
|
||||||
|
|
||||||
|
self.size = inner_table.GetChildMemberWithName("items").GetValueAsUnsigned()
|
||||||
self.pair_type = table.type.template_args[0]
|
self.pair_type = table.type.template_args[0]
|
||||||
if self.pair_type.IsTypedefType():
|
if self.pair_type.IsTypedefType():
|
||||||
self.pair_type = self.pair_type.GetTypedefedType()
|
self.pair_type = self.pair_type.GetTypedefedType()
|
||||||
self.pair_type_size = self.pair_type.GetByteSize()
|
self.pair_type_size = self.pair_type.GetByteSize()
|
||||||
|
|
||||||
self.new_layout = not table.GetChildMemberWithName("data").IsValid()
|
self.new_layout = not inner_table.GetChildMemberWithName("data").IsValid()
|
||||||
if self.new_layout:
|
if self.new_layout:
|
||||||
self.data_ptr = ctrl.Cast(self.pair_type.GetPointerType())
|
self.data_ptr = ctrl.Cast(self.pair_type.GetPointerType())
|
||||||
else:
|
else:
|
||||||
self.data_ptr = table.GetChildMemberWithName("data").GetChildAtIndex(0)
|
self.data_ptr = inner_table.GetChildMemberWithName("data").GetChildAtIndex(0)
|
||||||
|
|
||||||
u8_type = self.valobj.GetTarget().GetBasicType(eBasicTypeUnsignedChar)
|
u8_type = self.valobj.GetTarget().GetBasicType(eBasicTypeUnsignedChar)
|
||||||
u8_type_size = self.valobj.GetTarget().GetBasicType(eBasicTypeUnsignedChar).GetByteSize()
|
u8_type_size = self.valobj.GetTarget().GetBasicType(eBasicTypeUnsignedChar).GetByteSize()
|
||||||
|
@ -563,7 +565,7 @@ class StdHashMapSyntheticProvider:
|
||||||
# HashSet wraps either std HashMap or hashbrown::HashSet, which both
|
# HashSet wraps either std HashMap or hashbrown::HashSet, which both
|
||||||
# wrap hashbrown::HashMap, so either way we "unwrap" twice.
|
# wrap hashbrown::HashMap, so either way we "unwrap" twice.
|
||||||
hashbrown_hashmap = self.valobj.GetChildAtIndex(0).GetChildAtIndex(0)
|
hashbrown_hashmap = self.valobj.GetChildAtIndex(0).GetChildAtIndex(0)
|
||||||
return hashbrown_hashmap.GetChildMemberWithName("table").GetChildMemberWithName("table")
|
return hashbrown_hashmap.GetChildMemberWithName("table")
|
||||||
|
|
||||||
def has_children(self):
|
def has_children(self):
|
||||||
# type: () -> bool
|
# type: () -> bool
|
||||||
|
|
|
@ -97,8 +97,7 @@ crate struct Options {
|
||||||
crate maybe_sysroot: Option<PathBuf>,
|
crate maybe_sysroot: Option<PathBuf>,
|
||||||
/// Lint information passed over the command-line.
|
/// Lint information passed over the command-line.
|
||||||
crate lint_opts: Vec<(String, Level)>,
|
crate lint_opts: Vec<(String, Level)>,
|
||||||
/// Whether to ask rustc to describe the lints it knows. Practically speaking, this will not be
|
/// Whether to ask rustc to describe the lints it knows.
|
||||||
/// used, since we abort if we have no input file, but it's included for completeness.
|
|
||||||
crate describe_lints: bool,
|
crate describe_lints: bool,
|
||||||
/// What level to cap lints at.
|
/// What level to cap lints at.
|
||||||
crate lint_cap: Option<Level>,
|
crate lint_cap: Option<Level>,
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::path::PathBuf;
|
use std::path::{Path, PathBuf};
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::{channel, Receiver};
|
||||||
|
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||||
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
|
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
use rustc_session::Session;
|
use rustc_session::Session;
|
||||||
|
@ -16,10 +16,7 @@ use rustc_span::{symbol::sym, Symbol};
|
||||||
use super::cache::{build_index, ExternalLocation};
|
use super::cache::{build_index, ExternalLocation};
|
||||||
use super::print_item::{full_path, item_path, print_item};
|
use super::print_item::{full_path, item_path, print_item};
|
||||||
use super::write_shared::write_shared;
|
use super::write_shared::write_shared;
|
||||||
use super::{
|
use super::{print_sidebar, settings, AllTypes, NameDoc, StylePath, BASIC_KEYWORDS, CURRENT_DEPTH};
|
||||||
print_sidebar, settings, AllTypes, NameDoc, SharedContext, StylePath, BASIC_KEYWORDS,
|
|
||||||
CURRENT_DEPTH,
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::clean::{self, AttributesExt};
|
use crate::clean::{self, AttributesExt};
|
||||||
use crate::config::RenderOptions;
|
use crate::config::RenderOptions;
|
||||||
|
@ -78,6 +75,74 @@ crate struct Context<'tcx> {
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
rustc_data_structures::static_assert_size!(Context<'_>, 152);
|
rustc_data_structures::static_assert_size!(Context<'_>, 152);
|
||||||
|
|
||||||
|
/// Shared mutable state used in [`Context`] and elsewhere.
|
||||||
|
crate struct SharedContext<'tcx> {
|
||||||
|
crate tcx: TyCtxt<'tcx>,
|
||||||
|
/// The path to the crate root source minus the file name.
|
||||||
|
/// Used for simplifying paths to the highlighted source code files.
|
||||||
|
crate src_root: PathBuf,
|
||||||
|
/// This describes the layout of each page, and is not modified after
|
||||||
|
/// creation of the context (contains info like the favicon and added html).
|
||||||
|
crate layout: layout::Layout,
|
||||||
|
/// This flag indicates whether `[src]` links should be generated or not. If
|
||||||
|
/// the source files are present in the html rendering, then this will be
|
||||||
|
/// `true`.
|
||||||
|
crate include_sources: bool,
|
||||||
|
/// The local file sources we've emitted and their respective url-paths.
|
||||||
|
crate local_sources: FxHashMap<PathBuf, String>,
|
||||||
|
/// Whether the collapsed pass ran
|
||||||
|
collapsed: bool,
|
||||||
|
/// The base-URL of the issue tracker for when an item has been tagged with
|
||||||
|
/// an issue number.
|
||||||
|
pub(super) issue_tracker_base_url: Option<String>,
|
||||||
|
/// The directories that have already been created in this doc run. Used to reduce the number
|
||||||
|
/// of spurious `create_dir_all` calls.
|
||||||
|
created_dirs: RefCell<FxHashSet<PathBuf>>,
|
||||||
|
/// This flag indicates whether listings of modules (in the side bar and documentation itself)
|
||||||
|
/// should be ordered alphabetically or in order of appearance (in the source code).
|
||||||
|
pub(super) sort_modules_alphabetically: bool,
|
||||||
|
/// Additional CSS files to be added to the generated docs.
|
||||||
|
crate style_files: Vec<StylePath>,
|
||||||
|
/// Suffix to be added on resource files (if suffix is "-v2" then "light.css" becomes
|
||||||
|
/// "light-v2.css").
|
||||||
|
crate resource_suffix: String,
|
||||||
|
/// Optional path string to be used to load static files on output pages. If not set, uses
|
||||||
|
/// combinations of `../` to reach the documentation root.
|
||||||
|
crate static_root_path: Option<String>,
|
||||||
|
/// The fs handle we are working with.
|
||||||
|
crate fs: DocFS,
|
||||||
|
/// The default edition used to parse doctests.
|
||||||
|
crate edition: Edition,
|
||||||
|
pub(super) codes: ErrorCodes,
|
||||||
|
pub(super) playground: Option<markdown::Playground>,
|
||||||
|
all: RefCell<AllTypes>,
|
||||||
|
/// Storage for the errors produced while generating documentation so they
|
||||||
|
/// can be printed together at the end.
|
||||||
|
errors: Receiver<String>,
|
||||||
|
/// `None` by default, depends on the `generate-redirect-map` option flag. If this field is set
|
||||||
|
/// to `Some(...)`, it'll store redirections and then generate a JSON file at the top level of
|
||||||
|
/// the crate.
|
||||||
|
redirections: Option<RefCell<FxHashMap<String, String>>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SharedContext<'_> {
|
||||||
|
crate fn ensure_dir(&self, dst: &Path) -> Result<(), Error> {
|
||||||
|
let mut dirs = self.created_dirs.borrow_mut();
|
||||||
|
if !dirs.contains(dst) {
|
||||||
|
try_err!(self.fs.create_dir_all(dst), dst);
|
||||||
|
dirs.insert(dst.to_path_buf());
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Based on whether the `collapse-docs` pass was run, return either the `doc_value` or the
|
||||||
|
/// `collapsed_doc_value` of the given item.
|
||||||
|
crate fn maybe_collapsed_doc_value<'a>(&self, item: &'a clean::Item) -> Option<String> {
|
||||||
|
if self.collapsed { item.collapsed_doc_value() } else { item.doc_value() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'tcx> Context<'tcx> {
|
impl<'tcx> Context<'tcx> {
|
||||||
pub(super) fn tcx(&self) -> TyCtxt<'tcx> {
|
pub(super) fn tcx(&self) -> TyCtxt<'tcx> {
|
||||||
self.shared.tcx
|
self.shared.tcx
|
||||||
|
|
|
@ -35,32 +35,30 @@ mod write_shared;
|
||||||
crate use context::*;
|
crate use context::*;
|
||||||
crate use write_shared::FILES_UNVERSIONED;
|
crate use write_shared::FILES_UNVERSIONED;
|
||||||
|
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::Cell;
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::default::Default;
|
use std::default::Default;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::PathBuf;
|
||||||
use std::str;
|
use std::str;
|
||||||
use std::string::ToString;
|
use std::string::ToString;
|
||||||
use std::sync::mpsc::Receiver;
|
|
||||||
|
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use rustc_ast_pretty::pprust;
|
use rustc_ast_pretty::pprust;
|
||||||
use rustc_attr::{Deprecation, StabilityLevel};
|
use rustc_attr::{Deprecation, StabilityLevel};
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_hir::def::CtorKind;
|
use rustc_hir::def::CtorKind;
|
||||||
use rustc_hir::def_id::DefId;
|
use rustc_hir::def_id::DefId;
|
||||||
use rustc_hir::Mutability;
|
use rustc_hir::Mutability;
|
||||||
use rustc_middle::middle::stability;
|
use rustc_middle::middle::stability;
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
use rustc_span::edition::Edition;
|
|
||||||
use rustc_span::symbol::{kw, sym, Symbol};
|
use rustc_span::symbol::{kw, sym, Symbol};
|
||||||
use serde::ser::SerializeSeq;
|
use serde::ser::SerializeSeq;
|
||||||
use serde::{Serialize, Serializer};
|
use serde::{Serialize, Serializer};
|
||||||
|
|
||||||
use crate::clean::{self, GetDefId, RenderedLink, SelfTy, TypeKind};
|
use crate::clean::{self, GetDefId, RenderedLink, SelfTy, TypeKind};
|
||||||
use crate::docfs::{DocFS, PathError};
|
use crate::docfs::PathError;
|
||||||
use crate::error::Error;
|
use crate::error::Error;
|
||||||
use crate::formats::cache::Cache;
|
use crate::formats::cache::Cache;
|
||||||
use crate::formats::item_type::ItemType;
|
use crate::formats::item_type::ItemType;
|
||||||
|
@ -70,8 +68,7 @@ use crate::html::format::{
|
||||||
href, print_abi_with_space, print_default_space, print_generic_bounds, print_where_clause,
|
href, print_abi_with_space, print_default_space, print_generic_bounds, print_where_clause,
|
||||||
Buffer, PrintWithSpace,
|
Buffer, PrintWithSpace,
|
||||||
};
|
};
|
||||||
use crate::html::layout;
|
use crate::html::markdown::{Markdown, MarkdownHtml, MarkdownSummaryLine};
|
||||||
use crate::html::markdown::{self, ErrorCodes, Markdown, MarkdownHtml, MarkdownSummaryLine};
|
|
||||||
|
|
||||||
/// A pair of name and its optional document.
|
/// A pair of name and its optional document.
|
||||||
crate type NameDoc = (String, Option<String>);
|
crate type NameDoc = (String, Option<String>);
|
||||||
|
@ -82,74 +79,6 @@ crate fn ensure_trailing_slash(v: &str) -> impl fmt::Display + '_ {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shared mutable state used in [`Context`] and elsewhere.
|
|
||||||
crate struct SharedContext<'tcx> {
|
|
||||||
crate tcx: TyCtxt<'tcx>,
|
|
||||||
/// The path to the crate root source minus the file name.
|
|
||||||
/// Used for simplifying paths to the highlighted source code files.
|
|
||||||
crate src_root: PathBuf,
|
|
||||||
/// This describes the layout of each page, and is not modified after
|
|
||||||
/// creation of the context (contains info like the favicon and added html).
|
|
||||||
crate layout: layout::Layout,
|
|
||||||
/// This flag indicates whether `[src]` links should be generated or not. If
|
|
||||||
/// the source files are present in the html rendering, then this will be
|
|
||||||
/// `true`.
|
|
||||||
crate include_sources: bool,
|
|
||||||
/// The local file sources we've emitted and their respective url-paths.
|
|
||||||
crate local_sources: FxHashMap<PathBuf, String>,
|
|
||||||
/// Whether the collapsed pass ran
|
|
||||||
collapsed: bool,
|
|
||||||
/// The base-URL of the issue tracker for when an item has been tagged with
|
|
||||||
/// an issue number.
|
|
||||||
issue_tracker_base_url: Option<String>,
|
|
||||||
/// The directories that have already been created in this doc run. Used to reduce the number
|
|
||||||
/// of spurious `create_dir_all` calls.
|
|
||||||
created_dirs: RefCell<FxHashSet<PathBuf>>,
|
|
||||||
/// This flag indicates whether listings of modules (in the side bar and documentation itself)
|
|
||||||
/// should be ordered alphabetically or in order of appearance (in the source code).
|
|
||||||
sort_modules_alphabetically: bool,
|
|
||||||
/// Additional CSS files to be added to the generated docs.
|
|
||||||
crate style_files: Vec<StylePath>,
|
|
||||||
/// Suffix to be added on resource files (if suffix is "-v2" then "light.css" becomes
|
|
||||||
/// "light-v2.css").
|
|
||||||
crate resource_suffix: String,
|
|
||||||
/// Optional path string to be used to load static files on output pages. If not set, uses
|
|
||||||
/// combinations of `../` to reach the documentation root.
|
|
||||||
crate static_root_path: Option<String>,
|
|
||||||
/// The fs handle we are working with.
|
|
||||||
crate fs: DocFS,
|
|
||||||
/// The default edition used to parse doctests.
|
|
||||||
crate edition: Edition,
|
|
||||||
codes: ErrorCodes,
|
|
||||||
playground: Option<markdown::Playground>,
|
|
||||||
all: RefCell<AllTypes>,
|
|
||||||
/// Storage for the errors produced while generating documentation so they
|
|
||||||
/// can be printed together at the end.
|
|
||||||
errors: Receiver<String>,
|
|
||||||
/// `None` by default, depends on the `generate-redirect-map` option flag. If this field is set
|
|
||||||
/// to `Some(...)`, it'll store redirections and then generate a JSON file at the top level of
|
|
||||||
/// the crate.
|
|
||||||
redirections: Option<RefCell<FxHashMap<String, String>>>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl SharedContext<'_> {
|
|
||||||
crate fn ensure_dir(&self, dst: &Path) -> Result<(), Error> {
|
|
||||||
let mut dirs = self.created_dirs.borrow_mut();
|
|
||||||
if !dirs.contains(dst) {
|
|
||||||
try_err!(self.fs.create_dir_all(dst), dst);
|
|
||||||
dirs.insert(dst.to_path_buf());
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Based on whether the `collapse-docs` pass was run, return either the `doc_value` or the
|
|
||||||
/// `collapsed_doc_value` of the given item.
|
|
||||||
crate fn maybe_collapsed_doc_value<'a>(&self, item: &'a clean::Item) -> Option<String> {
|
|
||||||
if self.collapsed { item.collapsed_doc_value() } else { item.doc_value() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper structs for rendering items/sidebars and carrying along contextual
|
// Helper structs for rendering items/sidebars and carrying along contextual
|
||||||
// information
|
// information
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ use std::default::Default;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::process;
|
use std::process;
|
||||||
|
|
||||||
use rustc_driver::abort_on_err;
|
use rustc_driver::{abort_on_err, describe_lints};
|
||||||
use rustc_errors::ErrorReported;
|
use rustc_errors::ErrorReported;
|
||||||
use rustc_interface::interface;
|
use rustc_interface::interface;
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
|
@ -705,6 +705,12 @@ fn main_options(options: config::Options) -> MainResult {
|
||||||
compiler.enter(|queries| {
|
compiler.enter(|queries| {
|
||||||
let sess = compiler.session();
|
let sess = compiler.session();
|
||||||
|
|
||||||
|
if sess.opts.describe_lints {
|
||||||
|
let (_, lint_store) = &*queries.register_plugins()?.peek();
|
||||||
|
describe_lints(sess, lint_store, true);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
// We need to hold on to the complete resolver, so we cause everything to be
|
// We need to hold on to the complete resolver, so we cause everything to be
|
||||||
// cloned for the analysis passes to use. Suboptimal, but necessary in the
|
// cloned for the analysis passes to use. Suboptimal, but necessary in the
|
||||||
// current architecture.
|
// current architecture.
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0abbcc04d8375661a0637896b9ae5dc37a99dc70
|
Subproject commit 171991e30966695fd118c90ebbb2eeec5098ccce
|
8
src/test/rustdoc-ui/issue-83883-describe-lints.rs
Normal file
8
src/test/rustdoc-ui/issue-83883-describe-lints.rs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
// compile-flags: -W help
|
||||||
|
// check-pass
|
||||||
|
//
|
||||||
|
// ignore-tidy-linelength
|
||||||
|
//
|
||||||
|
// normalize-stdout-test: "( +name default meaning\n +---- ------- -------\n)?( *[[:word:]:-]+ (allow |warn |deny |forbid ) [^\n]+\n)+" -> " $$NAMES $$LEVELS $$MEANINGS"
|
||||||
|
// normalize-stdout-test: " +name sub-lints\n +---- ---------\n( *[[:word:]:-]+ [^\n]+\n)+" -> " $$NAMES $$SUB_LINTS"
|
||||||
|
// normalize-stdout-test: " +rustdoc::all( (rustdoc::[[:word:]-]+, )*rustdoc::[[:word:]-]+)?" -> " rustdoc::all $$GROUPS$4"
|
25
src/test/rustdoc-ui/issue-83883-describe-lints.stdout
Normal file
25
src/test/rustdoc-ui/issue-83883-describe-lints.stdout
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
Available lint options:
|
||||||
|
-W <foo> Warn about <foo>
|
||||||
|
-A <foo> Allow <foo>
|
||||||
|
-D <foo> Deny <foo>
|
||||||
|
-F <foo> Forbid <foo> (deny <foo> and all attempts to override)
|
||||||
|
|
||||||
|
|
||||||
|
Lint checks provided by rustc:
|
||||||
|
|
||||||
|
$NAMES $LEVELS $MEANINGS
|
||||||
|
|
||||||
|
Lint groups provided by rustc:
|
||||||
|
|
||||||
|
$NAMES $SUB_LINTS
|
||||||
|
|
||||||
|
Lint checks provided by plugins loaded by this crate:
|
||||||
|
|
||||||
|
$NAMES $LEVELS $MEANINGS
|
||||||
|
|
||||||
|
Lint groups provided by plugins loaded by this crate:
|
||||||
|
|
||||||
|
rustdoc::all $GROUPS
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3c44c3c4b7900b8b13c85ead25ccaa8abb7d8989
|
Subproject commit 65d57e6f384c2317f76626eac116f683e2b63665
|
Loading…
Add table
Reference in a new issue