Skip to content

Commit 0d90b59

Browse files
committed
Tweak wording for "cannot infer type" main label
1 parent 3f34590 commit 0d90b59

File tree

6 files changed

+35
-43
lines changed

6 files changed

+35
-43
lines changed

compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -783,18 +783,9 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
783783
) -> String {
784784
if type_name == "_" {
785785
format!("cannot infer {}", kind_str)
786-
} else {
787-
let parent_desc = if let Some(parent_name) = parent_name {
788-
let parent_type_descr = if let Some(parent_descr) = parent_descr {
789-
format!(" the {}", parent_descr)
790-
} else {
791-
"".into()
792-
};
793-
794-
format!(" declared on{} `{}`", parent_type_descr, parent_name)
795-
} else {
796-
"".to_string()
797-
};
786+
} else if let (Some(parent_name), Some(parent_descr)) = (parent_name, parent_descr) {
787+
let parent_type_descr = format!(" the {}", parent_descr);
788+
let parent_desc = format!(" declared on{} `{}`", parent_type_descr, parent_name);
798789

799790
// FIXME: We really shouldn't be dealing with strings here
800791
// but instead use a sensible enum for cases like this.
@@ -804,7 +795,8 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
804795
"cannot infer {} {} {} `{}`{}",
805796
kind_str, preposition, descr, type_name, parent_desc
806797
)
807-
.into()
798+
} else {
799+
format!("cannot infer type for {} `{}`", descr, type_name)
808800
}
809801
}
810802
}

src/test/ui/async-await/unresolved_type_param.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ async fn foo() {
1010
//~^ ERROR type inside `async fn` body must be known in this context
1111
//~| ERROR type inside `async fn` body must be known in this context
1212
//~| ERROR type inside `async fn` body must be known in this context
13-
//~| NOTE cannot infer type for type parameter `T`
14-
//~| NOTE cannot infer type for type parameter `T`
15-
//~| NOTE cannot infer type for type parameter `T`
13+
//~| NOTE function `bar` has a type parameter `T` we couldn't infer
14+
//~| NOTE function `bar` has a type parameter `T` we couldn't infer
15+
//~| NOTE function `bar` has a type parameter `T` we couldn't infer
1616
//~| NOTE the type is part of the `async fn` body because of this `await`
1717
//~| NOTE the type is part of the `async fn` body because of this `await`
1818
//~| NOTE the type is part of the `async fn` body because of this `await`

src/test/ui/const-generics/infer/issue-77092.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0282]: type annotations needed
22
--> $DIR/issue-77092.rs:13:26
33
|
44
LL | println!("{:?}", take_array_from_mut(&mut arr, i));
5-
| ^^^^^^^^^^^^^^^^^^^ cannot infer the value of the constant `{_: usize}`
5+
| ^^^^^^^^^^^^^^^^^^^ cannot infer type for the constant `{_: usize}`
66

77
error: aborting due to previous error
88

src/test/ui/question-mark-type-infer.stderr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ LL | l.iter().map(f).collect::<ControlFlow<_, _>>()?
1212
| ^^^^^^^^^^^^^^^^^^^^^
1313
LL | l.iter().map(f).collect::<Option<_>>()?
1414
| ^^^^^^^^^^^^^
15-
LL | l.iter().map(f).collect::<std::result::Result<_, _>>()?
16-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1715
LL | l.iter().map(f).collect::<Poll<std::result::Result<_, _>>>()?
1816
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
17+
LL | l.iter().map(f).collect::<Poll<Option<std::result::Result<_, _>>>>()?
18+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1919
and 1 other candidate
2020

2121
error: aborting due to previous error

src/test/ui/suggestions/appropriate-type-param-turbofish.stderr

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ help: consider specifying the type argument in the method call
99
|
1010
LL | vec![1, 2, 3].into_iter().collect::<Vec<_>>();
1111
| ^^^^^^^^^^
12-
LL | vec![1, 2, 3].into_iter().collect::<HashSet<_, _>>();
13-
| ^^^^^^^^^^^^^^^^^
14-
LL | vec![1, 2, 3].into_iter().collect::<PathBuf>();
15-
| ^^^^^^^^^^^
16-
LL | vec![1, 2, 3].into_iter().collect::<Box<[_]>>();
12+
LL | vec![1, 2, 3].into_iter().collect::<Arc<[_]>>();
1713
| ^^^^^^^^^^^^
14+
LL | vec![1, 2, 3].into_iter().collect::<BTreeSet<_>>();
15+
| ^^^^^^^^^^^^^^^
16+
LL | vec![1, 2, 3].into_iter().collect::<BinaryHeap<_>>();
17+
| ^^^^^^^^^^^^^^^^^
1818
and 8 other candidates
1919

2020
error[E0283]: type annotations needed
@@ -30,10 +30,10 @@ LL | vec!["a", "b", "c"].into_iter().collect::<Vec<_>>();
3030
| ^^^^^^^^^^
3131
LL | vec!["a", "b", "c"].into_iter().collect::<String>();
3232
| ^^^^^^^^^^
33-
LL | vec!["a", "b", "c"].into_iter().collect::<HashSet<_, _>>();
34-
| ^^^^^^^^^^^^^^^^^
35-
LL | vec!["a", "b", "c"].into_iter().collect::<PathBuf>();
36-
| ^^^^^^^^^^^
33+
LL | vec!["a", "b", "c"].into_iter().collect::<Cow<'_, [_]>>();
34+
| ^^^^^^^^^^^^^^^^
35+
LL | vec!["a", "b", "c"].into_iter().collect::<Cow<'_, str>>();
36+
| ^^^^^^^^^^^^^^^^
3737
and 10 other candidates
3838

3939
error[E0283]: type annotations needed
@@ -49,10 +49,10 @@ LL | vec!['a', 'b', 'c'].into_iter().collect::<Vec<_>>();
4949
| ^^^^^^^^^^
5050
LL | vec!['a', 'b', 'c'].into_iter().collect::<String>();
5151
| ^^^^^^^^^^
52-
LL | vec!['a', 'b', 'c'].into_iter().collect::<HashSet<_, _>>();
52+
LL | vec!['a', 'b', 'c'].into_iter().collect::<BinaryHeap<_>>();
5353
| ^^^^^^^^^^^^^^^^^
54-
LL | vec!['a', 'b', 'c'].into_iter().collect::<PathBuf>();
55-
| ^^^^^^^^^^^
54+
LL | vec!['a', 'b', 'c'].into_iter().collect::<Cow<'_, [_]>>();
55+
| ^^^^^^^^^^^^^^^^
5656
and 10 other candidates
5757

5858
error[E0283]: type annotations needed
@@ -66,12 +66,12 @@ help: consider giving this binding a type
6666
|
6767
LL | let _: Vec<_> = vec![1, 2, 3].into_iter().collect();
6868
| ^^^^^^^^
69-
LL | let _: HashSet<_, _> = vec![1, 2, 3].into_iter().collect();
70-
| ^^^^^^^^^^^^^^^
71-
LL | let _: PathBuf = vec![1, 2, 3].into_iter().collect();
72-
| ^^^^^^^^^
73-
LL | let _: Box<[_]> = vec![1, 2, 3].into_iter().collect();
69+
LL | let _: Arc<[_]> = vec![1, 2, 3].into_iter().collect();
7470
| ^^^^^^^^^^
71+
LL | let _: BTreeSet<_> = vec![1, 2, 3].into_iter().collect();
72+
| ^^^^^^^^^^^^^
73+
LL | let _: BinaryHeap<_> = vec![1, 2, 3].into_iter().collect();
74+
| ^^^^^^^^^^^^^^^
7575
and 8 other candidates
7676

7777
error[E0283]: type annotations needed
@@ -87,10 +87,10 @@ LL | let _: Vec<_> = vec!["a", "b", "c"].into_iter().collect();
8787
| ^^^^^^^^
8888
LL | let _: String = vec!["a", "b", "c"].into_iter().collect();
8989
| ^^^^^^^^
90-
LL | let _: HashSet<_, _> = vec!["a", "b", "c"].into_iter().collect();
90+
LL | let _: BinaryHeap<_> = vec!["a", "b", "c"].into_iter().collect();
9191
| ^^^^^^^^^^^^^^^
92-
LL | let _: PathBuf = vec!["a", "b", "c"].into_iter().collect();
93-
| ^^^^^^^^^
92+
LL | let _: Cow<'_, [_]> = vec!["a", "b", "c"].into_iter().collect();
93+
| ^^^^^^^^^^^^^^
9494
and 10 other candidates
9595

9696
error[E0283]: type annotations needed
@@ -106,10 +106,10 @@ LL | let _: Vec<_> = vec!['a', 'b', 'c'].into_iter().collect();
106106
| ^^^^^^^^
107107
LL | let _: String = vec!['a', 'b', 'c'].into_iter().collect();
108108
| ^^^^^^^^
109-
LL | let _: HashSet<_, _> = vec!['a', 'b', 'c'].into_iter().collect();
109+
LL | let _: BinaryHeap<_> = vec!['a', 'b', 'c'].into_iter().collect();
110110
| ^^^^^^^^^^^^^^^
111-
LL | let _: PathBuf = vec!['a', 'b', 'c'].into_iter().collect();
112-
| ^^^^^^^^^
111+
LL | let _: Box<[_]> = vec!['a', 'b', 'c'].into_iter().collect();
112+
| ^^^^^^^^^^
113113
and 10 other candidates
114114

115115
error[E0283]: type annotations needed

src/test/ui/type/type-annotation-needed.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ fn foo<T: Into<String>>(x: i32) {}
44
fn main() {
55
foo(42);
66
//~^ ERROR type annotations needed
7-
//~| NOTE cannot infer type
7+
//~| NOTE function `foo` has a type parameter `T` we couldn't infer
88
//~| NOTE cannot satisfy
99
}

0 commit comments

Comments
 (0)