Adjust wording
This commit is contained in:
parent
750f04d309
commit
3fdf3cb80c
25 changed files with 77 additions and 68 deletions
|
@ -1626,16 +1626,16 @@ impl<'a, 'tcx> InferCtxtPrivExt<'a, 'tcx> for InferCtxt<'a, 'tcx> {
|
||||||
|
|
||||||
if Some(pred.projection_ty.item_def_id) == self.tcx.lang_items().fn_once_output() {
|
if Some(pred.projection_ty.item_def_id) == self.tcx.lang_items().fn_once_output() {
|
||||||
Some(format!(
|
Some(format!(
|
||||||
"expected `{self_ty}` to be a {fn_kind} that returns `{expected_ty}`, but it actually returns `{normalized_ty}`",
|
"expected `{self_ty}` to be a {fn_kind} that returns `{expected_ty}`, but it returns `{normalized_ty}`",
|
||||||
fn_kind = self_ty.prefix_string(self.tcx)
|
fn_kind = self_ty.prefix_string(self.tcx)
|
||||||
))
|
))
|
||||||
} else if Some(trait_def_id) == self.tcx.lang_items().future_trait() {
|
} else if Some(trait_def_id) == self.tcx.lang_items().future_trait() {
|
||||||
Some(format!(
|
Some(format!(
|
||||||
"expected `{self_ty}` to be a future that yields `{expected_ty}`, but it actually yields `{normalized_ty}`"
|
"expected `{self_ty}` to be a future that resolves to `{expected_ty}`, but it resolves to `{normalized_ty}`"
|
||||||
))
|
))
|
||||||
} else if Some(trait_def_id) == self.tcx.get_diagnostic_item(sym::Iterator) {
|
} else if Some(trait_def_id) == self.tcx.get_diagnostic_item(sym::Iterator) {
|
||||||
Some(format!(
|
Some(format!(
|
||||||
"expected `{self_ty}` to be an iterator of `{expected_ty}`, but it actually returns items of `{normalized_ty}`"
|
"expected `{self_ty}` to be an iterator that yields `{expected_ty}`, but it yields `{normalized_ty}`"
|
||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
|
|
@ -4,5 +4,5 @@ trait I32Iterator = Iterator<Item = i32>;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let _: &dyn I32Iterator<Item = u32> = &vec![42].into_iter();
|
let _: &dyn I32Iterator<Item = u32> = &vec![42].into_iter();
|
||||||
//~^ ERROR expected `std::vec::IntoIter<u32>` to be an iterator of `i32`, but it actually returns items of `u32`
|
//~^ ERROR expected `std::vec::IntoIter<u32>` to be an iterator that yields `i32`, but it yields `u32`
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0271]: expected `std::vec::IntoIter<u32>` to be an iterator of `i32`, but it actually returns items of `u32`
|
error[E0271]: expected `std::vec::IntoIter<u32>` to be an iterator that yields `i32`, but it yields `u32`
|
||||||
--> $DIR/associated-types-overridden-binding-2.rs:6:43
|
--> $DIR/associated-types-overridden-binding-2.rs:6:43
|
||||||
|
|
|
|
||||||
LL | let _: &dyn I32Iterator<Item = u32> = &vec![42].into_iter();
|
LL | let _: &dyn I32Iterator<Item = u32> = &vec![42].into_iter();
|
||||||
|
|
|
@ -15,7 +15,7 @@ fn return_targets_async_block_not_fn() -> u8 {
|
||||||
return 0u8;
|
return 0u8;
|
||||||
};
|
};
|
||||||
let _: &dyn Future<Output = ()> = █
|
let _: &dyn Future<Output = ()> = █
|
||||||
//~^ ERROR expected `impl Future<Output = u8>` to be a future that yields `()`, but it actually yields `u8`
|
//~^ ERROR expected `impl Future<Output = u8>` to be a future that resolves to `()`, but it resolves to `u8`
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn return_targets_async_block_not_async_fn() -> u8 {
|
async fn return_targets_async_block_not_async_fn() -> u8 {
|
||||||
|
@ -24,7 +24,7 @@ async fn return_targets_async_block_not_async_fn() -> u8 {
|
||||||
return 0u8;
|
return 0u8;
|
||||||
};
|
};
|
||||||
let _: &dyn Future<Output = ()> = █
|
let _: &dyn Future<Output = ()> = █
|
||||||
//~^ ERROR expected `impl Future<Output = u8>` to be a future that yields `()`, but it actually yields `u8`
|
//~^ ERROR expected `impl Future<Output = u8>` to be a future that resolves to `()`, but it resolves to `u8`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn no_break_in_async_block() {
|
fn no_break_in_async_block() {
|
||||||
|
@ -42,7 +42,9 @@ fn no_break_in_async_block_even_with_outer_loop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MyErr;
|
struct MyErr;
|
||||||
fn err() -> Result<u8, MyErr> { Err(MyErr) }
|
fn err() -> Result<u8, MyErr> {
|
||||||
|
Err(MyErr)
|
||||||
|
}
|
||||||
|
|
||||||
fn rethrow_targets_async_block_not_fn() -> Result<u8, MyErr> {
|
fn rethrow_targets_async_block_not_fn() -> Result<u8, MyErr> {
|
||||||
//~^ ERROR mismatched types
|
//~^ ERROR mismatched types
|
||||||
|
|
|
@ -31,7 +31,7 @@ LL | |
|
||||||
LL | | }
|
LL | | }
|
||||||
| |_^ expected `u8`, found `()`
|
| |_^ expected `u8`, found `()`
|
||||||
|
|
||||||
error[E0271]: expected `impl Future<Output = u8>` to be a future that yields `()`, but it actually yields `u8`
|
error[E0271]: expected `impl Future<Output = u8>` to be a future that resolves to `()`, but it resolves to `u8`
|
||||||
--> $DIR/async-block-control-flow-static-semantics.rs:26:39
|
--> $DIR/async-block-control-flow-static-semantics.rs:26:39
|
||||||
|
|
|
|
||||||
LL | let _: &dyn Future<Output = ()> = █
|
LL | let _: &dyn Future<Output = ()> = █
|
||||||
|
@ -47,7 +47,7 @@ LL | fn return_targets_async_block_not_fn() -> u8 {
|
||||||
| |
|
| |
|
||||||
| implicitly returns `()` as its body has no tail or `return` expression
|
| implicitly returns `()` as its body has no tail or `return` expression
|
||||||
|
|
||||||
error[E0271]: expected `impl Future<Output = u8>` to be a future that yields `()`, but it actually yields `u8`
|
error[E0271]: expected `impl Future<Output = u8>` to be a future that resolves to `()`, but it resolves to `u8`
|
||||||
--> $DIR/async-block-control-flow-static-semantics.rs:17:39
|
--> $DIR/async-block-control-flow-static-semantics.rs:17:39
|
||||||
|
|
|
|
||||||
LL | let _: &dyn Future<Output = ()> = █
|
LL | let _: &dyn Future<Output = ()> = █
|
||||||
|
@ -56,7 +56,7 @@ LL | let _: &dyn Future<Output = ()> = █
|
||||||
= note: required for the cast from `impl Future<Output = u8>` to the object type `dyn Future<Output = ()>`
|
= note: required for the cast from `impl Future<Output = u8>` to the object type `dyn Future<Output = ()>`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/async-block-control-flow-static-semantics.rs:47:44
|
--> $DIR/async-block-control-flow-static-semantics.rs:49:44
|
||||||
|
|
|
|
||||||
LL | fn rethrow_targets_async_block_not_fn() -> Result<u8, MyErr> {
|
LL | fn rethrow_targets_async_block_not_fn() -> Result<u8, MyErr> {
|
||||||
| ---------------------------------- ^^^^^^^^^^^^^^^^^ expected enum `Result`, found `()`
|
| ---------------------------------- ^^^^^^^^^^^^^^^^^ expected enum `Result`, found `()`
|
||||||
|
@ -67,7 +67,7 @@ LL | fn rethrow_targets_async_block_not_fn() -> Result<u8, MyErr> {
|
||||||
found unit type `()`
|
found unit type `()`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/async-block-control-flow-static-semantics.rs:56:50
|
--> $DIR/async-block-control-flow-static-semantics.rs:58:50
|
||||||
|
|
|
|
||||||
LL | fn rethrow_targets_async_block_not_async_fn() -> Result<u8, MyErr> {
|
LL | fn rethrow_targets_async_block_not_async_fn() -> Result<u8, MyErr> {
|
||||||
| ---------------------------------------- ^^^^^^^^^^^^^^^^^ expected enum `Result`, found `()`
|
| ---------------------------------------- ^^^^^^^^^^^^^^^^^ expected enum `Result`, found `()`
|
||||||
|
|
|
@ -38,9 +38,13 @@ fn main() {
|
||||||
let v = Unit2.m(
|
let v = Unit2.m(
|
||||||
//~^ ERROR type mismatch
|
//~^ ERROR type mismatch
|
||||||
L {
|
L {
|
||||||
//~^ ERROR to be a closure that returns `Unit3`, but it actually returns `Unit4`
|
//~^ ERROR to be a closure that returns `Unit3`, but it returns `Unit4`
|
||||||
f : |x| { drop(x); Unit4 }
|
f: |x| {
|
||||||
});
|
drop(x);
|
||||||
|
Unit4
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Ty<'a> for Unit2 {
|
impl<'a> Ty<'a> for Unit2 {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
error[E0271]: type mismatch resolving `for<'r> <L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:17: 42:20]> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V`
|
error[E0271]: type mismatch resolving `for<'r> <L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:16: 42:19]> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V`
|
||||||
--> $DIR/issue-62203-hrtb-ice.rs:38:19
|
--> $DIR/issue-62203-hrtb-ice.rs:38:19
|
||||||
|
|
|
|
||||||
LL | let v = Unit2.m(
|
LL | let v = Unit2.m(
|
||||||
| ^ type mismatch resolving `for<'r> <L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:17: 42:20]> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V`
|
| ^ type mismatch resolving `for<'r> <L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:16: 42:19]> as T0<'r, (&'r u8,)>>::O == <_ as Ty<'r>>::V`
|
||||||
|
|
|
|
||||||
note: expected this to be `<_ as Ty<'_>>::V`
|
note: expected this to be `<_ as Ty<'_>>::V`
|
||||||
--> $DIR/issue-62203-hrtb-ice.rs:21:14
|
--> $DIR/issue-62203-hrtb-ice.rs:21:14
|
||||||
|
@ -22,7 +22,7 @@ LL | where
|
||||||
LL | F: for<'r> T0<'r, (<Self as Ty<'r>>::V,), O = <B as Ty<'r>>::V>,
|
LL | F: for<'r> T0<'r, (<Self as Ty<'r>>::V,), O = <B as Ty<'r>>::V>,
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ required by this bound in `T1::m`
|
| ^^^^^^^^^^^^^^^^^^^^ required by this bound in `T1::m`
|
||||||
|
|
||||||
error[E0271]: expected `[closure@$DIR/issue-62203-hrtb-ice.rs:42:17: 42:20]` to be a closure that returns `Unit3`, but it actually returns `Unit4`
|
error[E0271]: expected `[closure@$DIR/issue-62203-hrtb-ice.rs:42:16: 42:19]` to be a closure that returns `Unit3`, but it returns `Unit4`
|
||||||
--> $DIR/issue-62203-hrtb-ice.rs:40:9
|
--> $DIR/issue-62203-hrtb-ice.rs:40:9
|
||||||
|
|
|
|
||||||
LL | let v = Unit2.m(
|
LL | let v = Unit2.m(
|
||||||
|
@ -30,11 +30,14 @@ LL | let v = Unit2.m(
|
||||||
LL |
|
LL |
|
||||||
LL | / L {
|
LL | / L {
|
||||||
LL | |
|
LL | |
|
||||||
LL | | f : |x| { drop(x); Unit4 }
|
LL | | f: |x| {
|
||||||
LL | | });
|
LL | | drop(x);
|
||||||
|
LL | | Unit4
|
||||||
|
LL | | },
|
||||||
|
LL | | },
|
||||||
| |_________^ expected struct `Unit3`, found struct `Unit4`
|
| |_________^ expected struct `Unit3`, found struct `Unit4`
|
||||||
|
|
|
|
||||||
note: required because of the requirements on the impl of `for<'r> T0<'r, (&'r u8,)>` for `L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:17: 42:20]>`
|
note: required because of the requirements on the impl of `for<'r> T0<'r, (&'r u8,)>` for `L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:16: 42:19]>`
|
||||||
--> $DIR/issue-62203-hrtb-ice.rs:17:16
|
--> $DIR/issue-62203-hrtb-ice.rs:17:16
|
||||||
|
|
|
|
||||||
LL | impl<'a, A, T> T0<'a, A> for L<T>
|
LL | impl<'a, A, T> T0<'a, A> for L<T>
|
||||||
|
|
|
@ -7,7 +7,7 @@ type F = impl core::future::Future<Output = u8>;
|
||||||
struct Bug {
|
struct Bug {
|
||||||
V1: [(); {
|
V1: [(); {
|
||||||
fn concrete_use() -> F {
|
fn concrete_use() -> F {
|
||||||
//~^ ERROR expected `impl Future<Output = ()>` to be a future that yields `u8`, but it actually yields `()`
|
//~^ ERROR expected `impl Future<Output = ()>` to be a future that resolves to `u8`, but it resolves to `()`
|
||||||
async {}
|
async {}
|
||||||
}
|
}
|
||||||
let f: F = async { 1 };
|
let f: F = async { 1 };
|
||||||
|
|
|
@ -16,7 +16,7 @@ LL | let f: F = async { 1 };
|
||||||
LL | }],
|
LL | }],
|
||||||
| - value is dropped here
|
| - value is dropped here
|
||||||
|
|
||||||
error[E0271]: expected `impl Future<Output = ()>` to be a future that yields `u8`, but it actually yields `()`
|
error[E0271]: expected `impl Future<Output = ()>` to be a future that resolves to `u8`, but it resolves to `()`
|
||||||
--> $DIR/issue-78722.rs:9:30
|
--> $DIR/issue-78722.rs:9:30
|
||||||
|
|
|
|
||||||
LL | fn concrete_use() -> F {
|
LL | fn concrete_use() -> F {
|
||||||
|
|
|
@ -27,7 +27,7 @@ fn baz(n: bool) -> i32 {
|
||||||
|
|
||||||
const fn return_ty_mismatch() {
|
const fn return_ty_mismatch() {
|
||||||
const_eval_select((1,), foo, bar);
|
const_eval_select((1,), foo, bar);
|
||||||
//~^ ERROR expected `fn(i32) -> bool {bar}` to be a fn item that returns `i32`, but it actually returns `bool`
|
//~^ ERROR expected `fn(i32) -> bool {bar}` to be a fn item that returns `i32`, but it returns `bool`
|
||||||
}
|
}
|
||||||
|
|
||||||
const fn args_ty_mismatch() {
|
const fn args_ty_mismatch() {
|
||||||
|
|
|
@ -51,7 +51,7 @@ note: required by a bound in `const_eval_select`
|
||||||
LL | G: FnOnce<ARG, Output = RET> + ~const Destruct,
|
LL | G: FnOnce<ARG, Output = RET> + ~const Destruct,
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `const_eval_select`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `const_eval_select`
|
||||||
|
|
||||||
error[E0271]: expected `fn(i32) -> bool {bar}` to be a fn item that returns `i32`, but it actually returns `bool`
|
error[E0271]: expected `fn(i32) -> bool {bar}` to be a fn item that returns `i32`, but it returns `bool`
|
||||||
--> $DIR/const-eval-select-bad.rs:29:5
|
--> $DIR/const-eval-select-bad.rs:29:5
|
||||||
|
|
|
|
||||||
LL | const_eval_select((1,), foo, bar);
|
LL | const_eval_select((1,), foo, bar);
|
||||||
|
|
|
@ -3,12 +3,13 @@ use std::vec::IntoIter;
|
||||||
pub fn get_tok(it: &mut IntoIter<u8>) {
|
pub fn get_tok(it: &mut IntoIter<u8>) {
|
||||||
let mut found_e = false;
|
let mut found_e = false;
|
||||||
|
|
||||||
let temp: Vec<u8> = it.take_while(|&x| {
|
let temp: Vec<u8> = it
|
||||||
found_e = true;
|
.take_while(|&x| {
|
||||||
false
|
found_e = true;
|
||||||
})
|
false
|
||||||
|
})
|
||||||
.cloned()
|
.cloned()
|
||||||
//~^ ERROR to be an iterator of `&_`, but it actually returns items of `u8`
|
//~^ ERROR to be an iterator that yields `&_`, but it yields `u8`
|
||||||
.collect(); //~ ERROR the method
|
.collect(); //~ ERROR the method
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error[E0271]: expected `TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:6:39: 6:43]>` to be an iterator of `&_`, but it actually returns items of `u8`
|
error[E0271]: expected `TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:7:21: 7:25]>` to be an iterator that yields `&_`, but it yields `u8`
|
||||||
--> $DIR/issue-31173.rs:10:10
|
--> $DIR/issue-31173.rs:11:10
|
||||||
|
|
|
|
||||||
LL | .cloned()
|
LL | .cloned()
|
||||||
| ^^^^^^ expected reference, found `u8`
|
| ^^^^^^ expected reference, found `u8`
|
||||||
|
@ -12,11 +12,11 @@ note: required by a bound in `cloned`
|
||||||
LL | Self: Sized + Iterator<Item = &'a T>,
|
LL | Self: Sized + Iterator<Item = &'a T>,
|
||||||
| ^^^^^^^^^^^^ required by this bound in `cloned`
|
| ^^^^^^^^^^^^ required by this bound in `cloned`
|
||||||
|
|
||||||
error[E0599]: the method `collect` exists for struct `Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:6:39: 6:43]>>`, but its trait bounds were not satisfied
|
error[E0599]: the method `collect` exists for struct `Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:7:21: 7:25]>>`, but its trait bounds were not satisfied
|
||||||
--> $DIR/issue-31173.rs:12:10
|
--> $DIR/issue-31173.rs:13:10
|
||||||
|
|
|
|
||||||
LL | .collect();
|
LL | .collect();
|
||||||
| ^^^^^^^ method cannot be called on `Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:6:39: 6:43]>>` due to unsatisfied trait bounds
|
| ^^^^^^^ method cannot be called on `Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:7:21: 7:25]>>` due to unsatisfied trait bounds
|
||||||
|
|
|
|
||||||
::: $SRC_DIR/core/src/iter/adapters/cloned.rs:LL:COL
|
::: $SRC_DIR/core/src/iter/adapters/cloned.rs:LL:COL
|
||||||
|
|
|
|
||||||
|
@ -29,10 +29,10 @@ LL | pub struct TakeWhile<I, P> {
|
||||||
| -------------------------- doesn't satisfy `<_ as Iterator>::Item = &_`
|
| -------------------------- doesn't satisfy `<_ as Iterator>::Item = &_`
|
||||||
|
|
|
|
||||||
= note: the following trait bounds were not satisfied:
|
= note: the following trait bounds were not satisfied:
|
||||||
`<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:6:39: 6:43]> as Iterator>::Item = &_`
|
`<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:7:21: 7:25]> as Iterator>::Item = &_`
|
||||||
which is required by `Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:6:39: 6:43]>>: Iterator`
|
which is required by `Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:7:21: 7:25]>>: Iterator`
|
||||||
`Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:6:39: 6:43]>>: Iterator`
|
`Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:7:21: 7:25]>>: Iterator`
|
||||||
which is required by `&mut Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:6:39: 6:43]>>: Iterator`
|
which is required by `&mut Cloned<TakeWhile<&mut std::vec::IntoIter<u8>, [closure@$DIR/issue-31173.rs:7:21: 7:25]>>: Iterator`
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
for _ in HashMap::new().iter().cloned() {} //~ ERROR expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator of `&_`, but it actually returns items of `(&_, &_)`
|
for _ in HashMap::new().iter().cloned() {} //~ ERROR expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator that yields `&_`, but it yields `(&_, &_)`
|
||||||
//~^ ERROR expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator of `&_`, but it actually returns items of `(&_, &_)`
|
//~^ ERROR expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator that yields `&_`, but it yields `(&_, &_)`
|
||||||
//~| ERROR expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator of `&_`, but it actually returns items of `(&_, &_)`
|
//~| ERROR expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator that yields `&_`, but it yields `(&_, &_)`
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0271]: expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator of `&_`, but it actually returns items of `(&_, &_)`
|
error[E0271]: expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator that yields `&_`, but it yields `(&_, &_)`
|
||||||
--> $DIR/issue-33941.rs:6:36
|
--> $DIR/issue-33941.rs:6:36
|
||||||
|
|
|
|
||||||
LL | for _ in HashMap::new().iter().cloned() {}
|
LL | for _ in HashMap::new().iter().cloned() {}
|
||||||
|
@ -12,7 +12,7 @@ note: required by a bound in `cloned`
|
||||||
LL | Self: Sized + Iterator<Item = &'a T>,
|
LL | Self: Sized + Iterator<Item = &'a T>,
|
||||||
| ^^^^^^^^^^^^ required by this bound in `cloned`
|
| ^^^^^^^^^^^^ required by this bound in `cloned`
|
||||||
|
|
||||||
error[E0271]: expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator of `&_`, but it actually returns items of `(&_, &_)`
|
error[E0271]: expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator that yields `&_`, but it yields `(&_, &_)`
|
||||||
--> $DIR/issue-33941.rs:6:14
|
--> $DIR/issue-33941.rs:6:14
|
||||||
|
|
|
|
||||||
LL | for _ in HashMap::new().iter().cloned() {}
|
LL | for _ in HashMap::new().iter().cloned() {}
|
||||||
|
@ -23,7 +23,7 @@ LL | for _ in HashMap::new().iter().cloned() {}
|
||||||
= note: required because of the requirements on the impl of `Iterator` for `Cloned<std::collections::hash_map::Iter<'_, _, _>>`
|
= note: required because of the requirements on the impl of `Iterator` for `Cloned<std::collections::hash_map::Iter<'_, _, _>>`
|
||||||
= note: required because of the requirements on the impl of `IntoIterator` for `Cloned<std::collections::hash_map::Iter<'_, _, _>>`
|
= note: required because of the requirements on the impl of `IntoIterator` for `Cloned<std::collections::hash_map::Iter<'_, _, _>>`
|
||||||
|
|
||||||
error[E0271]: expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator of `&_`, but it actually returns items of `(&_, &_)`
|
error[E0271]: expected `std::collections::hash_map::Iter<'_, _, _>` to be an iterator that yields `&_`, but it yields `(&_, &_)`
|
||||||
--> $DIR/issue-33941.rs:6:14
|
--> $DIR/issue-33941.rs:6:14
|
||||||
|
|
|
|
||||||
LL | for _ in HashMap::new().iter().cloned() {}
|
LL | for _ in HashMap::new().iter().cloned() {}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0271]: expected `[closure@$DIR/fallback-closure-wrap.rs:18:40: 18:47]` to be a closure that returns `()`, but it actually returns `!`
|
error[E0271]: expected `[closure@$DIR/fallback-closure-wrap.rs:18:40: 18:47]` to be a closure that returns `()`, but it returns `!`
|
||||||
--> $DIR/fallback-closure-wrap.rs:18:31
|
--> $DIR/fallback-closure-wrap.rs:18:31
|
||||||
|
|
|
|
||||||
LL | let error = Closure::wrap(Box::new(move || {
|
LL | let error = Closure::wrap(Box::new(move || {
|
||||||
|
|
|
@ -16,7 +16,7 @@ use std::marker::PhantomData;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let error = Closure::wrap(Box::new(move || {
|
let error = Closure::wrap(Box::new(move || {
|
||||||
//[fallback]~^ to be a closure that returns `()`, but it actually returns `!`
|
//[fallback]~^ to be a closure that returns `()`, but it returns `!`
|
||||||
panic!("Can't connect to server.");
|
panic!("Can't connect to server.");
|
||||||
}) as Box<dyn FnMut()>);
|
}) as Box<dyn FnMut()>);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,14 +4,13 @@
|
||||||
|
|
||||||
use std::vec::IntoIter;
|
use std::vec::IntoIter;
|
||||||
|
|
||||||
pub trait Foo: Iterator<Item=<Self as Foo>::Key> {
|
pub trait Foo: Iterator<Item = <Self as Foo>::Key> {
|
||||||
type Key;
|
type Key;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Foo for IntoIter<i32> {
|
impl Foo for IntoIter<i32> {
|
||||||
type Key = u32;
|
type Key = u32;
|
||||||
//~^ ERROR expected `std::vec::IntoIter<i32>` to be an iterator of `u32`, but it actually returns items of `i32`
|
//~^ ERROR expected `std::vec::IntoIter<i32>` to be an iterator that yields `u32`, but it yields `i32`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {}
|
||||||
}
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0271]: expected `std::vec::IntoIter<i32>` to be an iterator of `u32`, but it actually returns items of `i32`
|
error[E0271]: expected `std::vec::IntoIter<i32>` to be an iterator that yields `u32`, but it yields `i32`
|
||||||
--> $DIR/assoc-type-in-superbad.rs:12:16
|
--> $DIR/assoc-type-in-superbad.rs:12:16
|
||||||
|
|
|
|
||||||
LL | type Key = u32;
|
LL | type Key = u32;
|
||||||
|
@ -7,8 +7,8 @@ LL | type Key = u32;
|
||||||
note: required by a bound in `Foo`
|
note: required by a bound in `Foo`
|
||||||
--> $DIR/assoc-type-in-superbad.rs:7:25
|
--> $DIR/assoc-type-in-superbad.rs:7:25
|
||||||
|
|
|
|
||||||
LL | pub trait Foo: Iterator<Item=<Self as Foo>::Key> {
|
LL | pub trait Foo: Iterator<Item = <Self as Foo>::Key> {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Foo`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Foo`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ trait Foo {
|
||||||
|
|
||||||
impl Foo for () {
|
impl Foo for () {
|
||||||
type Bar = std::vec::IntoIter<u32>;
|
type Bar = std::vec::IntoIter<u32>;
|
||||||
//~^ ERROR expected `std::vec::IntoIter<u32>` to be an iterator of `X`, but it actually returns items of `u32`
|
//~^ ERROR expected `std::vec::IntoIter<u32>` to be an iterator that yields `X`, but it yields `u32`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn incoherent() {
|
fn incoherent() {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0271]: expected `std::vec::IntoIter<u32>` to be an iterator of `X`, but it actually returns items of `u32`
|
error[E0271]: expected `std::vec::IntoIter<u32>` to be an iterator that yields `X`, but it yields `u32`
|
||||||
--> $DIR/issue-57961.rs:10:16
|
--> $DIR/issue-57961.rs:10:16
|
||||||
|
|
|
|
||||||
LL | type X = impl Sized;
|
LL | type X = impl Sized;
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
// edition:2018
|
// edition:2018
|
||||||
|
|
||||||
type AsyncFnPtr = Box<
|
type AsyncFnPtr = Box<dyn Fn() -> std::pin::Pin<Box<dyn std::future::Future<Output = ()>>>>;
|
||||||
dyn Fn() -> std::pin::Pin<Box<dyn std::future::Future<Output = ()>>>,
|
|
||||||
>;
|
|
||||||
|
|
||||||
async fn test() {}
|
async fn test() {}
|
||||||
|
|
||||||
#[allow(unused_must_use)]
|
#[allow(unused_must_use)]
|
||||||
fn main() {
|
fn main() {
|
||||||
Box::new(test) as AsyncFnPtr;
|
Box::new(test) as AsyncFnPtr;
|
||||||
//~^ ERROR expected `fn() -> impl Future<Output = ()> {test}` to be a fn item that returns `Pin<Box<(dyn Future<Output = ()> + 'static)>>`, but it actually returns `impl Future<Output = ()>`
|
//~^ ERROR expected `fn() -> impl Future<Output = ()> {test}` to be a fn item that returns `Pin<Box<(dyn Future<Output = ()> + 'static)>>`, but it returns `impl Future<Output = ()>`
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
error[E0271]: expected `fn() -> impl Future<Output = ()> {test}` to be a fn item that returns `Pin<Box<(dyn Future<Output = ()> + 'static)>>`, but it actually returns `impl Future<Output = ()>`
|
error[E0271]: expected `fn() -> impl Future<Output = ()> {test}` to be a fn item that returns `Pin<Box<(dyn Future<Output = ()> + 'static)>>`, but it returns `impl Future<Output = ()>`
|
||||||
--> $DIR/issue-98604.rs:11:5
|
--> $DIR/issue-98604.rs:9:5
|
||||||
|
|
|
|
||||||
LL | Box::new(test) as AsyncFnPtr;
|
LL | Box::new(test) as AsyncFnPtr;
|
||||||
| ^^^^^^^^^^^^^^ expected struct `Pin`, found opaque type
|
| ^^^^^^^^^^^^^^ expected struct `Pin`, found opaque type
|
||||||
|
|
|
|
||||||
note: while checking the return type of the `async fn`
|
note: while checking the return type of the `async fn`
|
||||||
--> $DIR/issue-98604.rs:7:17
|
--> $DIR/issue-98604.rs:5:17
|
||||||
|
|
|
|
||||||
LL | async fn test() {}
|
LL | async fn test() {}
|
||||||
| ^ checked the `Output` of this `async fn`, found opaque type
|
| ^ checked the `Output` of this `async fn`, found opaque type
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
fn hi() -> impl Sized { std::ptr::null::<u8>() }
|
fn hi() -> impl Sized {
|
||||||
|
std::ptr::null::<u8>()
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let b: Box<dyn Fn() -> Box<u8>> = Box::new(hi);
|
let b: Box<dyn Fn() -> Box<u8>> = Box::new(hi);
|
||||||
//~^ ERROR expected `fn() -> impl Sized {hi}` to be a fn item that returns `Box<u8>`, but it actually returns `impl Sized`
|
//~^ ERROR expected `fn() -> impl Sized {hi}` to be a fn item that returns `Box<u8>`, but it returns `impl Sized`
|
||||||
let boxed = b();
|
let boxed = b();
|
||||||
let null = *boxed;
|
let null = *boxed;
|
||||||
println!("{null:?}");
|
println!("{null:?}");
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
error[E0271]: expected `fn() -> impl Sized {hi}` to be a fn item that returns `Box<u8>`, but it actually returns `impl Sized`
|
error[E0271]: expected `fn() -> impl Sized {hi}` to be a fn item that returns `Box<u8>`, but it returns `impl Sized`
|
||||||
--> $DIR/issue-98608.rs:4:39
|
--> $DIR/issue-98608.rs:6:39
|
||||||
|
|
|
|
||||||
LL | fn hi() -> impl Sized { std::ptr::null::<u8>() }
|
LL | fn hi() -> impl Sized {
|
||||||
| ---------- the found opaque type
|
| ---------- the found opaque type
|
||||||
...
|
...
|
||||||
LL | let b: Box<dyn Fn() -> Box<u8>> = Box::new(hi);
|
LL | let b: Box<dyn Fn() -> Box<u8>> = Box::new(hi);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue