authorbors <bors@rust-lang.org> 2025-08-11 19:28:22 UTC
committerbors <bors@rust-lang.org> 2025-08-11 19:28:22 UTC
log1ebbd87a62ce96a72b22da61b7c2c43893534842
tree0587f93980bd61549e648c04d57c1531f45aaefa
parent6355cd39c81e9699b1925c58d2ed3165bcab1715
parentc2915051bdd532c8ed36b3a79d60b5d6502ff592

Auto merge of #145254 - GuillaumeGomez:rollup-7bp43pv, r=GuillaumeGomez

Rollup of 4 pull requests Successful merges: - rust-lang/rust#144966 ( Improve suggestion for "missing function argument" on multiline call) - rust-lang/rust#145111 (remove some unused private trait impls) - rust-lang/rust#145221 (Fix Cargo cross-compilation (take two)) - rust-lang/rust#145247 (Update `sysinfo` version to `0.37.0`) r? `@ghost` `@rustbot` modify labels: rollup

11 files changed, 100 insertions(+), 45 deletions(-)

Cargo.lock+2-2
......@@ -5284,9 +5284,9 @@ dependencies = [
52845284
52855285[[package]]
52865286name = "sysinfo"
5287version = "0.36.1"
5287version = "0.37.0"
52885288source = "registry+https://github.com/rust-lang/crates.io-index"
5289checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d"
5289checksum = "07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753"
52905290dependencies = [
52915291 "libc",
52925292 "objc2-core-foundation",
compiler/rustc_borrowck/src/polonius/legacy/facts.rs-16
......@@ -184,22 +184,6 @@ where
184184 }
185185}
186186
187impl<A, B, C, D> FactRow for (A, B, C, D)
188where
189 A: FactCell,
190 B: FactCell,
191 C: FactCell,
192 D: FactCell,
193{
194 fn write(
195 &self,
196 out: &mut dyn Write,
197 location_table: &PoloniusLocationTable,
198 ) -> Result<(), Box<dyn Error>> {
199 write_row(out, location_table, &[&self.0, &self.1, &self.2, &self.3])
200 }
201}
202
203187fn write_row(
204188 out: &mut dyn Write,
205189 location_table: &PoloniusLocationTable,
compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs+44-6
......@@ -1589,26 +1589,64 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
15891589 // e.g. `reuse HasSelf::method;` should suggest `reuse HasSelf::method($args);`.
15901590 full_call_span.shrink_to_hi()
15911591 };
1592
1593 // Controls how the arguments should be listed in the suggestion.
1594 enum ArgumentsFormatting {
1595 SingleLine,
1596 Multiline { fallback_indent: String, brace_indent: String },
1597 }
1598 let arguments_formatting = {
1599 let mut provided_inputs = matched_inputs.iter().filter_map(|a| *a);
1600 if let Some(brace_indent) = source_map.indentation_before(suggestion_span)
1601 && let Some(first_idx) = provided_inputs.by_ref().next()
1602 && let Some(last_idx) = provided_inputs.by_ref().next()
1603 && let (_, first_span) = provided_arg_tys[first_idx]
1604 && let (_, last_span) = provided_arg_tys[last_idx]
1605 && source_map.is_multiline(first_span.to(last_span))
1606 && let Some(fallback_indent) = source_map.indentation_before(first_span)
1607 {
1608 ArgumentsFormatting::Multiline { fallback_indent, brace_indent }
1609 } else {
1610 ArgumentsFormatting::SingleLine
1611 }
1612 };
1613
15921614 let mut suggestion = "(".to_owned();
15931615 let mut needs_comma = false;
15941616 for (expected_idx, provided_idx) in matched_inputs.iter_enumerated() {
15951617 if needs_comma {
1596 suggestion += ", ";
1597 } else {
1598 needs_comma = true;
1618 suggestion += ",";
1619 }
1620 match &arguments_formatting {
1621 ArgumentsFormatting::SingleLine if needs_comma => suggestion += " ",
1622 ArgumentsFormatting::SingleLine => {}
1623 ArgumentsFormatting::Multiline { .. } => suggestion += "\n",
15991624 }
1600 let suggestion_text = if let Some(provided_idx) = provided_idx
1625 needs_comma = true;
1626 let (suggestion_span, suggestion_text) = if let Some(provided_idx) = provided_idx
16011627 && let (_, provided_span) = provided_arg_tys[*provided_idx]
16021628 && let Ok(arg_text) = source_map.span_to_snippet(provided_span)
16031629 {
1604 arg_text
1630 (Some(provided_span), arg_text)
16051631 } else {
16061632 // Propose a placeholder of the correct type
16071633 let (_, expected_ty) = formal_and_expected_inputs[expected_idx];
1608 ty_to_snippet(expected_ty, expected_idx)
1634 (None, ty_to_snippet(expected_ty, expected_idx))
16091635 };
1636 if let ArgumentsFormatting::Multiline { fallback_indent, .. } =
1637 &arguments_formatting
1638 {
1639 let indent = suggestion_span
1640 .and_then(|span| source_map.indentation_before(span))
1641 .unwrap_or_else(|| fallback_indent.clone());
1642 suggestion += &indent;
1643 }
16101644 suggestion += &suggestion_text;
16111645 }
1646 if let ArgumentsFormatting::Multiline { brace_indent, .. } = arguments_formatting {
1647 suggestion += ",\n";
1648 suggestion += &brace_indent;
1649 }
16121650 suggestion += ")";
16131651 err.span_suggestion_verbose(
16141652 suggestion_span,
compiler/rustc_symbol_mangling/src/export.rs+1-8
......@@ -21,7 +21,7 @@ macro_rules! default_hash_impl {
2121 };
2222}
2323
24default_hash_impl! { i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, }
24default_hash_impl! { u8, u64, usize, }
2525
2626impl<'tcx> AbiHashStable<'tcx> for bool {
2727 #[inline]
......@@ -37,13 +37,6 @@ impl<'tcx> AbiHashStable<'tcx> for str {
3737 }
3838}
3939
40impl<'tcx> AbiHashStable<'tcx> for String {
41 #[inline]
42 fn abi_hash(&self, tcx: TyCtxt<'tcx>, hasher: &mut StableHasher) {
43 self[..].abi_hash(tcx, hasher);
44 }
45}
46
4740impl<'tcx> AbiHashStable<'tcx> for Symbol {
4841 #[inline]
4942 fn abi_hash(&self, tcx: TyCtxt<'tcx>, hasher: &mut StableHasher) {
src/bootstrap/Cargo.lock+2-2
......@@ -730,9 +730,9 @@ dependencies = [
730730
731731[[package]]
732732name = "sysinfo"
733version = "0.36.0"
733version = "0.37.0"
734734source = "registry+https://github.com/rust-lang/crates.io-index"
735checksum = "aab138f5c1bb35231de19049060a87977ad23e04f2303e953bc5c2947ac7dec4"
735checksum = "07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753"
736736dependencies = [
737737 "libc",
738738 "memchr",
src/bootstrap/Cargo.toml+1-1
......@@ -58,7 +58,7 @@ walkdir = "2.4"
5858xz2 = "0.1"
5959
6060# Dependencies needed by the build-metrics feature
61sysinfo = { version = "0.36.0", default-features = false, optional = true, features = ["system"] }
61sysinfo = { version = "0.37.0", default-features = false, optional = true, features = ["system"] }
6262
6363# Dependencies needed by the `tracing` feature
6464tracing = { version = "0.1", optional = true, features = ["attributes"] }
src/bootstrap/src/core/build_steps/tool.rs+2
......@@ -857,7 +857,9 @@ impl Step for Cargo {
857857 fn run(self, builder: &Builder<'_>) -> ToolBuildResult {
858858 builder.build.require_submodule("src/tools/cargo", None);
859859
860 builder.std(self.build_compiler, builder.host_target);
860861 builder.std(self.build_compiler, self.target);
862
861863 builder.ensure(ToolBuild {
862864 build_compiler: self.build_compiler,
863865 target: self.target,
src/tools/opt-dist/Cargo.toml+1-1
......@@ -10,7 +10,7 @@ log = "0.4"
1010anyhow = "1"
1111humantime = "2"
1212humansize = "2"
13sysinfo = { version = "0.36.0", default-features = false, features = ["disk"] }
13sysinfo = { version = "0.37.0", default-features = false, features = ["disk"] }
1414fs_extra = "1"
1515camino = "1"
1616tar = "0.4"
tests/ui/argument-suggestions/issue-100478.stderr+10-6
......@@ -75,12 +75,16 @@ LL | fn foo(p1: T1, p2: Arc<T2>, p3: T3, p4: Arc<T4>, p5: T5, p6: T6, p7: T7, p8
7575 | ^^^ -----------
7676help: provide the argument
7777 |
78LL - foo(
79LL -
80LL - p1, //p2,
81LL - p3, p4, p5, p6, p7, p8,
82LL - );
83LL + foo(p1, /* Arc<T2> */, p3, p4, p5, p6, p7, p8);
78LL ~ foo(
79LL + p1,
80LL + /* Arc<T2> */,
81LL + p3,
82LL + p4,
83LL + p5,
84LL + p6,
85LL + p7,
86LL + p8,
87LL ~ );
8488 |
8589
8690error: aborting due to 4 previous errors
tests/ui/fn/fn-arg-count-mismatch-diagnostics.rs+12
......@@ -46,9 +46,21 @@ impl Bar {
4646 }
4747}
4848
49fn function_with_lots_of_arguments(a: i32, b: char, c: i32, d: i32, e: i32, f: i32) {}
50
4951fn main() {
5052 foo(1, 2, 3);
5153 //~^ ERROR function takes 4 arguments but 3
5254 bar(1, 2, 3);
5355 //~^ ERROR function takes 6 arguments but 3
56
57 let variable_name = 42;
58 function_with_lots_of_arguments(
59 variable_name,
60 variable_name,
61 variable_name,
62 variable_name,
63 variable_name,
64 );
65 //~^^^^^^^ ERROR this function takes 6 arguments but 5 arguments were supplied [E0061]
5466}
tests/ui/fn/fn-arg-count-mismatch-diagnostics.stderr+25-3
......@@ -52,7 +52,7 @@ LL | <$from>::$method(8, /* u8 */)
5252 | ++++++++++
5353
5454error[E0061]: this function takes 4 arguments but 3 arguments were supplied
55 --> $DIR/fn-arg-count-mismatch-diagnostics.rs:50:5
55 --> $DIR/fn-arg-count-mismatch-diagnostics.rs:52:5
5656 |
5757LL | foo(1, 2, 3);
5858 | ^^^--------- argument #4 of type `isize` is missing
......@@ -68,7 +68,7 @@ LL | foo(1, 2, 3, /* isize */);
6868 | +++++++++++++
6969
7070error[E0061]: this function takes 6 arguments but 3 arguments were supplied
71 --> $DIR/fn-arg-count-mismatch-diagnostics.rs:52:5
71 --> $DIR/fn-arg-count-mismatch-diagnostics.rs:54:5
7272 |
7373LL | bar(1, 2, 3);
7474 | ^^^--------- three arguments of type `i32`, `i32`, and `i32` are missing
......@@ -83,6 +83,28 @@ help: provide the arguments
8383LL | bar(1, 2, 3, /* i32 */, /* i32 */, /* i32 */);
8484 | +++++++++++++++++++++++++++++++++
8585
86error: aborting due to 5 previous errors
86error[E0061]: this function takes 6 arguments but 5 arguments were supplied
87 --> $DIR/fn-arg-count-mismatch-diagnostics.rs:58:5
88 |
89LL | function_with_lots_of_arguments(
90 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
91LL | variable_name,
92LL | variable_name,
93 | ------------- argument #2 of type `char` is missing
94 |
95note: function defined here
96 --> $DIR/fn-arg-count-mismatch-diagnostics.rs:49:4
97 |
98LL | fn function_with_lots_of_arguments(a: i32, b: char, c: i32, d: i32, e: i32, f: i32) {}
99 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -------
100help: provide the argument
101 |
102LL | function_with_lots_of_arguments(
103LL | variable_name,
104LL ~ /* char */,
105LL ~ variable_name,
106 |
107
108error: aborting due to 6 previous errors
87109
88110For more information about this error, try `rustc --explain E0061`.