inline format!() args up to and including rustc_codegen_llvm
This commit is contained in:
parent
2e0136a131
commit
3ce90b1649
72 changed files with 411 additions and 481 deletions
|
@ -748,7 +748,7 @@ fn link_natively<'a>(
|
|||
|
||||
for print in &sess.opts.prints {
|
||||
if print.kind == PrintKind::LinkArgs {
|
||||
let content = format!("{:?}", cmd);
|
||||
let content = format!("{cmd:?}");
|
||||
print.out.overwrite(&content, sess);
|
||||
}
|
||||
}
|
||||
|
@ -1236,22 +1236,21 @@ fn link_sanitizer_runtime(sess: &Session, linker: &mut dyn Linker, name: &str) {
|
|||
}
|
||||
}
|
||||
|
||||
let channel = option_env!("CFG_RELEASE_CHANNEL")
|
||||
.map(|channel| format!("-{}", channel))
|
||||
.unwrap_or_default();
|
||||
let channel =
|
||||
option_env!("CFG_RELEASE_CHANNEL").map(|channel| format!("-{channel}")).unwrap_or_default();
|
||||
|
||||
if sess.target.is_like_osx {
|
||||
// On Apple platforms, the sanitizer is always built as a dylib, and
|
||||
// LLVM will link to `@rpath/*.dylib`, so we need to specify an
|
||||
// rpath to the library as well (the rpath should be absolute, see
|
||||
// PR #41352 for details).
|
||||
let filename = format!("rustc{}_rt.{}", channel, name);
|
||||
let filename = format!("rustc{channel}_rt.{name}");
|
||||
let path = find_sanitizer_runtime(&sess, &filename);
|
||||
let rpath = path.to_str().expect("non-utf8 component in path");
|
||||
linker.args(&["-Wl,-rpath", "-Xlinker", rpath]);
|
||||
linker.link_dylib(&filename, false, true);
|
||||
} else {
|
||||
let filename = format!("librustc{}_rt.{}.a", channel, name);
|
||||
let filename = format!("librustc{channel}_rt.{name}.a");
|
||||
let path = find_sanitizer_runtime(&sess, &filename).join(&filename);
|
||||
linker.link_whole_rlib(&path);
|
||||
}
|
||||
|
@ -1415,12 +1414,12 @@ fn print_native_static_libs(
|
|||
} else if sess.target.linker_flavor.is_gnu() {
|
||||
Some(format!("-l{}{}", if verbatim { ":" } else { "" }, name))
|
||||
} else {
|
||||
Some(format!("-l{}", name))
|
||||
Some(format!("-l{name}"))
|
||||
}
|
||||
}
|
||||
NativeLibKind::Framework { .. } => {
|
||||
// ld-only syntax, since there are no frameworks in MSVC
|
||||
Some(format!("-framework {}", name))
|
||||
Some(format!("-framework {name}"))
|
||||
}
|
||||
// These are included, no need to print them
|
||||
NativeLibKind::Static { bundle: None | Some(true), .. }
|
||||
|
@ -1457,12 +1456,12 @@ fn print_native_static_libs(
|
|||
// `foo.lib` file if the dll doesn't actually export any symbols, so we
|
||||
// check to see if the file is there and just omit linking to it if it's
|
||||
// not present.
|
||||
let name = format!("{}.dll.lib", lib);
|
||||
let name = format!("{lib}.dll.lib");
|
||||
if path.join(&name).exists() {
|
||||
lib_args.push(name);
|
||||
}
|
||||
} else {
|
||||
lib_args.push(format!("-l{}", lib));
|
||||
lib_args.push(format!("-l{lib}"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1628,8 +1627,8 @@ fn exec_linker(
|
|||
write!(f, "\"")?;
|
||||
for c in self.arg.chars() {
|
||||
match c {
|
||||
'"' => write!(f, "\\{}", c)?,
|
||||
c => write!(f, "{}", c)?,
|
||||
'"' => write!(f, "\\{c}")?,
|
||||
c => write!(f, "{c}")?,
|
||||
}
|
||||
}
|
||||
write!(f, "\"")?;
|
||||
|
@ -1646,8 +1645,8 @@ fn exec_linker(
|
|||
// ensure the line is interpreted as one whole argument.
|
||||
for c in self.arg.chars() {
|
||||
match c {
|
||||
'\\' | ' ' => write!(f, "\\{}", c)?,
|
||||
c => write!(f, "{}", c)?,
|
||||
'\\' | ' ' => write!(f, "\\{c}")?,
|
||||
c => write!(f, "{c}")?,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2284,7 +2283,7 @@ fn add_order_independent_options(
|
|||
} else {
|
||||
""
|
||||
};
|
||||
cmd.arg(format!("--dynamic-linker={}ld.so.1", prefix));
|
||||
cmd.arg(format!("--dynamic-linker={prefix}ld.so.1"));
|
||||
}
|
||||
|
||||
if sess.target.eh_frame_header {
|
||||
|
|
|
@ -309,7 +309,7 @@ impl<'a> GccLinker<'a> {
|
|||
self.linker_arg(&format!("-plugin-opt=sample-profile={}", path.display()));
|
||||
};
|
||||
self.linker_args(&[
|
||||
&format!("-plugin-opt={}", opt_level),
|
||||
&format!("-plugin-opt={opt_level}"),
|
||||
&format!("-plugin-opt=mcpu={}", self.target_cpu),
|
||||
]);
|
||||
}
|
||||
|
@ -487,7 +487,7 @@ impl<'a> Linker for GccLinker<'a> {
|
|||
|
||||
fn link_rust_dylib(&mut self, lib: &str, _path: &Path) {
|
||||
self.hint_dynamic();
|
||||
self.cmd.arg(format!("-l{}", lib));
|
||||
self.cmd.arg(format!("-l{lib}"));
|
||||
}
|
||||
|
||||
fn link_framework(&mut self, framework: &str, as_needed: bool) {
|
||||
|
@ -671,8 +671,8 @@ impl<'a> Linker for GccLinker<'a> {
|
|||
let res: io::Result<()> = try {
|
||||
let mut f = BufWriter::new(File::create(&path)?);
|
||||
for sym in symbols {
|
||||
debug!(" _{}", sym);
|
||||
writeln!(f, "_{}", sym)?;
|
||||
debug!(" _{sym}");
|
||||
writeln!(f, "_{sym}")?;
|
||||
}
|
||||
};
|
||||
if let Err(error) = res {
|
||||
|
@ -686,8 +686,8 @@ impl<'a> Linker for GccLinker<'a> {
|
|||
// because LD doesn't like when it's empty
|
||||
writeln!(f, "EXPORTS")?;
|
||||
for symbol in symbols {
|
||||
debug!(" _{}", symbol);
|
||||
writeln!(f, " {}", symbol)?;
|
||||
debug!(" _{symbol}");
|
||||
writeln!(f, " {symbol}")?;
|
||||
}
|
||||
};
|
||||
if let Err(error) = res {
|
||||
|
@ -701,8 +701,8 @@ impl<'a> Linker for GccLinker<'a> {
|
|||
if !symbols.is_empty() {
|
||||
writeln!(f, " global:")?;
|
||||
for sym in symbols {
|
||||
debug!(" {};", sym);
|
||||
writeln!(f, " {};", sym)?;
|
||||
debug!(" {sym};");
|
||||
writeln!(f, " {sym};")?;
|
||||
}
|
||||
}
|
||||
writeln!(f, "\n local:\n *;\n}};")?;
|
||||
|
@ -837,7 +837,7 @@ impl<'a> Linker for MsvcLinker<'a> {
|
|||
// `foo.lib` file if the dll doesn't actually export any symbols, so we
|
||||
// check to see if the file is there and just omit linking to it if it's
|
||||
// not present.
|
||||
let name = format!("{}.dll.lib", lib);
|
||||
let name = format!("{lib}.dll.lib");
|
||||
if path.join(&name).exists() {
|
||||
self.cmd.arg(name);
|
||||
}
|
||||
|
@ -977,8 +977,8 @@ impl<'a> Linker for MsvcLinker<'a> {
|
|||
writeln!(f, "LIBRARY")?;
|
||||
writeln!(f, "EXPORTS")?;
|
||||
for symbol in symbols {
|
||||
debug!(" _{}", symbol);
|
||||
writeln!(f, " {}", symbol)?;
|
||||
debug!(" _{symbol}");
|
||||
writeln!(f, " {symbol}")?;
|
||||
}
|
||||
};
|
||||
if let Err(error) = res {
|
||||
|
@ -992,7 +992,7 @@ impl<'a> Linker for MsvcLinker<'a> {
|
|||
fn subsystem(&mut self, subsystem: &str) {
|
||||
// Note that previous passes of the compiler validated this subsystem,
|
||||
// so we just blindly pass it to the linker.
|
||||
self.cmd.arg(&format!("/SUBSYSTEM:{}", subsystem));
|
||||
self.cmd.arg(&format!("/SUBSYSTEM:{subsystem}"));
|
||||
|
||||
// Windows has two subsystems we're interested in right now, the console
|
||||
// and windows subsystems. These both implicitly have different entry
|
||||
|
@ -1147,7 +1147,7 @@ impl<'a> Linker for EmLinker<'a> {
|
|||
&symbols.iter().map(|sym| "_".to_owned() + sym).collect::<Vec<_>>(),
|
||||
)
|
||||
.unwrap();
|
||||
debug!("{}", encoded);
|
||||
debug!("{encoded}");
|
||||
|
||||
arg.push(encoded);
|
||||
|
||||
|
@ -1350,7 +1350,7 @@ impl<'a> Linker for L4Bender<'a> {
|
|||
}
|
||||
fn link_staticlib(&mut self, lib: &str, _verbatim: bool) {
|
||||
self.hint_static();
|
||||
self.cmd.arg(format!("-PC{}", lib));
|
||||
self.cmd.arg(format!("-PC{lib}"));
|
||||
}
|
||||
fn link_rlib(&mut self, lib: &Path) {
|
||||
self.hint_static();
|
||||
|
@ -1399,7 +1399,7 @@ impl<'a> Linker for L4Bender<'a> {
|
|||
|
||||
fn link_whole_staticlib(&mut self, lib: &str, _verbatim: bool, _search_path: &[PathBuf]) {
|
||||
self.hint_static();
|
||||
self.cmd.arg("--whole-archive").arg(format!("-l{}", lib));
|
||||
self.cmd.arg("--whole-archive").arg(format!("-l{lib}"));
|
||||
self.cmd.arg("--no-whole-archive");
|
||||
}
|
||||
|
||||
|
@ -1453,7 +1453,7 @@ impl<'a> Linker for L4Bender<'a> {
|
|||
}
|
||||
|
||||
fn subsystem(&mut self, subsystem: &str) {
|
||||
self.cmd.arg(&format!("--subsystem {}", subsystem));
|
||||
self.cmd.arg(&format!("--subsystem {subsystem}"));
|
||||
}
|
||||
|
||||
fn reset_per_library_state(&mut self) {
|
||||
|
@ -1518,12 +1518,12 @@ impl<'a> AixLinker<'a> {
|
|||
impl<'a> Linker for AixLinker<'a> {
|
||||
fn link_dylib(&mut self, lib: &str, _verbatim: bool, _as_needed: bool) {
|
||||
self.hint_dynamic();
|
||||
self.cmd.arg(format!("-l{}", lib));
|
||||
self.cmd.arg(format!("-l{lib}"));
|
||||
}
|
||||
|
||||
fn link_staticlib(&mut self, lib: &str, _verbatim: bool) {
|
||||
self.hint_static();
|
||||
self.cmd.arg(format!("-l{}", lib));
|
||||
self.cmd.arg(format!("-l{lib}"));
|
||||
}
|
||||
|
||||
fn link_rlib(&mut self, lib: &Path) {
|
||||
|
@ -1573,7 +1573,7 @@ impl<'a> Linker for AixLinker<'a> {
|
|||
|
||||
fn link_rust_dylib(&mut self, lib: &str, _: &Path) {
|
||||
self.hint_dynamic();
|
||||
self.cmd.arg(format!("-l{}", lib));
|
||||
self.cmd.arg(format!("-l{lib}"));
|
||||
}
|
||||
|
||||
fn link_framework(&mut self, _framework: &str, _as_needed: bool) {
|
||||
|
@ -1626,12 +1626,12 @@ impl<'a> Linker for AixLinker<'a> {
|
|||
let mut f = BufWriter::new(File::create(&path)?);
|
||||
// FIXME: use llvm-nm to generate export list.
|
||||
for symbol in symbols {
|
||||
debug!(" _{}", symbol);
|
||||
writeln!(f, " {}", symbol)?;
|
||||
debug!(" _{symbol}");
|
||||
writeln!(f, " {symbol}")?;
|
||||
}
|
||||
};
|
||||
if let Err(e) = res {
|
||||
self.sess.fatal(format!("failed to write export file: {}", e));
|
||||
self.sess.fatal(format!("failed to write export file: {e}"));
|
||||
}
|
||||
self.cmd.arg(format!("-bE:{}", path.to_str().unwrap()));
|
||||
}
|
||||
|
@ -1908,7 +1908,7 @@ impl<'a> Linker for BpfLinker<'a> {
|
|||
let res: io::Result<()> = try {
|
||||
let mut f = BufWriter::new(File::create(&path)?);
|
||||
for sym in symbols {
|
||||
writeln!(f, "{}", sym)?;
|
||||
writeln!(f, "{sym}")?;
|
||||
}
|
||||
};
|
||||
if let Err(error) = res {
|
||||
|
|
|
@ -158,20 +158,19 @@ pub(super) fn get_metadata_xcoff<'a>(path: &Path, data: &'a [u8]) -> Result<&'a
|
|||
{
|
||||
let offset = metadata_symbol.address() as usize;
|
||||
if offset < 4 {
|
||||
return Err(format!("Invalid metadata symbol offset: {}", offset));
|
||||
return Err(format!("Invalid metadata symbol offset: {offset}"));
|
||||
}
|
||||
// The offset specifies the location of rustc metadata in the comment section.
|
||||
// The metadata is preceded by a 4-byte length field.
|
||||
let len = u32::from_be_bytes(info_data[(offset - 4)..offset].try_into().unwrap()) as usize;
|
||||
if offset + len > (info_data.len() as usize) {
|
||||
return Err(format!(
|
||||
"Metadata at offset {} with size {} is beyond .info section",
|
||||
offset, len
|
||||
"Metadata at offset {offset} with size {len} is beyond .info section"
|
||||
));
|
||||
}
|
||||
return Ok(&info_data[offset..(offset + len)]);
|
||||
} else {
|
||||
return Err(format!("Unable to find symbol {}", AIX_METADATA_SYMBOL_NAME));
|
||||
return Err(format!("Unable to find symbol {AIX_METADATA_SYMBOL_NAME}"));
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ fn get_rpath_relative_to_output(config: &mut RPathConfig<'_>, lib: &Path) -> Str
|
|||
output.pop(); // strip filename
|
||||
let output = fs::canonicalize(&output).unwrap_or(output);
|
||||
let relative = path_relative_from(&lib, &output)
|
||||
.unwrap_or_else(|| panic!("couldn't create relative path from {:?} to {:?}", output, lib));
|
||||
.unwrap_or_else(|| panic!("couldn't create relative path from {output:?} to {lib:?}"));
|
||||
// FIXME (#9639): This needs to handle non-utf8 paths
|
||||
format!("{}/{}", prefix, relative.to_str().expect("non-utf8 component in path"))
|
||||
}
|
||||
|
|
|
@ -1471,7 +1471,7 @@ fn start_executing_work<B: ExtraBackendMethods>(
|
|||
}
|
||||
}
|
||||
Err(e) => {
|
||||
let msg = &format!("failed to acquire jobserver token: {}", e);
|
||||
let msg = &format!("failed to acquire jobserver token: {e}");
|
||||
shared_emitter.fatal(msg);
|
||||
codegen_state = Aborted;
|
||||
}
|
||||
|
@ -2041,7 +2041,7 @@ pub fn submit_pre_lto_module_to_llvm<B: ExtraBackendMethods>(
|
|||
}
|
||||
|
||||
pub fn pre_lto_bitcode_filename(module_name: &str) -> String {
|
||||
format!("{}.{}", module_name, PRE_LTO_BC_EXT)
|
||||
format!("{module_name}.{PRE_LTO_BC_EXT}")
|
||||
}
|
||||
|
||||
fn msvc_imps_needed(tcx: TyCtxt<'_>) -> bool {
|
||||
|
|
|
@ -414,7 +414,7 @@ fn push_debuginfo_type_name<'tcx>(
|
|||
}
|
||||
// Type parameters from polymorphized functions.
|
||||
ty::Param(_) => {
|
||||
write!(output, "{:?}", t).unwrap();
|
||||
write!(output, "{t:?}").unwrap();
|
||||
}
|
||||
ty::Error(_)
|
||||
| ty::Infer(_)
|
||||
|
@ -565,9 +565,9 @@ fn push_disambiguated_special_name(
|
|||
output: &mut String,
|
||||
) {
|
||||
if cpp_like_debuginfo {
|
||||
write!(output, "{}${}", label, disambiguator).unwrap();
|
||||
write!(output, "{label}${disambiguator}").unwrap();
|
||||
} else {
|
||||
write!(output, "{{{}#{}}}", label, disambiguator).unwrap();
|
||||
write!(output, "{{{label}#{disambiguator}}}").unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -651,15 +651,15 @@ fn push_const_param<'tcx>(tcx: TyCtxt<'tcx>, ct: ty::Const<'tcx>, output: &mut S
|
|||
ty::Int(ity) => {
|
||||
let bits = ct.eval_bits(tcx, ty::ParamEnv::reveal_all(), ct.ty());
|
||||
let val = Integer::from_int_ty(&tcx, *ity).size().sign_extend(bits) as i128;
|
||||
write!(output, "{}", val)
|
||||
write!(output, "{val}")
|
||||
}
|
||||
ty::Uint(_) => {
|
||||
let val = ct.eval_bits(tcx, ty::ParamEnv::reveal_all(), ct.ty());
|
||||
write!(output, "{}", val)
|
||||
write!(output, "{val}")
|
||||
}
|
||||
ty::Bool => {
|
||||
let val = ct.try_eval_bool(tcx, ty::ParamEnv::reveal_all()).unwrap();
|
||||
write!(output, "{}", val)
|
||||
write!(output, "{val}")
|
||||
}
|
||||
_ => {
|
||||
// If we cannot evaluate the constant to a known type, we fall back
|
||||
|
@ -678,9 +678,9 @@ fn push_const_param<'tcx>(tcx: TyCtxt<'tcx>, ct: ty::Const<'tcx>, output: &mut S
|
|||
});
|
||||
|
||||
if cpp_like_debuginfo(tcx) {
|
||||
write!(output, "CONST${:x}", hash_short)
|
||||
write!(output, "CONST${hash_short:x}")
|
||||
} else {
|
||||
write!(output, "{{CONST#{:x}}}", hash_short)
|
||||
write!(output, "{{CONST#{hash_short:x}}}")
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -752,7 +752,7 @@ fn push_close_angle_bracket(cpp_like_debuginfo: bool, output: &mut String) {
|
|||
}
|
||||
|
||||
fn pop_close_angle_bracket(output: &mut String) {
|
||||
assert!(output.ends_with('>'), "'output' does not end with '>': {}", output);
|
||||
assert!(output.ends_with('>'), "'output' does not end with '>': {output}");
|
||||
output.pop();
|
||||
if output.ends_with(' ') {
|
||||
output.pop();
|
||||
|
|
|
@ -177,31 +177,31 @@ impl IntoDiagnostic<'_> for ThorinErrorWrapper {
|
|||
}
|
||||
thorin::Error::NamelessSection(_, offset) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_section_without_name);
|
||||
diag.set_arg("offset", format!("0x{:08x}", offset));
|
||||
diag.set_arg("offset", format!("0x{offset:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::RelocationWithInvalidSymbol(section, offset) => {
|
||||
diag =
|
||||
handler.struct_err(fluent::codegen_ssa_thorin_relocation_with_invalid_symbol);
|
||||
diag.set_arg("section", section);
|
||||
diag.set_arg("offset", format!("0x{:08x}", offset));
|
||||
diag.set_arg("offset", format!("0x{offset:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::MultipleRelocations(section, offset) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_multiple_relocations);
|
||||
diag.set_arg("section", section);
|
||||
diag.set_arg("offset", format!("0x{:08x}", offset));
|
||||
diag.set_arg("offset", format!("0x{offset:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::UnsupportedRelocation(section, offset) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_unsupported_relocation);
|
||||
diag.set_arg("section", section);
|
||||
diag.set_arg("offset", format!("0x{:08x}", offset));
|
||||
diag.set_arg("offset", format!("0x{offset:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::MissingDwoName(id) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_missing_dwo_name);
|
||||
diag.set_arg("id", format!("0x{:08x}", id));
|
||||
diag.set_arg("id", format!("0x{id:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::NoCompilationUnits => {
|
||||
|
@ -251,7 +251,7 @@ impl IntoDiagnostic<'_> for ThorinErrorWrapper {
|
|||
}
|
||||
thorin::Error::StrAtOffset(_, offset) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_str_at_offset);
|
||||
diag.set_arg("offset", format!("0x{:08x}", offset));
|
||||
diag.set_arg("offset", format!("0x{offset:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::ParseIndex(_, section) => {
|
||||
|
@ -261,7 +261,7 @@ impl IntoDiagnostic<'_> for ThorinErrorWrapper {
|
|||
}
|
||||
thorin::Error::UnitNotInIndex(unit) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_unit_not_in_index);
|
||||
diag.set_arg("unit", format!("0x{:08x}", unit));
|
||||
diag.set_arg("unit", format!("0x{unit:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::RowNotInIndex(_, row) => {
|
||||
|
@ -275,7 +275,7 @@ impl IntoDiagnostic<'_> for ThorinErrorWrapper {
|
|||
}
|
||||
thorin::Error::EmptyUnit(unit) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_empty_unit);
|
||||
diag.set_arg("unit", format!("0x{:08x}", unit));
|
||||
diag.set_arg("unit", format!("0x{unit:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::MultipleDebugInfoSection => {
|
||||
|
@ -292,12 +292,12 @@ impl IntoDiagnostic<'_> for ThorinErrorWrapper {
|
|||
}
|
||||
thorin::Error::DuplicateUnit(unit) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_duplicate_unit);
|
||||
diag.set_arg("unit", format!("0x{:08x}", unit));
|
||||
diag.set_arg("unit", format!("0x{unit:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::MissingReferencedUnit(unit) => {
|
||||
diag = handler.struct_err(fluent::codegen_ssa_thorin_missing_referenced_unit);
|
||||
diag.set_arg("unit", format!("0x{:08x}", unit));
|
||||
diag.set_arg("unit", format!("0x{unit:08x}"));
|
||||
diag
|
||||
}
|
||||
thorin::Error::NoOutputObjectCreated => {
|
||||
|
|
|
@ -703,13 +703,12 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||
with_no_trimmed_paths!({
|
||||
if layout.abi.is_uninhabited() {
|
||||
// Use this error even for the other intrinsics as it is more precise.
|
||||
format!("attempted to instantiate uninhabited type `{}`", ty)
|
||||
format!("attempted to instantiate uninhabited type `{ty}`")
|
||||
} else if requirement == ValidityRequirement::Zero {
|
||||
format!("attempted to zero-initialize type `{}`, which is invalid", ty)
|
||||
format!("attempted to zero-initialize type `{ty}`, which is invalid")
|
||||
} else {
|
||||
format!(
|
||||
"attempted to leave type `{}` uninitialized, which is invalid",
|
||||
ty
|
||||
"attempted to leave type `{ty}` uninitialized, which is invalid"
|
||||
)
|
||||
}
|
||||
})
|
||||
|
@ -1045,10 +1044,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||
assert_eq!(
|
||||
fn_abi.args.len(),
|
||||
mir_args + 1,
|
||||
"#[track_caller] fn's must have 1 more argument in their ABI than in their MIR: {:?} {:?} {:?}",
|
||||
instance,
|
||||
fn_span,
|
||||
fn_abi,
|
||||
"#[track_caller] fn's must have 1 more argument in their ABI than in their MIR: {instance:?} {fn_span:?} {fn_abi:?}",
|
||||
);
|
||||
let location =
|
||||
self.get_caller_location(bx, mir::SourceInfo { span: fn_span, ..source_info });
|
||||
|
@ -1555,7 +1551,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||
fn landing_pad_for_uncached(&mut self, bb: mir::BasicBlock) -> Bx::BasicBlock {
|
||||
let llbb = self.llbb(bb);
|
||||
if base::wants_new_eh_instructions(self.cx.sess()) {
|
||||
let cleanup_bb = Bx::append_block(self.cx, self.llfn, &format!("funclet_{:?}", bb));
|
||||
let cleanup_bb = Bx::append_block(self.cx, self.llfn, &format!("funclet_{bb:?}"));
|
||||
let mut cleanup_bx = Bx::build(self.cx, cleanup_bb);
|
||||
let funclet = cleanup_bx.cleanup_pad(None, &[]);
|
||||
cleanup_bx.br(llbb);
|
||||
|
@ -1675,7 +1671,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||
match self.cached_llbbs[bb] {
|
||||
CachedLlbb::None => {
|
||||
// FIXME(eddyb) only name the block if `fewer_names` is `false`.
|
||||
let llbb = Bx::append_block(self.cx, self.llfn, &format!("{:?}", bb));
|
||||
let llbb = Bx::append_block(self.cx, self.llfn, &format!("{bb:?}"));
|
||||
self.cached_llbbs[bb] = CachedLlbb::Some(llbb);
|
||||
Some(llbb)
|
||||
}
|
||||
|
|
|
@ -337,7 +337,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||
} else {
|
||||
Some(match whole_local_var.or(fallback_var.clone()) {
|
||||
Some(var) if var.name != kw::Empty => var.name.to_string(),
|
||||
_ => format!("{:?}", local),
|
||||
_ => format!("{local:?}"),
|
||||
})
|
||||
};
|
||||
|
||||
|
|
|
@ -397,8 +397,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
|
|||
) -> OperandRef<'tcx, Bx::Value> {
|
||||
assert!(
|
||||
self.rvalue_creates_operand(rvalue, DUMMY_SP),
|
||||
"cannot codegen {:?} to operand",
|
||||
rvalue,
|
||||
"cannot codegen {rvalue:?} to operand",
|
||||
);
|
||||
|
||||
match *rvalue {
|
||||
|
|
|
@ -140,8 +140,8 @@ impl<'a, 'tcx: 'a> MonoItemExt<'a, 'tcx> for MonoItem<'tcx> {
|
|||
MonoItem::Fn(instance) => {
|
||||
format!("Fn({:?}, {})", instance.def, instance.args.as_ptr().addr())
|
||||
}
|
||||
MonoItem::Static(id) => format!("Static({:?})", id),
|
||||
MonoItem::GlobalAsm(id) => format!("GlobalAsm({:?})", id),
|
||||
MonoItem::Static(id) => format!("Static({id:?})"),
|
||||
MonoItem::GlobalAsm(id) => format!("GlobalAsm({id:?})"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -369,9 +369,9 @@ pub fn from_target_feature(
|
|||
// We allow comma separation to enable multiple features.
|
||||
target_features.extend(value.as_str().split(',').filter_map(|feature| {
|
||||
let Some(feature_gate) = supported_target_features.get(feature) else {
|
||||
let msg = format!("the feature named `{}` is not valid for this target", feature);
|
||||
let msg = format!("the feature named `{feature}` is not valid for this target");
|
||||
let mut err = tcx.sess.struct_span_err(item.span(), msg);
|
||||
err.span_label(item.span(), format!("`{}` is not valid for this target", feature));
|
||||
err.span_label(item.span(), format!("`{feature}` is not valid for this target"));
|
||||
if let Some(stripped) = feature.strip_prefix('+') {
|
||||
let valid = supported_target_features.contains_key(stripped);
|
||||
if valid {
|
||||
|
@ -405,7 +405,7 @@ pub fn from_target_feature(
|
|||
&tcx.sess.parse_sess,
|
||||
feature_gate.unwrap(),
|
||||
item.span(),
|
||||
format!("the target feature `{}` is currently unstable", feature),
|
||||
format!("the target feature `{feature}` is currently unstable"),
|
||||
)
|
||||
.emit();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue