Skip to content

Commit 1ebbd87

Browse files
committed
Auto merge of #145254 - GuillaumeGomez:rollup-7bp43pv, r=GuillaumeGomez
Rollup of 4 pull requests Successful merges: - #144966 ( Improve suggestion for "missing function argument" on multiline call) - #145111 (remove some unused private trait impls) - #145221 (Fix Cargo cross-compilation (take two)) - #145247 (Update `sysinfo` version to `0.37.0`) r? `@ghost` `@rustbot` modify labels: rollup
2 parents 6355cd3 + c291505 commit 1ebbd87

File tree

11 files changed

+100
-45
lines changed

11 files changed

+100
-45
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5284,9 +5284,9 @@ dependencies = [
52845284

52855285
[[package]]
52865286
name = "sysinfo"
5287-
version = "0.36.1"
5287+
version = "0.37.0"
52885288
source = "registry+https://github.com/rust-lang/crates.io-index"
5289-
checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d"
5289+
checksum = "07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753"
52905290
dependencies = [
52915291
"libc",
52925292
"objc2-core-foundation",

compiler/rustc_borrowck/src/polonius/legacy/facts.rs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -184,22 +184,6 @@ where
184184
}
185185
}
186186

187-
impl<A, B, C, D> FactRow for (A, B, C, D)
188-
where
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-
203187
fn write_row(
204188
out: &mut dyn Write,
205189
location_table: &PoloniusLocationTable,

compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ macro_rules! default_hash_impl {
2121
};
2222
}
2323

24-
default_hash_impl! { i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize, }
24+
default_hash_impl! { u8, u64, usize, }
2525

2626
impl<'tcx> AbiHashStable<'tcx> for bool {
2727
#[inline]
@@ -37,13 +37,6 @@ impl<'tcx> AbiHashStable<'tcx> for str {
3737
}
3838
}
3939

40-
impl<'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-
4740
impl<'tcx> AbiHashStable<'tcx> for Symbol {
4841
#[inline]
4942
fn abi_hash(&self, tcx: TyCtxt<'tcx>, hasher: &mut StableHasher) {

src/bootstrap/Cargo.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -730,9 +730,9 @@ dependencies = [
730730

731731
[[package]]
732732
name = "sysinfo"
733-
version = "0.36.0"
733+
version = "0.37.0"
734734
source = "registry+https://github.com/rust-lang/crates.io-index"
735-
checksum = "aab138f5c1bb35231de19049060a87977ad23e04f2303e953bc5c2947ac7dec4"
735+
checksum = "07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753"
736736
dependencies = [
737737
"libc",
738738
"memchr",

src/bootstrap/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ walkdir = "2.4"
5858
xz2 = "0.1"
5959

6060
# Dependencies needed by the build-metrics feature
61-
sysinfo = { version = "0.36.0", default-features = false, optional = true, features = ["system"] }
61+
sysinfo = { version = "0.37.0", default-features = false, optional = true, features = ["system"] }
6262

6363
# Dependencies needed by the `tracing` feature
6464
tracing = { version = "0.1", optional = true, features = ["attributes"] }

src/bootstrap/src/core/build_steps/tool.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ log = "0.4"
1010
anyhow = "1"
1111
humantime = "2"
1212
humansize = "2"
13-
sysinfo = { version = "0.36.0", default-features = false, features = ["disk"] }
13+
sysinfo = { version = "0.37.0", default-features = false, features = ["disk"] }
1414
fs_extra = "1"
1515
camino = "1"
1616
tar = "0.4"

tests/ui/argument-suggestions/issue-100478.stderr

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
| ^^^ -----------
7676
help: provide the argument
7777
|
78-
LL - foo(
79-
LL -
80-
LL - p1, //p2,
81-
LL - p3, p4, p5, p6, p7, p8,
82-
LL - );
83-
LL + foo(p1, /* Arc<T2> */, p3, p4, p5, p6, p7, p8);
78+
LL ~ foo(
79+
LL + p1,
80+
LL + /* Arc<T2> */,
81+
LL + p3,
82+
LL + p4,
83+
LL + p5,
84+
LL + p6,
85+
LL + p7,
86+
LL + p8,
87+
LL ~ );
8488
|
8589

8690
error: aborting due to 4 previous errors

tests/ui/fn/fn-arg-count-mismatch-diagnostics.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,21 @@ impl Bar {
4646
}
4747
}
4848

49+
fn function_with_lots_of_arguments(a: i32, b: char, c: i32, d: i32, e: i32, f: i32) {}
50+
4951
fn 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
}

0 commit comments

Comments
 (0)