From 02e3fb89a7e0c7944ed8237f5d307322879b6fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Sun, 15 Sep 2019 21:58:20 -0700 Subject: [PATCH] When possible point at argument causing item obligation failure --- src/librustc_typeck/check/mod.rs | 40 +- src/librustc_typeck/check/wfcheck.rs | 10 +- .../associated-types-bound-failure.stderr | 4 +- .../incorrect-syntax-suggestions.rs | 3 +- .../incorrect-syntax-suggestions.stderr | 75 ++-- src/test/ui/closure-expected.stderr | 4 +- .../ui/closures/closure-bounds-subtype.stderr | 4 +- .../core-traits-no-impls-length-33.stderr | 4 +- src/test/ui/derives/deriving-copyclone.stderr | 12 +- .../issue-39802-show-5-trait-impls.stderr | 12 +- src/test/ui/error-codes/E0277.stderr | 4 +- .../ui/error-should-say-copy-not-pod.stderr | 4 +- .../ui/extern/extern-wrong-value-type.stderr | 4 +- src/test/ui/fn/fn-trait-formatting.stderr | 4 +- src/test/ui/for/for-c-in-str.rs | 3 + src/test/ui/generator/static-not-unpin.stderr | 4 +- ...igher-ranker-supertraits-transitive.stderr | 4 +- .../hrtb-higher-ranker-supertraits.stderr | 8 +- src/test/ui/issues/issue-17651.rs | 1 + src/test/ui/issues/issue-17651.stderr | 15 +- src/test/ui/issues/issue-23966.stderr | 4 +- src/test/ui/issues/issue-25076.stderr | 4 +- src/test/ui/issues/issue-28098.rs | 2 + src/test/ui/issues/issue-28098.stderr | 78 ++-- src/test/ui/issues/issue-47706-trait.stderr | 4 +- src/test/ui/issues/issue-47706.stderr | 8 +- src/test/ui/issues/issue-60283.stderr | 10 +- .../kindck/kindck-impl-type-params-2.stderr | 4 +- .../kindck/kindck-inherited-copy-bound.stderr | 4 +- src/test/ui/mismatched_types/E0631.stderr | 8 +- .../mismatched_types/closure-arg-count.stderr | 20 +- .../closure-arg-type-mismatch.stderr | 10 +- .../ui/mismatched_types/fn-variance-1.stderr | 8 +- .../unboxed-closures-vtable-mismatch.stderr | 4 +- src/test/ui/mutexguard-sync.stderr | 4 +- src/test/ui/namespace/namespace-mix.stderr | 176 ++++----- src/test/ui/no_send-rc.stderr | 4 +- src/test/ui/no_send-struct.stderr | 4 +- src/test/ui/no_share-struct.stderr | 4 +- src/test/ui/object-does-not-impl-trait.stderr | 4 +- .../ui/on-unimplemented/multiple-impls.stderr | 62 +-- src/test/ui/on-unimplemented/on-impl.stderr | 6 +- src/test/ui/phantom-oibit.stderr | 8 +- .../disallowed-positions.rs | 24 +- .../disallowed-positions.stderr | 365 +++++++++++------- src/test/ui/str/str-idx.stderr | 8 +- src/test/ui/str/str-mut-idx.stderr | 8 +- ...rg-where-it-should-have-been-called.stderr | 4 +- ...rg-where-it-should-have-been-called.stderr | 4 +- src/test/ui/suggestions/issue-62843.stderr | 4 +- ...inductive-overflow-supertrait-oibit.stderr | 4 +- .../ui/traits/traits-negative-impls.stderr | 24 +- .../trivial-bounds/trivial-bounds-leak.stderr | 8 +- src/test/ui/try-operator-on-main.rs | 4 +- src/test/ui/try-operator-on-main.stderr | 31 +- src/test/ui/type/type-check-defaults.stderr | 32 +- .../typeck/typeck-unsafe-always-share.stderr | 12 +- .../unboxed-closures-fnmut-as-fn.stderr | 4 +- .../unboxed-closures-unsafe-extern-fn.stderr | 20 +- .../unboxed-closures-wrong-abi.stderr | 20 +- ...d-closures-wrong-arg-type-extern-fn.stderr | 20 +- src/test/ui/unsized3.stderr | 20 +- src/test/ui/vtable-res-trait-param.stderr | 4 +- ...traints-are-local-for-inherent-impl.stderr | 4 +- ...onstraints-are-local-for-trait-impl.stderr | 4 +- .../where-clauses-method-unsatisfied.stderr | 4 +- 66 files changed, 726 insertions(+), 565 deletions(-) diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 1197160fa95..90489bd8d89 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -3253,6 +3253,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { formal_tys.clone() }; + let mut final_arg_types: Vec<(usize, Ty<'_>)> = vec![]; + // Check the arguments. // We do this in a pretty awful way: first we type-check any arguments // that are not closures, then we type-check the closures. This is so @@ -3265,7 +3267,32 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // an "opportunistic" vtable resolution of any trait bounds on // the call. This helps coercions. if check_closures { - self.select_obligations_where_possible(false); + // We don't use `select_obligations_where_possible` to try to figure out if the + // obligation is comming from a single fn call argument, and if it is, we point + // at the expression corresponding to that argument, instead of the call. + if let Err( + mut errors, + ) = self.fulfillment_cx.borrow_mut().select_where_possible(self) { + for error in &mut errors { + if let ty::Predicate::Trait(predicate) = error.obligation.predicate { + let mut referenced_in = vec![]; + for (i, ty) in &final_arg_types { + let ty = self.resolve_vars_if_possible(ty); + info!("final ty {} {:?}", i, ty); + for ty in ty.walk() { + info!("walk {:?}", ty); + if ty == predicate.skip_binder().self_ty() { + referenced_in.push(*i); + } + } + } + if referenced_in.len() == 1 { + error.obligation.cause.span = args[referenced_in[0]].span; + } + } + } + self.report_fulfillment_errors(&errors, self.inh.body_id, false); + } } // For C-variadic functions, we don't have a declared type for all of @@ -3311,6 +3338,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // We're processing function arguments so we definitely want to use // two-phase borrows. self.demand_coerce(&arg, checked_ty, coerce_ty, AllowTwoPhase::Yes); + final_arg_types.push((i, coerce_ty)); // 3. Relate the expected type and the formal one, // if the expected type was used for the coercion. @@ -3514,8 +3542,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // Check bounds on type arguments used in the path. let bounds = self.instantiate_bounds(path_span, did, substs); - let cause = traits::ObligationCause::new(path_span, self.body_id, - traits::ItemObligation(did)); + let cause = traits::ObligationCause::new( + path_span, + self.body_id, + traits::ItemObligation(did), + ); self.add_obligations_for_parameters(cause, &bounds); Some((variant, ty)) @@ -4639,7 +4670,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let bounds = self.instantiate_bounds(span, def_id, &substs); self.add_obligations_for_parameters( traits::ObligationCause::new(span, self.body_id, traits::ItemObligation(def_id)), - &bounds); + &bounds, + ); // Substitute the values for the type parameters into the type of // the referenced item. diff --git a/src/librustc_typeck/check/wfcheck.rs b/src/librustc_typeck/check/wfcheck.rs index ac8ee43dd08..b0e886a2aa2 100644 --- a/src/librustc_typeck/check/wfcheck.rs +++ b/src/librustc_typeck/check/wfcheck.rs @@ -506,7 +506,7 @@ fn check_where_clauses<'tcx, 'fcx>( }); // Now we build the substituted predicates. - let default_obligations = predicates.predicates.iter().flat_map(|&(pred, _)| { + let default_obligations = predicates.predicates.iter().flat_map(|&(pred, sp)| { #[derive(Default)] struct CountParams { params: FxHashSet } impl<'tcx> ty::fold::TypeVisitor<'tcx> for CountParams { @@ -539,9 +539,9 @@ fn check_where_clauses<'tcx, 'fcx>( // Avoid duplication of predicates that contain no parameters, for example. None } else { - Some(substituted_pred) + Some((substituted_pred, sp)) } - }).map(|pred| { + }).map(|(pred, sp)| { // Convert each of those into an obligation. So if you have // something like `struct Foo`, we would // take that predicate `T: Copy`, substitute to `String: Copy` @@ -551,8 +551,8 @@ fn check_where_clauses<'tcx, 'fcx>( // Note the subtle difference from how we handle `predicates` // below: there, we are not trying to prove those predicates // to be *true* but merely *well-formed*. - let pred = fcx.normalize_associated_types_in(span, &pred); - let cause = traits::ObligationCause::new(span, fcx.body_id, traits::ItemObligation(def_id)); + let pred = fcx.normalize_associated_types_in(sp, &pred); + let cause = traits::ObligationCause::new(sp, fcx.body_id, traits::ItemObligation(def_id)); traits::Obligation::new(cause, fcx.param_env, pred) }); diff --git a/src/test/ui/associated-types/associated-types-bound-failure.stderr b/src/test/ui/associated-types/associated-types-bound-failure.stderr index 54654b95edd..85acf134d51 100644 --- a/src/test/ui/associated-types/associated-types-bound-failure.stderr +++ b/src/test/ui/associated-types/associated-types-bound-failure.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `::R: ToInt` is not satisfied - --> $DIR/associated-types-bound-failure.rs:17:5 + --> $DIR/associated-types-bound-failure.rs:17:19 | LL | fn to_int(&self) -> isize; | -------------------------- required by `ToInt::to_int` ... LL | ToInt::to_int(&g.get()) - | ^^^^^^^^^^^^^ the trait `ToInt` is not implemented for `::R` + | ^^^^^^^^ the trait `ToInt` is not implemented for `::R` | = help: consider adding a `where ::R: ToInt` bound diff --git a/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs b/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs index 22bcbb1064d..13cc5ba1184 100644 --- a/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs +++ b/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.rs @@ -14,7 +14,8 @@ async fn foo2() -> Result<(), ()> { } async fn foo3() -> Result<(), ()> { let _ = await bar()?; //~ ERROR incorrect use of `await` - //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` + //~^ ERROR the trait bound `impl std::future::Future: std::ops::Try` is not satisfied + //~| ERROR the trait bound `impl std::future::Future: std::ops::Try` is not satisfied Ok(()) } async fn foo21() -> Result<(), ()> { diff --git a/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr b/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr index 7caa9f26bc2..a7ff14f01d4 100644 --- a/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr +++ b/src/test/ui/async-await/await-keyword/incorrect-syntax-suggestions.stderr @@ -17,103 +17,103 @@ LL | let _ = await bar()?; | ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar()?.await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:21:13 + --> $DIR/incorrect-syntax-suggestions.rs:22:13 | LL | let _ = await { bar() }; | ^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ bar() }.await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:25:13 + --> $DIR/incorrect-syntax-suggestions.rs:26:13 | LL | let _ = await(bar()); | ^^^^^^^^^^^^ help: `await` is a postfix operation: `(bar()).await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:29:13 + --> $DIR/incorrect-syntax-suggestions.rs:30:13 | LL | let _ = await { bar() }?; | ^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ bar() }.await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:33:14 + --> $DIR/incorrect-syntax-suggestions.rs:34:14 | LL | let _ = (await bar())?; | ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:37:24 + --> $DIR/incorrect-syntax-suggestions.rs:38:24 | LL | let _ = bar().await(); | ^^ help: `await` is not a method call, remove the parentheses error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:41:24 + --> $DIR/incorrect-syntax-suggestions.rs:42:24 | LL | let _ = bar().await()?; | ^^ help: `await` is not a method call, remove the parentheses error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:53:13 + --> $DIR/incorrect-syntax-suggestions.rs:54:13 | LL | let _ = await bar(); | ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:58:13 + --> $DIR/incorrect-syntax-suggestions.rs:59:13 | LL | let _ = await? bar(); | ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await?` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:63:13 + --> $DIR/incorrect-syntax-suggestions.rs:64:13 | LL | let _ = await bar()?; | ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar()?.await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:68:14 + --> $DIR/incorrect-syntax-suggestions.rs:69:14 | LL | let _ = (await bar())?; | ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:73:24 + --> $DIR/incorrect-syntax-suggestions.rs:74:24 | LL | let _ = bar().await(); | ^^ help: `await` is not a method call, remove the parentheses error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:78:24 + --> $DIR/incorrect-syntax-suggestions.rs:79:24 | LL | let _ = bar().await()?; | ^^ help: `await` is not a method call, remove the parentheses error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:106:13 + --> $DIR/incorrect-syntax-suggestions.rs:107:13 | LL | let _ = await!(bar()); | ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:110:13 + --> $DIR/incorrect-syntax-suggestions.rs:111:13 | LL | let _ = await!(bar())?; | ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:115:17 + --> $DIR/incorrect-syntax-suggestions.rs:116:17 | LL | let _ = await!(bar())?; | ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await` error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:123:17 + --> $DIR/incorrect-syntax-suggestions.rs:124:17 | LL | let _ = await!(bar())?; | ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await` error: expected expression, found `=>` - --> $DIR/incorrect-syntax-suggestions.rs:131:25 + --> $DIR/incorrect-syntax-suggestions.rs:132:25 | LL | match await { await => () } | ----- ^^ expected expression @@ -121,13 +121,13 @@ LL | match await { await => () } | while parsing this incorrect await expression error: incorrect use of `await` - --> $DIR/incorrect-syntax-suggestions.rs:131:11 + --> $DIR/incorrect-syntax-suggestions.rs:132:11 | LL | match await { await => () } | ^^^^^^^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ await => () }.await` error: expected one of `.`, `?`, `{`, or an operator, found `}` - --> $DIR/incorrect-syntax-suggestions.rs:134:1 + --> $DIR/incorrect-syntax-suggestions.rs:135:1 | LL | match await { await => () } | ----- - expected one of `.`, `?`, `{`, or an operator here @@ -138,7 +138,7 @@ LL | } | ^ unexpected token error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:53:13 + --> $DIR/incorrect-syntax-suggestions.rs:54:13 | LL | fn foo9() -> Result<(), ()> { | ---- this is not `async` @@ -146,7 +146,7 @@ LL | let _ = await bar(); | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:58:13 + --> $DIR/incorrect-syntax-suggestions.rs:59:13 | LL | fn foo10() -> Result<(), ()> { | ----- this is not `async` @@ -154,7 +154,7 @@ LL | let _ = await? bar(); | ^^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:63:13 + --> $DIR/incorrect-syntax-suggestions.rs:64:13 | LL | fn foo11() -> Result<(), ()> { | ----- this is not `async` @@ -162,7 +162,7 @@ LL | let _ = await bar()?; | ^^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:68:14 + --> $DIR/incorrect-syntax-suggestions.rs:69:14 | LL | fn foo12() -> Result<(), ()> { | ----- this is not `async` @@ -170,7 +170,7 @@ LL | let _ = (await bar())?; | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:73:13 + --> $DIR/incorrect-syntax-suggestions.rs:74:13 | LL | fn foo13() -> Result<(), ()> { | ----- this is not `async` @@ -178,7 +178,7 @@ LL | let _ = bar().await(); | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:78:13 + --> $DIR/incorrect-syntax-suggestions.rs:79:13 | LL | fn foo14() -> Result<(), ()> { | ----- this is not `async` @@ -186,7 +186,7 @@ LL | let _ = bar().await()?; | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:83:13 + --> $DIR/incorrect-syntax-suggestions.rs:84:13 | LL | fn foo15() -> Result<(), ()> { | ----- this is not `async` @@ -194,7 +194,7 @@ LL | let _ = bar().await; | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:87:13 + --> $DIR/incorrect-syntax-suggestions.rs:88:13 | LL | fn foo16() -> Result<(), ()> { | ----- this is not `async` @@ -202,7 +202,7 @@ LL | let _ = bar().await?; | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:92:17 + --> $DIR/incorrect-syntax-suggestions.rs:93:17 | LL | fn foo() -> Result<(), ()> { | --- this is not `async` @@ -210,7 +210,7 @@ LL | let _ = bar().await?; | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:99:17 + --> $DIR/incorrect-syntax-suggestions.rs:100:17 | LL | let foo = || { | -- this is not `async` @@ -218,7 +218,7 @@ LL | let _ = bar().await?; | ^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:115:17 + --> $DIR/incorrect-syntax-suggestions.rs:116:17 | LL | fn foo() -> Result<(), ()> { | --- this is not `async` @@ -226,22 +226,27 @@ LL | let _ = await!(bar())?; | ^^^^^^^^^^^^^ only allowed inside `async` functions and blocks error[E0728]: `await` is only allowed inside `async` functions and blocks - --> $DIR/incorrect-syntax-suggestions.rs:123:17 + --> $DIR/incorrect-syntax-suggestions.rs:124:17 | LL | let foo = || { | -- this is not `async` LL | let _ = await!(bar())?; | ^^^^^^^^^^^^^ only allowed inside `async` functions and blocks -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` +error[E0277]: the trait bound `impl std::future::Future: std::ops::Try` is not satisfied --> $DIR/incorrect-syntax-suggestions.rs:16:19 | LL | let _ = await bar()?; - | ^^^^^^ the `?` operator cannot be applied to type `impl std::future::Future` + | ^^^^^ the trait `std::ops::Try` is not implemented for `impl std::future::Future` | - = help: the trait `std::ops::Try` is not implemented for `impl std::future::Future` = note: required by `std::ops::Try::into_result` -error: aborting due to 35 previous errors +error[E0277]: the trait bound `impl std::future::Future: std::ops::Try` is not satisfied + --> $DIR/incorrect-syntax-suggestions.rs:16:19 + | +LL | let _ = await bar()?; + | ^^^^^^ the trait `std::ops::Try` is not implemented for `impl std::future::Future` + +error: aborting due to 36 previous errors For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/closure-expected.stderr b/src/test/ui/closure-expected.stderr index ff77423577d..ae4f4d69b5e 100644 --- a/src/test/ui/closure-expected.stderr +++ b/src/test/ui/closure-expected.stderr @@ -1,8 +1,8 @@ error[E0277]: expected a `std::ops::FnOnce<()>` closure, found `{integer}` - --> $DIR/closure-expected.rs:3:15 + --> $DIR/closure-expected.rs:3:23 | LL | let y = x.or_else(4); - | ^^^^^^^ expected an `FnOnce<()>` closure, found `{integer}` + | ^ expected an `FnOnce<()>` closure, found `{integer}` | = help: the trait `std::ops::FnOnce<()>` is not implemented for `{integer}` = note: wrap the `{integer}` in a closure with no arguments: `|| { /* code */ } diff --git a/src/test/ui/closures/closure-bounds-subtype.stderr b/src/test/ui/closures/closure-bounds-subtype.stderr index 4958bd06d9b..e9b34e05ac2 100644 --- a/src/test/ui/closures/closure-bounds-subtype.stderr +++ b/src/test/ui/closures/closure-bounds-subtype.stderr @@ -1,11 +1,11 @@ error[E0277]: `F` cannot be shared between threads safely - --> $DIR/closure-bounds-subtype.rs:13:5 + --> $DIR/closure-bounds-subtype.rs:13:22 | LL | fn take_const_owned(_: F) where F: FnOnce() + Sync + Send { | ------------------------------------------------------------ required by `take_const_owned` ... LL | take_const_owned(f); - | ^^^^^^^^^^^^^^^^ `F` cannot be shared between threads safely + | ^ `F` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `F` = help: consider adding a `where F: std::marker::Sync` bound diff --git a/src/test/ui/const-generics/array-impls/core-traits-no-impls-length-33.stderr b/src/test/ui/const-generics/array-impls/core-traits-no-impls-length-33.stderr index 09652d99e8e..594a0d4b5d8 100644 --- a/src/test/ui/const-generics/array-impls/core-traits-no-impls-length-33.stderr +++ b/src/test/ui/const-generics/array-impls/core-traits-no-impls-length-33.stderr @@ -8,10 +8,10 @@ LL | println!("{:?}", [0_usize; 33]); = note: required by `std::fmt::Debug::fmt` error[E0277]: arrays only have std trait implementations for lengths 0..=32 - --> $DIR/core-traits-no-impls-length-33.rs:9:9 + --> $DIR/core-traits-no-impls-length-33.rs:9:16 | LL | set.insert([0_usize; 33]); - | ^^^^^^ the trait `std::array::LengthAtMost32` is not implemented for `[usize; 33]` + | ^^^^^^^^^^^^^ the trait `std::array::LengthAtMost32` is not implemented for `[usize; 33]` | = note: required because of the requirements on the impl of `std::cmp::Eq` for `[usize; 33]` diff --git a/src/test/ui/derives/deriving-copyclone.stderr b/src/test/ui/derives/deriving-copyclone.stderr index 46b6a0d3376..f142257604c 100644 --- a/src/test/ui/derives/deriving-copyclone.stderr +++ b/src/test/ui/derives/deriving-copyclone.stderr @@ -1,33 +1,33 @@ error[E0277]: the trait bound `C: std::marker::Copy` is not satisfied - --> $DIR/deriving-copyclone.rs:31:5 + --> $DIR/deriving-copyclone.rs:31:13 | LL | fn is_copy(_: T) {} | ------------------------- required by `is_copy` ... LL | is_copy(B { a: 1, b: C }); - | ^^^^^^^ the trait `std::marker::Copy` is not implemented for `C` + | ^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `C` | = note: required because of the requirements on the impl of `std::marker::Copy` for `B` error[E0277]: the trait bound `C: std::clone::Clone` is not satisfied - --> $DIR/deriving-copyclone.rs:32:5 + --> $DIR/deriving-copyclone.rs:32:14 | LL | fn is_clone(_: T) {} | --------------------------- required by `is_clone` ... LL | is_clone(B { a: 1, b: C }); - | ^^^^^^^^ the trait `std::clone::Clone` is not implemented for `C` + | ^^^^^^^^^^^^^^^^ the trait `std::clone::Clone` is not implemented for `C` | = note: required because of the requirements on the impl of `std::clone::Clone` for `B` error[E0277]: the trait bound `D: std::marker::Copy` is not satisfied - --> $DIR/deriving-copyclone.rs:35:5 + --> $DIR/deriving-copyclone.rs:35:13 | LL | fn is_copy(_: T) {} | ------------------------- required by `is_copy` ... LL | is_copy(B { a: 1, b: D }); - | ^^^^^^^ the trait `std::marker::Copy` is not implemented for `D` + | ^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `D` | = note: required because of the requirements on the impl of `std::marker::Copy` for `B` diff --git a/src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr b/src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr index ea2017f485a..1bd4543f231 100644 --- a/src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr +++ b/src/test/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `i8: Foo` is not satisfied - --> $DIR/issue-39802-show-5-trait-impls.rs:24:5 + --> $DIR/issue-39802-show-5-trait-impls.rs:24:21 | LL | fn bar(&self){} | ------------- required by `Foo::bar` ... LL | Foo::::bar(&1i8); - | ^^^^^^^^^^^^^^^ the trait `Foo` is not implemented for `i8` + | ^^^^ the trait `Foo` is not implemented for `i8` | = help: the following implementations were found: > @@ -15,13 +15,13 @@ LL | Foo::::bar(&1i8); > error[E0277]: the trait bound `u8: Foo` is not satisfied - --> $DIR/issue-39802-show-5-trait-impls.rs:25:5 + --> $DIR/issue-39802-show-5-trait-impls.rs:25:21 | LL | fn bar(&self){} | ------------- required by `Foo::bar` ... LL | Foo::::bar(&1u8); - | ^^^^^^^^^^^^^^^ the trait `Foo` is not implemented for `u8` + | ^^^^ the trait `Foo` is not implemented for `u8` | = help: the following implementations were found: > @@ -30,13 +30,13 @@ LL | Foo::::bar(&1u8); > error[E0277]: the trait bound `bool: Foo` is not satisfied - --> $DIR/issue-39802-show-5-trait-impls.rs:26:5 + --> $DIR/issue-39802-show-5-trait-impls.rs:26:21 | LL | fn bar(&self){} | ------------- required by `Foo::bar` ... LL | Foo::::bar(&true); - | ^^^^^^^^^^^^^^^ the trait `Foo` is not implemented for `bool` + | ^^^^^ the trait `Foo` is not implemented for `bool` | = help: the following implementations were found: > diff --git a/src/test/ui/error-codes/E0277.stderr b/src/test/ui/error-codes/E0277.stderr index 352102dd386..9cd0dc7a68e 100644 --- a/src/test/ui/error-codes/E0277.stderr +++ b/src/test/ui/error-codes/E0277.stderr @@ -11,13 +11,13 @@ LL | fn f(p: Path) { } = help: unsized locals are gated as an unstable feature error[E0277]: the trait bound `i32: Foo` is not satisfied - --> $DIR/E0277.rs:17:5 + --> $DIR/E0277.rs:17:15 | LL | fn some_func(foo: T) { | ---------------------------- required by `some_func` ... LL | some_func(5i32); - | ^^^^^^^^^ the trait `Foo` is not implemented for `i32` + | ^^^^ the trait `Foo` is not implemented for `i32` error: aborting due to 2 previous errors diff --git a/src/test/ui/error-should-say-copy-not-pod.stderr b/src/test/ui/error-should-say-copy-not-pod.stderr index 78d54c3836d..df79aeea054 100644 --- a/src/test/ui/error-should-say-copy-not-pod.stderr +++ b/src/test/ui/error-should-say-copy-not-pod.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied - --> $DIR/error-should-say-copy-not-pod.rs:6:5 + --> $DIR/error-should-say-copy-not-pod.rs:6:17 | LL | fn check_bound(_: T) {} | ---------------------------- required by `check_bound` ... LL | check_bound("nocopy".to_string()); - | ^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `std::string::String` + | ^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `std::string::String` error: aborting due to previous error diff --git a/src/test/ui/extern/extern-wrong-value-type.stderr b/src/test/ui/extern/extern-wrong-value-type.stderr index 52fcb90e6de..f2468895d21 100644 --- a/src/test/ui/extern/extern-wrong-value-type.stderr +++ b/src/test/ui/extern/extern-wrong-value-type.stderr @@ -1,11 +1,11 @@ error[E0277]: expected a `std::ops::Fn<()>` closure, found `extern "C" fn() {f}` - --> $DIR/extern-wrong-value-type.rs:9:5 + --> $DIR/extern-wrong-value-type.rs:9:11 | LL | fn is_fn(_: F) where F: Fn() {} | ------------------------------- required by `is_fn` ... LL | is_fn(f); - | ^^^^^ expected an `Fn<()>` closure, found `extern "C" fn() {f}` + | ^ expected an `Fn<()>` closure, found `extern "C" fn() {f}` | = help: the trait `std::ops::Fn<()>` is not implemented for `extern "C" fn() {f}` = note: wrap the `extern "C" fn() {f}` in a closure with no arguments: `|| { /* code */ } diff --git a/src/test/ui/fn/fn-trait-formatting.stderr b/src/test/ui/fn/fn-trait-formatting.stderr index 20d7d9ea5b7..4d610b49dff 100644 --- a/src/test/ui/fn/fn-trait-formatting.stderr +++ b/src/test/ui/fn/fn-trait-formatting.stderr @@ -26,13 +26,13 @@ LL | let _: () = (box || -> isize { unimplemented!() }) as Box isize>` error[E0277]: expected a `std::ops::Fn<(isize,)>` closure, found `{integer}` - --> $DIR/fn-trait-formatting.rs:19:5 + --> $DIR/fn-trait-formatting.rs:19:14 | LL | fn needs_fn(x: F) where F: Fn(isize) -> isize {} | ------------------------------------------------ required by `needs_fn` ... LL | needs_fn(1); - | ^^^^^^^^ expected an `Fn<(isize,)>` closure, found `{integer}` + | ^ expected an `Fn<(isize,)>` closure, found `{integer}` | = help: the trait `std::ops::Fn<(isize,)>` is not implemented for `{integer}` diff --git a/src/test/ui/for/for-c-in-str.rs b/src/test/ui/for/for-c-in-str.rs index 0fbc796d7c0..1871cf9d238 100644 --- a/src/test/ui/for/for-c-in-str.rs +++ b/src/test/ui/for/for-c-in-str.rs @@ -6,6 +6,9 @@ fn main() { //~| NOTE `&str` is not an iterator //~| HELP the trait `std::iter::Iterator` is not implemented for `&str` //~| NOTE required by `std::iter::IntoIterator::into_iter` + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop println!(); } } diff --git a/src/test/ui/generator/static-not-unpin.stderr b/src/test/ui/generator/static-not-unpin.stderr index 28a6fac5b85..b7871ee3478 100644 --- a/src/test/ui/generator/static-not-unpin.stderr +++ b/src/test/ui/generator/static-not-unpin.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `[static generator@$DIR/static-not-unpin.rs:11:25: 13:6 _]: std::marker::Unpin` is not satisfied - --> $DIR/static-not-unpin.rs:14:5 + --> $DIR/static-not-unpin.rs:14:18 | LL | fn assert_unpin(_: T) { | ------------------------------- required by `assert_unpin` ... LL | assert_unpin(generator); - | ^^^^^^^^^^^^ the trait `std::marker::Unpin` is not implemented for `[static generator@$DIR/static-not-unpin.rs:11:25: 13:6 _]` + | ^^^^^^^^^ the trait `std::marker::Unpin` is not implemented for `[static generator@$DIR/static-not-unpin.rs:11:25: 13:6 _]` error: aborting due to previous error diff --git a/src/test/ui/hrtb/hrtb-higher-ranker-supertraits-transitive.stderr b/src/test/ui/hrtb/hrtb-higher-ranker-supertraits-transitive.stderr index 0cddd353d67..18f49089302 100644 --- a/src/test/ui/hrtb/hrtb-higher-ranker-supertraits-transitive.stderr +++ b/src/test/ui/hrtb/hrtb-higher-ranker-supertraits-transitive.stderr @@ -1,5 +1,5 @@ error[E0277]: the trait bound `for<'ccx> B: Bar<'ccx>` is not satisfied - --> $DIR/hrtb-higher-ranker-supertraits-transitive.rs:47:5 + --> $DIR/hrtb-higher-ranker-supertraits-transitive.rs:47:26 | LL | / fn want_bar_for_any_ccx(b: &B) LL | | where B : for<'ccx> Bar<'ccx> @@ -8,7 +8,7 @@ LL | | } | |_- required by `want_bar_for_any_ccx` ... LL | want_bar_for_any_ccx(b); - | ^^^^^^^^^^^^^^^^^^^^ the trait `for<'ccx> Bar<'ccx>` is not implemented for `B` + | ^ the trait `for<'ccx> Bar<'ccx>` is not implemented for `B` | = help: consider adding a `where for<'ccx> B: Bar<'ccx>` bound diff --git a/src/test/ui/hrtb/hrtb-higher-ranker-supertraits.stderr b/src/test/ui/hrtb/hrtb-higher-ranker-supertraits.stderr index 6df486ebaff..7857ab6e86a 100644 --- a/src/test/ui/hrtb/hrtb-higher-ranker-supertraits.stderr +++ b/src/test/ui/hrtb/hrtb-higher-ranker-supertraits.stderr @@ -1,8 +1,8 @@ error[E0277]: the trait bound `for<'tcx> F: Foo<'tcx>` is not satisfied - --> $DIR/hrtb-higher-ranker-supertraits.rs:18:5 + --> $DIR/hrtb-higher-ranker-supertraits.rs:18:26 | LL | want_foo_for_any_tcx(f); - | ^^^^^^^^^^^^^^^^^^^^ the trait `for<'tcx> Foo<'tcx>` is not implemented for `F` + | ^ the trait `for<'tcx> Foo<'tcx>` is not implemented for `F` ... LL | / fn want_foo_for_any_tcx(f: &F) LL | | where F : for<'tcx> Foo<'tcx> @@ -15,10 +15,10 @@ LL | | } = help: consider adding a `where for<'tcx> F: Foo<'tcx>` bound error[E0277]: the trait bound `for<'ccx> B: Bar<'ccx>` is not satisfied - --> $DIR/hrtb-higher-ranker-supertraits.rs:35:5 + --> $DIR/hrtb-higher-ranker-supertraits.rs:35:26 | LL | want_bar_for_any_ccx(b); - | ^^^^^^^^^^^^^^^^^^^^ the trait `for<'ccx> Bar<'ccx>` is not implemented for `B` + | ^ the trait `for<'ccx> Bar<'ccx>` is not implemented for `B` ... LL | / fn want_bar_for_any_ccx(b: &B) LL | | where B : for<'ccx> Bar<'ccx> diff --git a/src/test/ui/issues/issue-17651.rs b/src/test/ui/issues/issue-17651.rs index 7629a5a3be1..08f352c11fa 100644 --- a/src/test/ui/issues/issue-17651.rs +++ b/src/test/ui/issues/issue-17651.rs @@ -4,4 +4,5 @@ fn main() { (|| Box::new(*(&[0][..])))(); //~^ ERROR the size for values of type + //~| ERROR the size for values of type } diff --git a/src/test/ui/issues/issue-17651.stderr b/src/test/ui/issues/issue-17651.stderr index ce9af1524b0..c3445024c37 100644 --- a/src/test/ui/issues/issue-17651.stderr +++ b/src/test/ui/issues/issue-17651.stderr @@ -1,3 +1,13 @@ +error[E0277]: the size for values of type `[{integer}]` cannot be known at compilation time + --> $DIR/issue-17651.rs:5:18 + | +LL | (|| Box::new(*(&[0][..])))(); + | ^^^^^^^^^^^ doesn't have a size known at compile-time + | + = help: the trait `std::marker::Sized` is not implemented for `[{integer}]` + = note: to learn more, visit + = note: required by `std::boxed::Box::::new` + error[E0277]: the size for values of type `[{integer}]` cannot be known at compilation time --> $DIR/issue-17651.rs:5:9 | @@ -6,8 +16,9 @@ LL | (|| Box::new(*(&[0][..])))(); | = help: the trait `std::marker::Sized` is not implemented for `[{integer}]` = note: to learn more, visit - = note: required by `std::boxed::Box::::new` + = note: all function arguments must have a statically known size + = help: unsized locals are gated as an unstable feature -error: aborting due to previous error +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/issues/issue-23966.stderr b/src/test/ui/issues/issue-23966.stderr index ac64067db10..c2fe6d92b91 100644 --- a/src/test/ui/issues/issue-23966.stderr +++ b/src/test/ui/issues/issue-23966.stderr @@ -1,8 +1,8 @@ error[E0277]: expected a `std::ops::FnMut<(_, char)>` closure, found `()` - --> $DIR/issue-23966.rs:2:16 + --> $DIR/issue-23966.rs:2:32 | LL | "".chars().fold(|_, _| (), ()); - | ^^^^ expected an `FnMut<(_, char)>` closure, found `()` + | ^^ expected an `FnMut<(_, char)>` closure, found `()` | = help: the trait `std::ops::FnMut<(_, char)>` is not implemented for `()` diff --git a/src/test/ui/issues/issue-25076.stderr b/src/test/ui/issues/issue-25076.stderr index b583a6b54bf..a7b6626b16a 100644 --- a/src/test/ui/issues/issue-25076.stderr +++ b/src/test/ui/issues/issue-25076.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `(): InOut<_>` is not satisfied - --> $DIR/issue-25076.rs:10:5 + --> $DIR/issue-25076.rs:10:20 | LL | fn do_fold>(init: B, f: F) {} | ------------------------------------------------ required by `do_fold` ... LL | do_fold(bot(), ()); - | ^^^^^^^ the trait `InOut<_>` is not implemented for `()` + | ^^ the trait `InOut<_>` is not implemented for `()` error: aborting due to previous error diff --git a/src/test/ui/issues/issue-28098.rs b/src/test/ui/issues/issue-28098.rs index c4addaccefc..62a90d90d12 100644 --- a/src/test/ui/issues/issue-28098.rs +++ b/src/test/ui/issues/issue-28098.rs @@ -1,6 +1,7 @@ fn main() { let _ = Iterator::next(&mut ()); //~^ ERROR `()` is not an iterator + //~| ERROR `()` is not an iterator for _ in false {} //~^ ERROR `bool` is not an iterator @@ -16,6 +17,7 @@ pub fn other() { let _ = Iterator::next(&mut ()); //~^ ERROR `()` is not an iterator + //~| ERROR `()` is not an iterator let _ = Iterator::next(&mut ()); //~^ ERROR `()` is not an iterator diff --git a/src/test/ui/issues/issue-28098.stderr b/src/test/ui/issues/issue-28098.stderr index 30f7819b96d..8b724b9331d 100644 --- a/src/test/ui/issues/issue-28098.stderr +++ b/src/test/ui/issues/issue-28098.stderr @@ -1,3 +1,30 @@ +error[E0277]: `()` is not an iterator + --> $DIR/issue-28098.rs:2:28 + | +LL | let _ = Iterator::next(&mut ()); + | ^^^^^^^ `()` is not an iterator + | + = help: the trait `std::iter::Iterator` is not implemented for `()` + = note: required by `std::iter::Iterator::next` + +error[E0277]: `bool` is not an iterator + --> $DIR/issue-28098.rs:6:14 + | +LL | for _ in false {} + | ^^^^^ `bool` is not an iterator + | + = help: the trait `std::iter::Iterator` is not implemented for `bool` + = note: required by `std::iter::IntoIterator::into_iter` + +error[E0277]: `()` is not an iterator + --> $DIR/issue-28098.rs:9:28 + | +LL | let _ = Iterator::next(&mut ()); + | ^^^^^^^ `()` is not an iterator + | + = help: the trait `std::iter::Iterator` is not implemented for `()` + = note: required by `std::iter::Iterator::next` + error[E0277]: `()` is not an iterator --> $DIR/issue-28098.rs:2:13 | @@ -5,10 +32,27 @@ LL | let _ = Iterator::next(&mut ()); | ^^^^^^^^^^^^^^ `()` is not an iterator | = help: the trait `std::iter::Iterator` is not implemented for `()` + +error[E0277]: `()` is not an iterator + --> $DIR/issue-28098.rs:18:28 + | +LL | let _ = Iterator::next(&mut ()); + | ^^^^^^^ `()` is not an iterator + | + = help: the trait `std::iter::Iterator` is not implemented for `()` + = note: required by `std::iter::Iterator::next` + +error[E0277]: `()` is not an iterator + --> $DIR/issue-28098.rs:22:28 + | +LL | let _ = Iterator::next(&mut ()); + | ^^^^^^^ `()` is not an iterator + | + = help: the trait `std::iter::Iterator` is not implemented for `()` = note: required by `std::iter::Iterator::next` error[E0277]: `bool` is not an iterator - --> $DIR/issue-28098.rs:5:14 + --> $DIR/issue-28098.rs:25:14 | LL | for _ in false {} | ^^^^^ `bool` is not an iterator @@ -17,41 +61,13 @@ LL | for _ in false {} = note: required by `std::iter::IntoIterator::into_iter` error[E0277]: `()` is not an iterator - --> $DIR/issue-28098.rs:8:13 + --> $DIR/issue-28098.rs:18:13 | LL | let _ = Iterator::next(&mut ()); | ^^^^^^^^^^^^^^ `()` is not an iterator | = help: the trait `std::iter::Iterator` is not implemented for `()` - = note: required by `std::iter::Iterator::next` -error[E0277]: `()` is not an iterator - --> $DIR/issue-28098.rs:17:13 - | -LL | let _ = Iterator::next(&mut ()); - | ^^^^^^^^^^^^^^ `()` is not an iterator - | - = help: the trait `std::iter::Iterator` is not implemented for `()` - = note: required by `std::iter::Iterator::next` - -error[E0277]: `()` is not an iterator - --> $DIR/issue-28098.rs:20:13 - | -LL | let _ = Iterator::next(&mut ()); - | ^^^^^^^^^^^^^^ `()` is not an iterator - | - = help: the trait `std::iter::Iterator` is not implemented for `()` - = note: required by `std::iter::Iterator::next` - -error[E0277]: `bool` is not an iterator - --> $DIR/issue-28098.rs:23:14 - | -LL | for _ in false {} - | ^^^^^ `bool` is not an iterator - | - = help: the trait `std::iter::Iterator` is not implemented for `bool` - = note: required by `std::iter::IntoIterator::into_iter` - -error: aborting due to 6 previous errors +error: aborting due to 8 previous errors For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/issues/issue-47706-trait.stderr b/src/test/ui/issues/issue-47706-trait.stderr index 5f8f8564249..8a6a199148c 100644 --- a/src/test/ui/issues/issue-47706-trait.stderr +++ b/src/test/ui/issues/issue-47706-trait.stderr @@ -1,10 +1,10 @@ error[E0593]: function is expected to take a single 0-tuple as argument, but it takes 2 distinct arguments - --> $DIR/issue-47706-trait.rs:3:20 + --> $DIR/issue-47706-trait.rs:3:24 | LL | fn f(&self, _: ()) { | ------------------ takes 2 distinct arguments LL | None::<()>.map(Self::f); - | ^^^ expected function that takes a single 0-tuple as argument + | ^^^^^^^ expected function that takes a single 0-tuple as argument error: aborting due to previous error diff --git a/src/test/ui/issues/issue-47706.stderr b/src/test/ui/issues/issue-47706.stderr index c47eebb8e5c..4f64a643fe5 100644 --- a/src/test/ui/issues/issue-47706.stderr +++ b/src/test/ui/issues/issue-47706.stderr @@ -1,14 +1,14 @@ error[E0593]: function is expected to take 1 argument, but it takes 2 arguments - --> $DIR/issue-47706.rs:11:18 + --> $DIR/issue-47706.rs:11:22 | LL | pub fn new(foo: Option, _: ()) -> Foo { | ------------------------------------------ takes 2 arguments ... LL | self.foo.map(Foo::new) - | ^^^ expected function that takes 1 argument + | ^^^^^^^^ expected function that takes 1 argument error[E0593]: function is expected to take 0 arguments, but it takes 1 argument - --> $DIR/issue-47706.rs:27:5 + --> $DIR/issue-47706.rs:27:9 | LL | Bar(i32), | -------- takes 1 argument @@ -21,7 +21,7 @@ LL | | } | |_- required by `foo` ... LL | foo(Qux::Bar); - | ^^^ expected function that takes 0 arguments + | ^^^^^^^^ expected function that takes 0 arguments error: aborting due to 2 previous errors diff --git a/src/test/ui/issues/issue-60283.stderr b/src/test/ui/issues/issue-60283.stderr index a977ba39276..2b01a64d39a 100644 --- a/src/test/ui/issues/issue-60283.stderr +++ b/src/test/ui/issues/issue-60283.stderr @@ -1,5 +1,5 @@ error[E0631]: type mismatch in function arguments - --> $DIR/issue-60283.rs:14:5 + --> $DIR/issue-60283.rs:14:13 | LL | / pub fn foo(_: T, _: F) LL | | where T: for<'a> Trait<'a>, @@ -7,10 +7,10 @@ LL | | F: for<'a> FnMut(>::Item) {} | |_________________________________________________- required by `foo` ... LL | foo((), drop) - | ^^^ - | | - | expected signature of `for<'a> fn(<() as Trait<'a>>::Item) -> _` - | found signature of `fn(_) -> _` + | ^^^^ + | | + | expected signature of `for<'a> fn(<() as Trait<'a>>::Item) -> _` + | found signature of `fn(_) -> _` error[E0271]: type mismatch resolving `for<'a> } as std::ops::FnOnce<(<() as Trait<'a>>::Item,)>>::Output == ()` --> $DIR/issue-60283.rs:14:5 diff --git a/src/test/ui/kindck/kindck-impl-type-params-2.stderr b/src/test/ui/kindck/kindck-impl-type-params-2.stderr index 6d599423d25..5e6eca6f057 100644 --- a/src/test/ui/kindck/kindck-impl-type-params-2.stderr +++ b/src/test/ui/kindck/kindck-impl-type-params-2.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `std::boxed::Box<{integer}>: std::marker::Copy` is not satisfied - --> $DIR/kindck-impl-type-params-2.rs:13:5 + --> $DIR/kindck-impl-type-params-2.rs:13:16 | LL | fn take_param(foo: &T) { } | ----------------------------- required by `take_param` ... LL | take_param(&x); - | ^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `std::boxed::Box<{integer}>` + | ^^ the trait `std::marker::Copy` is not implemented for `std::boxed::Box<{integer}>` | = note: required because of the requirements on the impl of `Foo` for `std::boxed::Box<{integer}>` diff --git a/src/test/ui/kindck/kindck-inherited-copy-bound.stderr b/src/test/ui/kindck/kindck-inherited-copy-bound.stderr index a53063157fc..9f548083e73 100644 --- a/src/test/ui/kindck/kindck-inherited-copy-bound.stderr +++ b/src/test/ui/kindck/kindck-inherited-copy-bound.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `std::boxed::Box<{integer}>: std::marker::Copy` is not satisfied - --> $DIR/kindck-inherited-copy-bound.rs:18:5 + --> $DIR/kindck-inherited-copy-bound.rs:18:16 | LL | fn take_param(foo: &T) { } | ----------------------------- required by `take_param` ... LL | take_param(&x); - | ^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `std::boxed::Box<{integer}>` + | ^^ the trait `std::marker::Copy` is not implemented for `std::boxed::Box<{integer}>` | = note: required because of the requirements on the impl of `Foo` for `std::boxed::Box<{integer}>` diff --git a/src/test/ui/mismatched_types/E0631.stderr b/src/test/ui/mismatched_types/E0631.stderr index 319eb86480a..64ddf1deb06 100644 --- a/src/test/ui/mismatched_types/E0631.stderr +++ b/src/test/ui/mismatched_types/E0631.stderr @@ -21,7 +21,7 @@ LL | bar(|_: isize| {}); | expected signature of `fn(usize) -> _` error[E0631]: type mismatch in function arguments - --> $DIR/E0631.rs:9:5 + --> $DIR/E0631.rs:9:9 | LL | fn foo(_: F) {} | -------------------------- required by `foo` @@ -30,10 +30,10 @@ LL | fn f(_: u64) {} | ------------ found signature of `fn(u64) -> _` ... LL | foo(f); - | ^^^ expected signature of `fn(usize) -> _` + | ^ expected signature of `fn(usize) -> _` error[E0631]: type mismatch in function arguments - --> $DIR/E0631.rs:10:5 + --> $DIR/E0631.rs:10:9 | LL | fn bar>(_: F) {} | -------------------------- required by `bar` @@ -42,7 +42,7 @@ LL | fn f(_: u64) {} | ------------ found signature of `fn(u64) -> _` ... LL | bar(f); - | ^^^ expected signature of `fn(usize) -> _` + | ^ expected signature of `fn(usize) -> _` error: aborting due to 4 previous errors diff --git a/src/test/ui/mismatched_types/closure-arg-count.stderr b/src/test/ui/mismatched_types/closure-arg-count.stderr index b7b5b50b0b4..12ae8acaee5 100644 --- a/src/test/ui/mismatched_types/closure-arg-count.stderr +++ b/src/test/ui/mismatched_types/closure-arg-count.stderr @@ -105,42 +105,42 @@ LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x, y| i); | expected closure that takes a single 2-tuple as argument error[E0593]: function is expected to take a single 2-tuple as argument, but it takes 0 arguments - --> $DIR/closure-arg-count.rs:24:53 + --> $DIR/closure-arg-count.rs:24:57 | LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(foo); - | ^^^ expected function that takes a single 2-tuple as argument + | ^^^ expected function that takes a single 2-tuple as argument ... LL | fn foo() {} | -------- takes 0 arguments error[E0593]: closure is expected to take a single 2-tuple as argument, but it takes 3 distinct arguments - --> $DIR/closure-arg-count.rs:27:53 + --> $DIR/closure-arg-count.rs:27:57 | LL | let bar = |i, x, y| i; | --------- takes 3 distinct arguments LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(bar); - | ^^^ expected closure that takes a single 2-tuple as argument + | ^^^ expected closure that takes a single 2-tuple as argument error[E0593]: function is expected to take a single 2-tuple as argument, but it takes 2 distinct arguments - --> $DIR/closure-arg-count.rs:29:53 + --> $DIR/closure-arg-count.rs:29:57 | LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(qux); - | ^^^ expected function that takes a single 2-tuple as argument + | ^^^ expected function that takes a single 2-tuple as argument ... LL | fn qux(x: usize, y: usize) {} | -------------------------- takes 2 distinct arguments error[E0593]: function is expected to take 1 argument, but it takes 2 arguments - --> $DIR/closure-arg-count.rs:32:41 + --> $DIR/closure-arg-count.rs:32:45 | LL | let _it = vec![1, 2, 3].into_iter().map(usize::checked_add); - | ^^^ expected function that takes 1 argument + | ^^^^^^^^^^^^^^^^^^ expected function that takes 1 argument error[E0593]: function is expected to take 0 arguments, but it takes 1 argument - --> $DIR/closure-arg-count.rs:35:5 + --> $DIR/closure-arg-count.rs:35:10 | LL | call(Foo); - | ^^^^ expected function that takes 0 arguments + | ^^^ expected function that takes 0 arguments ... LL | fn call(_: F) where F: FnOnce() -> R {} | ------------------------------------------ required by `call` diff --git a/src/test/ui/mismatched_types/closure-arg-type-mismatch.stderr b/src/test/ui/mismatched_types/closure-arg-type-mismatch.stderr index 2a65759dd17..68bc17b4966 100644 --- a/src/test/ui/mismatched_types/closure-arg-type-mismatch.stderr +++ b/src/test/ui/mismatched_types/closure-arg-type-mismatch.stderr @@ -23,16 +23,16 @@ LL | a.iter().map(|_: (u16, u16)| 45); | expected signature of `fn(&(u32, u32)) -> _` error[E0631]: type mismatch in function arguments - --> $DIR/closure-arg-type-mismatch.rs:10:5 + --> $DIR/closure-arg-type-mismatch.rs:10:9 | LL | fn baz(_: F) {} | ------------------------------ required by `baz` LL | fn _test<'a>(f: fn(*mut &'a u32)) { LL | baz(f); - | ^^^ - | | - | expected signature of `for<'r> fn(*mut &'r u32) -> _` - | found signature of `fn(*mut &'a u32) -> _` + | ^ + | | + | expected signature of `for<'r> fn(*mut &'r u32) -> _` + | found signature of `fn(*mut &'a u32) -> _` error[E0271]: type mismatch resolving `for<'r> >::Output == ()` --> $DIR/closure-arg-type-mismatch.rs:10:5 diff --git a/src/test/ui/mismatched_types/fn-variance-1.stderr b/src/test/ui/mismatched_types/fn-variance-1.stderr index d4db7bda06e..6342ee770dd 100644 --- a/src/test/ui/mismatched_types/fn-variance-1.stderr +++ b/src/test/ui/mismatched_types/fn-variance-1.stderr @@ -1,5 +1,5 @@ error[E0631]: type mismatch in function arguments - --> $DIR/fn-variance-1.rs:11:5 + --> $DIR/fn-variance-1.rs:11:15 | LL | fn takes_mut(x: &mut isize) { } | --------------------------- found signature of `for<'r> fn(&'r mut isize) -> _` @@ -8,10 +8,10 @@ LL | fn apply(t: T, f: F) where F: FnOnce(T) { | --------------------------------------------- required by `apply` ... LL | apply(&3, takes_mut); - | ^^^^^ expected signature of `fn(&{integer}) -> _` + | ^^^^^^^^^ expected signature of `fn(&{integer}) -> _` error[E0631]: type mismatch in function arguments - --> $DIR/fn-variance-1.rs:15:5 + --> $DIR/fn-variance-1.rs:15:19 | LL | fn takes_imm(x: &isize) { } | ----------------------- found signature of `for<'r> fn(&'r isize) -> _` @@ -20,7 +20,7 @@ LL | fn apply(t: T, f: F) where F: FnOnce(T) { | --------------------------------------------- required by `apply` ... LL | apply(&mut 3, takes_imm); - | ^^^^^ expected signature of `fn(&mut {integer}) -> _` + | ^^^^^^^^^ expected signature of `fn(&mut {integer}) -> _` error: aborting due to 2 previous errors diff --git a/src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr b/src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr index 53c9fcd70a2..139d87d58b6 100644 --- a/src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr +++ b/src/test/ui/mismatched_types/unboxed-closures-vtable-mismatch.stderr @@ -1,5 +1,5 @@ error[E0631]: type mismatch in closure arguments - --> $DIR/unboxed-closures-vtable-mismatch.rs:15:13 + --> $DIR/unboxed-closures-vtable-mismatch.rs:15:24 | LL | fn call_itisize>(y: isize, mut f: F) -> isize { | -------------------------------------------------------------------- required by `call_it` @@ -8,7 +8,7 @@ LL | let f = to_fn_mut(|x: usize, y: isize| -> isize { (x as isize) + y }); | ----------------------------- found signature of `fn(usize, isize) -> _` LL | LL | let z = call_it(3, f); - | ^^^^^^^ expected signature of `fn(isize, isize) -> _` + | ^ expected signature of `fn(isize, isize) -> _` error: aborting due to previous error diff --git a/src/test/ui/mutexguard-sync.stderr b/src/test/ui/mutexguard-sync.stderr index 4a93c9f09b7..1cda2da5061 100644 --- a/src/test/ui/mutexguard-sync.stderr +++ b/src/test/ui/mutexguard-sync.stderr @@ -1,11 +1,11 @@ error[E0277]: `std::cell::Cell` cannot be shared between threads safely - --> $DIR/mutexguard-sync.rs:11:5 + --> $DIR/mutexguard-sync.rs:11:15 | LL | fn test_sync(_t: T) {} | ---------------------------- required by `test_sync` ... LL | test_sync(guard); - | ^^^^^^^^^ `std::cell::Cell` cannot be shared between threads safely + | ^^^^^ `std::cell::Cell` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `std::cell::Cell` = note: required because of the requirements on the impl of `std::marker::Sync` for `std::sync::MutexGuard<'_, std::cell::Cell>` diff --git a/src/test/ui/namespace/namespace-mix.stderr b/src/test/ui/namespace/namespace-mix.stderr index 39aaddb390c..249ad1c5844 100644 --- a/src/test/ui/namespace/namespace-mix.stderr +++ b/src/test/ui/namespace/namespace-mix.stderr @@ -67,400 +67,400 @@ LL | use namespace_mix::xm8::V; | error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:33:5 + --> $DIR/namespace-mix.rs:33:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m1::S{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `c::S: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:35:5 + --> $DIR/namespace-mix.rs:35:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m2::S{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::S` + | ^^^^^^^ the trait `Impossible` is not implemented for `c::S` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:36:5 + --> $DIR/namespace-mix.rs:36:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m2::S); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:39:5 + --> $DIR/namespace-mix.rs:39:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm1::S{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `namespace_mix::c::S: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:41:5 + --> $DIR/namespace-mix.rs:41:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm2::S{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::S` + | ^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::S` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:42:5 + --> $DIR/namespace-mix.rs:42:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm2::S); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:55:5 + --> $DIR/namespace-mix.rs:55:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m3::TS{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `fn() -> c::TS {c::TS}: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:56:5 + --> $DIR/namespace-mix.rs:56:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m3::TS); - | ^^^^^ the trait `Impossible` is not implemented for `fn() -> c::TS {c::TS}` + | ^^^^^^ the trait `Impossible` is not implemented for `fn() -> c::TS {c::TS}` error[E0277]: the trait bound `c::TS: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:57:5 + --> $DIR/namespace-mix.rs:57:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m4::TS{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::TS` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::TS` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:58:5 + --> $DIR/namespace-mix.rs:58:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m4::TS); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:61:5 + --> $DIR/namespace-mix.rs:61:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm3::TS{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `fn() -> namespace_mix::c::TS {namespace_mix::c::TS}: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:62:5 + --> $DIR/namespace-mix.rs:62:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm3::TS); - | ^^^^^ the trait `Impossible` is not implemented for `fn() -> namespace_mix::c::TS {namespace_mix::c::TS}` + | ^^^^^^^ the trait `Impossible` is not implemented for `fn() -> namespace_mix::c::TS {namespace_mix::c::TS}` error[E0277]: the trait bound `namespace_mix::c::TS: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:63:5 + --> $DIR/namespace-mix.rs:63:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm4::TS{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::TS` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::TS` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:64:5 + --> $DIR/namespace-mix.rs:64:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm4::TS); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:77:5 + --> $DIR/namespace-mix.rs:77:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m5::US{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `c::US: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:78:5 + --> $DIR/namespace-mix.rs:78:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m5::US); - | ^^^^^ the trait `Impossible` is not implemented for `c::US` + | ^^^^^^ the trait `Impossible` is not implemented for `c::US` error[E0277]: the trait bound `c::US: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:79:5 + --> $DIR/namespace-mix.rs:79:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m6::US{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::US` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::US` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:80:5 + --> $DIR/namespace-mix.rs:80:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m6::US); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:83:5 + --> $DIR/namespace-mix.rs:83:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm5::US{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `namespace_mix::c::US: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:84:5 + --> $DIR/namespace-mix.rs:84:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm5::US); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::US` + | ^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::US` error[E0277]: the trait bound `namespace_mix::c::US: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:85:5 + --> $DIR/namespace-mix.rs:85:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm6::US{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::US` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::US` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:86:5 + --> $DIR/namespace-mix.rs:86:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm6::US); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:99:5 + --> $DIR/namespace-mix.rs:99:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m7::V{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:101:5 + --> $DIR/namespace-mix.rs:101:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m8::V{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::E` + | ^^^^^^^ the trait `Impossible` is not implemented for `c::E` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:102:5 + --> $DIR/namespace-mix.rs:102:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m8::V); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:105:5 + --> $DIR/namespace-mix.rs:105:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm7::V{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:107:5 + --> $DIR/namespace-mix.rs:107:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm8::V{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` + | ^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:108:5 + --> $DIR/namespace-mix.rs:108:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm8::V); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:121:5 + --> $DIR/namespace-mix.rs:121:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m9::TV{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `fn() -> c::E {c::E::TV}: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:122:5 + --> $DIR/namespace-mix.rs:122:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(m9::TV); - | ^^^^^ the trait `Impossible` is not implemented for `fn() -> c::E {c::E::TV}` + | ^^^^^^ the trait `Impossible` is not implemented for `fn() -> c::E {c::E::TV}` error[E0277]: the trait bound `c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:123:5 + --> $DIR/namespace-mix.rs:123:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(mA::TV{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::E` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::E` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:124:5 + --> $DIR/namespace-mix.rs:124:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(mA::TV); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:127:5 + --> $DIR/namespace-mix.rs:127:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm9::TV{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `fn() -> namespace_mix::c::E {namespace_mix::xm7::TV}: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:128:5 + --> $DIR/namespace-mix.rs:128:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xm9::TV); - | ^^^^^ the trait `Impossible` is not implemented for `fn() -> namespace_mix::c::E {namespace_mix::xm7::TV}` + | ^^^^^^^ the trait `Impossible` is not implemented for `fn() -> namespace_mix::c::E {namespace_mix::xm7::TV}` error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:129:5 + --> $DIR/namespace-mix.rs:129:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xmA::TV{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:130:5 + --> $DIR/namespace-mix.rs:130:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xmA::TV); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:143:5 + --> $DIR/namespace-mix.rs:143:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(mB::UV{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:144:5 + --> $DIR/namespace-mix.rs:144:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(mB::UV); - | ^^^^^ the trait `Impossible` is not implemented for `c::E` + | ^^^^^^ the trait `Impossible` is not implemented for `c::E` error[E0277]: the trait bound `c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:145:5 + --> $DIR/namespace-mix.rs:145:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(mC::UV{}); - | ^^^^^ the trait `Impossible` is not implemented for `c::E` + | ^^^^^^^^ the trait `Impossible` is not implemented for `c::E` error[E0277]: the trait bound `c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:146:5 + --> $DIR/namespace-mix.rs:146:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(mC::UV); - | ^^^^^ the trait `Impossible` is not implemented for `c::Item` + | ^^^^^^ the trait `Impossible` is not implemented for `c::Item` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:149:5 + --> $DIR/namespace-mix.rs:149:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xmB::UV{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:150:5 + --> $DIR/namespace-mix.rs:150:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xmB::UV); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` + | ^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:151:5 + --> $DIR/namespace-mix.rs:151:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xmC::UV{}); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` + | ^^^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E` error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied - --> $DIR/namespace-mix.rs:152:5 + --> $DIR/namespace-mix.rs:152:11 | LL | fn check(_: T) {} | ----------------------------- required by `check` ... LL | check(xmC::UV); - | ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` + | ^^^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item` error: aborting due to 48 previous errors diff --git a/src/test/ui/no_send-rc.stderr b/src/test/ui/no_send-rc.stderr index eaf3103060e..de08634e16a 100644 --- a/src/test/ui/no_send-rc.stderr +++ b/src/test/ui/no_send-rc.stderr @@ -1,11 +1,11 @@ error[E0277]: `std::rc::Rc<{integer}>` cannot be sent between threads safely - --> $DIR/no_send-rc.rs:7:5 + --> $DIR/no_send-rc.rs:7:9 | LL | fn bar(_: T) {} | --------------------- required by `bar` ... LL | bar(x); - | ^^^ `std::rc::Rc<{integer}>` cannot be sent between threads safely + | ^ `std::rc::Rc<{integer}>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `std::rc::Rc<{integer}>` diff --git a/src/test/ui/no_send-struct.stderr b/src/test/ui/no_send-struct.stderr index 1808cef45f1..3865971fcfd 100644 --- a/src/test/ui/no_send-struct.stderr +++ b/src/test/ui/no_send-struct.stderr @@ -1,11 +1,11 @@ error[E0277]: `Foo` cannot be sent between threads safely - --> $DIR/no_send-struct.rs:15:5 + --> $DIR/no_send-struct.rs:15:9 | LL | fn bar(_: T) {} | --------------------- required by `bar` ... LL | bar(x); - | ^^^ `Foo` cannot be sent between threads safely + | ^ `Foo` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `Foo` diff --git a/src/test/ui/no_share-struct.stderr b/src/test/ui/no_share-struct.stderr index c12ee7c5eae..13de5bd6fe8 100644 --- a/src/test/ui/no_share-struct.stderr +++ b/src/test/ui/no_share-struct.stderr @@ -1,11 +1,11 @@ error[E0277]: `Foo` cannot be shared between threads safely - --> $DIR/no_share-struct.rs:12:5 + --> $DIR/no_share-struct.rs:12:9 | LL | fn bar(_: T) {} | --------------------- required by `bar` ... LL | bar(x); - | ^^^ `Foo` cannot be shared between threads safely + | ^ `Foo` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `Foo` diff --git a/src/test/ui/object-does-not-impl-trait.stderr b/src/test/ui/object-does-not-impl-trait.stderr index d3add6398bd..83ca9a7212b 100644 --- a/src/test/ui/object-does-not-impl-trait.stderr +++ b/src/test/ui/object-does-not-impl-trait.stderr @@ -1,10 +1,10 @@ error[E0277]: the trait bound `std::boxed::Box: Foo` is not satisfied - --> $DIR/object-does-not-impl-trait.rs:6:35 + --> $DIR/object-does-not-impl-trait.rs:6:44 | LL | fn take_foo(f: F) {} | ------------------------ required by `take_foo` LL | fn take_object(f: Box) { take_foo(f); } - | ^^^^^^^^ the trait `Foo` is not implemented for `std::boxed::Box` + | ^ the trait `Foo` is not implemented for `std::boxed::Box` error: aborting due to previous error diff --git a/src/test/ui/on-unimplemented/multiple-impls.stderr b/src/test/ui/on-unimplemented/multiple-impls.stderr index b286265bf01..f0651c4cdef 100644 --- a/src/test/ui/on-unimplemented/multiple-impls.stderr +++ b/src/test/ui/on-unimplemented/multiple-impls.stderr @@ -1,60 +1,60 @@ error[E0277]: the trait bound `[i32]: Index` is not satisfied - --> $DIR/multiple-impls.rs:33:5 + --> $DIR/multiple-impls.rs:33:18 | LL | fn index(&self, index: Idx) -> &Self::Output; | --------------------------------------------- required by `Index::index` ... +LL | Index::index(&[] as &[i32], 2u32); + | ^^^^^^^^^^^^^ trait message + | + = help: the trait `Index` is not implemented for `[i32]` + +error[E0277]: the trait bound `[i32]: Index>` is not satisfied + --> $DIR/multiple-impls.rs:36:18 + | +LL | fn index(&self, index: Idx) -> &Self::Output; + | --------------------------------------------- required by `Index::index` +... +LL | Index::index(&[] as &[i32], Foo(2u32)); + | ^^^^^^^^^^^^^ on impl for Foo + | + = help: the trait `Index>` is not implemented for `[i32]` + +error[E0277]: the trait bound `[i32]: Index>` is not satisfied + --> $DIR/multiple-impls.rs:39:18 + | +LL | fn index(&self, index: Idx) -> &Self::Output; + | --------------------------------------------- required by `Index::index` +... +LL | Index::index(&[] as &[i32], Bar(2u32)); + | ^^^^^^^^^^^^^ on impl for Bar + | + = help: the trait `Index>` is not implemented for `[i32]` + +error[E0277]: the trait bound `[i32]: Index` is not satisfied + --> $DIR/multiple-impls.rs:33:5 + | LL | Index::index(&[] as &[i32], 2u32); | ^^^^^^^^^^^^ trait message | = help: the trait `Index` is not implemented for `[i32]` -error[E0277]: the trait bound `[i32]: Index` is not satisfied - --> $DIR/multiple-impls.rs:33:5 - | -LL | Index::index(&[] as &[i32], 2u32); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait message - | - = help: the trait `Index` is not implemented for `[i32]` - error[E0277]: the trait bound `[i32]: Index>` is not satisfied --> $DIR/multiple-impls.rs:36:5 | -LL | fn index(&self, index: Idx) -> &Self::Output; - | --------------------------------------------- required by `Index::index` -... LL | Index::index(&[] as &[i32], Foo(2u32)); | ^^^^^^^^^^^^ on impl for Foo | = help: the trait `Index>` is not implemented for `[i32]` -error[E0277]: the trait bound `[i32]: Index>` is not satisfied - --> $DIR/multiple-impls.rs:36:5 - | -LL | Index::index(&[] as &[i32], Foo(2u32)); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ on impl for Foo - | - = help: the trait `Index>` is not implemented for `[i32]` - error[E0277]: the trait bound `[i32]: Index>` is not satisfied --> $DIR/multiple-impls.rs:39:5 | -LL | fn index(&self, index: Idx) -> &Self::Output; - | --------------------------------------------- required by `Index::index` -... LL | Index::index(&[] as &[i32], Bar(2u32)); | ^^^^^^^^^^^^ on impl for Bar | = help: the trait `Index>` is not implemented for `[i32]` -error[E0277]: the trait bound `[i32]: Index>` is not satisfied - --> $DIR/multiple-impls.rs:39:5 - | -LL | Index::index(&[] as &[i32], Bar(2u32)); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ on impl for Bar - | - = help: the trait `Index>` is not implemented for `[i32]` - error: aborting due to 6 previous errors For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/on-unimplemented/on-impl.stderr b/src/test/ui/on-unimplemented/on-impl.stderr index 78dc9a53761..f19fa8a07fe 100644 --- a/src/test/ui/on-unimplemented/on-impl.stderr +++ b/src/test/ui/on-unimplemented/on-impl.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `[i32]: Index` is not satisfied - --> $DIR/on-impl.rs:22:5 + --> $DIR/on-impl.rs:22:25 | LL | fn index(&self, index: Idx) -> &Self::Output; | --------------------------------------------- required by `Index::index` ... LL | Index::::index(&[1, 2, 3] as &[i32], 2u32); - | ^^^^^^^^^^^^^^^^^^^ a usize is required to index into a slice + | ^^^^^^^^^^^^^^^^^^^^ a usize is required to index into a slice | = help: the trait `Index` is not implemented for `[i32]` @@ -13,7 +13,7 @@ error[E0277]: the trait bound `[i32]: Index` is not satisfied --> $DIR/on-impl.rs:22:5 | LL | Index::::index(&[1, 2, 3] as &[i32], 2u32); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a usize is required to index into a slice + | ^^^^^^^^^^^^^^^^^^^ a usize is required to index into a slice | = help: the trait `Index` is not implemented for `[i32]` diff --git a/src/test/ui/phantom-oibit.stderr b/src/test/ui/phantom-oibit.stderr index 284102a6df0..c1b60e0823f 100644 --- a/src/test/ui/phantom-oibit.stderr +++ b/src/test/ui/phantom-oibit.stderr @@ -1,11 +1,11 @@ error[E0277]: `T` cannot be shared between threads safely - --> $DIR/phantom-oibit.rs:21:5 + --> $DIR/phantom-oibit.rs:21:12 | LL | fn is_zen(_: T) {} | ----------------------- required by `is_zen` ... LL | is_zen(x) - | ^^^^^^ `T` cannot be shared between threads safely + | ^ `T` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `T` = help: consider adding a `where T: std::marker::Sync` bound @@ -14,13 +14,13 @@ LL | is_zen(x) = note: required because it appears within the type `Guard<'_, T>` error[E0277]: `T` cannot be shared between threads safely - --> $DIR/phantom-oibit.rs:26:5 + --> $DIR/phantom-oibit.rs:26:12 | LL | fn is_zen(_: T) {} | ----------------------- required by `is_zen` ... LL | is_zen(x) - | ^^^^^^ `T` cannot be shared between threads safely + | ^ `T` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `T` = help: consider adding a `where T: std::marker::Sync` bound diff --git a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs index 7d1e5c3d64d..a856420c347 100644 --- a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs +++ b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.rs @@ -40,12 +40,14 @@ fn nested_within_if_expr() { fn _check_try_binds_tighter() -> Result<(), ()> { if let 0 = 0? {} - //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` + //~^ ERROR the trait bound `{integer}: std::ops::Try` is not satisfied + //~| ERROR the trait bound `{integer}: std::ops::Try` is not satisfied Ok(()) } if (let 0 = 0)? {} //~ ERROR `let` expressions are not supported here - //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` - //~| ERROR the `?` operator can only be used in a function that returns `Result` + //~^ ERROR the trait bound `bool: std::ops::Try` is not satisfied + //~| ERROR the trait bound `bool: std::ops::Try` is not satisfied + //~| ERROR the `?` operator can only be used in a function that returns `Result` or `Option` if true || let 0 = 0 {} //~ ERROR `let` expressions are not supported here if (true || let 0 = 0) {} //~ ERROR `let` expressions are not supported here @@ -104,12 +106,14 @@ fn nested_within_while_expr() { fn _check_try_binds_tighter() -> Result<(), ()> { while let 0 = 0? {} - //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` + //~^ ERROR the trait bound `{integer}: std::ops::Try` is not satisfied + //~| ERROR the trait bound `{integer}: std::ops::Try` is not satisfied Ok(()) } while (let 0 = 0)? {} //~ ERROR `let` expressions are not supported here - //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` - //~| ERROR the `?` operator can only be used in a function that returns `Result` + //~^ ERROR the trait bound `bool: std::ops::Try` is not satisfied + //~| ERROR the trait bound `bool: std::ops::Try` is not satisfied + //~| ERROR the `?` operator can only be used in a function that returns `Result` or `Option` while true || let 0 = 0 {} //~ ERROR `let` expressions are not supported here while (true || let 0 = 0) {} //~ ERROR `let` expressions are not supported here @@ -177,12 +181,14 @@ fn outside_if_and_while_expr() { fn _check_try_binds_tighter() -> Result<(), ()> { let 0 = 0?; - //~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` + //~^ ERROR the trait bound `{integer}: std::ops::Try` is not satisfied + //~| ERROR the trait bound `{integer}: std::ops::Try` is not satisfied Ok(()) } (let 0 = 0)?; //~ ERROR `let` expressions are not supported here - //~^ ERROR the `?` operator can only be used in a function that returns `Result` - //~| ERROR the `?` operator can only be applied to values that implement `std::ops::Try` + //~^ ERROR the trait bound `bool: std::ops::Try` is not satisfied + //~| ERROR the trait bound `bool: std::ops::Try` is not satisfied + //~| ERROR the `?` operator can only be used in a function that returns `Result` or `Option` true || let 0 = 0; //~ ERROR `let` expressions are not supported here (true || let 0 = 0); //~ ERROR `let` expressions are not supported here diff --git a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr index 4edc00efc7e..e06d81923f1 100644 --- a/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr +++ b/src/test/ui/rfc-2497-if-let-chains/disallowed-positions.stderr @@ -1,5 +1,5 @@ error: expected one of `,` or `>`, found `&&` - --> $DIR/disallowed-positions.rs:242:14 + --> $DIR/disallowed-positions.rs:248:14 | LL | true && let 1 = 1 | ^^ expected one of `,` or `>` here @@ -41,7 +41,7 @@ LL | if -let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:46:9 + --> $DIR/disallowed-positions.rs:47:9 | LL | if (let 0 = 0)? {} | ^^^^^^^^^ @@ -50,7 +50,7 @@ LL | if (let 0 = 0)? {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:50:16 + --> $DIR/disallowed-positions.rs:52:16 | LL | if true || let 0 = 0 {} | ^^^^^^^^^ @@ -59,7 +59,7 @@ LL | if true || let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:51:17 + --> $DIR/disallowed-positions.rs:53:17 | LL | if (true || let 0 = 0) {} | ^^^^^^^^^ @@ -68,7 +68,7 @@ LL | if (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:52:25 + --> $DIR/disallowed-positions.rs:54:25 | LL | if true && (true || let 0 = 0) {} | ^^^^^^^^^ @@ -77,7 +77,7 @@ LL | if true && (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:53:25 + --> $DIR/disallowed-positions.rs:55:25 | LL | if true || (true && let 0 = 0) {} | ^^^^^^^^^ @@ -86,7 +86,7 @@ LL | if true || (true && let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:56:12 + --> $DIR/disallowed-positions.rs:58:12 | LL | if x = let 0 = 0 {} | ^^^^^^^^^ @@ -95,7 +95,7 @@ LL | if x = let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:59:15 + --> $DIR/disallowed-positions.rs:61:15 | LL | if true..(let 0 = 0) {} | ^^^^^^^^^ @@ -104,7 +104,7 @@ LL | if true..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:61:11 + --> $DIR/disallowed-positions.rs:63:11 | LL | if ..(let 0 = 0) {} | ^^^^^^^^^ @@ -113,7 +113,7 @@ LL | if ..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:63:9 + --> $DIR/disallowed-positions.rs:65:9 | LL | if (let 0 = 0).. {} | ^^^^^^^^^ @@ -122,7 +122,7 @@ LL | if (let 0 = 0).. {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:67:8 + --> $DIR/disallowed-positions.rs:69:8 | LL | if let Range { start: _, end: _ } = true..true && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -131,7 +131,7 @@ LL | if let Range { start: _, end: _ } = true..true && false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:71:8 + --> $DIR/disallowed-positions.rs:73:8 | LL | if let Range { start: _, end: _ } = true..true || false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -140,7 +140,7 @@ LL | if let Range { start: _, end: _ } = true..true || false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:78:8 + --> $DIR/disallowed-positions.rs:80:8 | LL | if let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -149,7 +149,7 @@ LL | if let Range { start: F, end } = F..|| true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:86:8 + --> $DIR/disallowed-positions.rs:88:8 | LL | if let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -158,7 +158,7 @@ LL | if let Range { start: true, end } = t..&&false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:92:19 + --> $DIR/disallowed-positions.rs:94:19 | LL | if let true = let true = true {} | ^^^^^^^^^^^^^^^ @@ -167,7 +167,7 @@ LL | if let true = let true = true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:96:12 + --> $DIR/disallowed-positions.rs:98:12 | LL | while &let 0 = 0 {} | ^^^^^^^^^ @@ -176,7 +176,7 @@ LL | while &let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:99:12 + --> $DIR/disallowed-positions.rs:101:12 | LL | while !let 0 = 0 {} | ^^^^^^^^^ @@ -185,7 +185,7 @@ LL | while !let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:100:12 + --> $DIR/disallowed-positions.rs:102:12 | LL | while *let 0 = 0 {} | ^^^^^^^^^ @@ -194,7 +194,7 @@ LL | while *let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:102:12 + --> $DIR/disallowed-positions.rs:104:12 | LL | while -let 0 = 0 {} | ^^^^^^^^^ @@ -203,7 +203,7 @@ LL | while -let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:110:12 + --> $DIR/disallowed-positions.rs:113:12 | LL | while (let 0 = 0)? {} | ^^^^^^^^^ @@ -212,7 +212,7 @@ LL | while (let 0 = 0)? {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:114:19 + --> $DIR/disallowed-positions.rs:118:19 | LL | while true || let 0 = 0 {} | ^^^^^^^^^ @@ -221,7 +221,7 @@ LL | while true || let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:115:20 + --> $DIR/disallowed-positions.rs:119:20 | LL | while (true || let 0 = 0) {} | ^^^^^^^^^ @@ -230,7 +230,7 @@ LL | while (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:116:28 + --> $DIR/disallowed-positions.rs:120:28 | LL | while true && (true || let 0 = 0) {} | ^^^^^^^^^ @@ -239,7 +239,7 @@ LL | while true && (true || let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:117:28 + --> $DIR/disallowed-positions.rs:121:28 | LL | while true || (true && let 0 = 0) {} | ^^^^^^^^^ @@ -248,7 +248,7 @@ LL | while true || (true && let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:120:15 + --> $DIR/disallowed-positions.rs:124:15 | LL | while x = let 0 = 0 {} | ^^^^^^^^^ @@ -257,7 +257,7 @@ LL | while x = let 0 = 0 {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:123:18 + --> $DIR/disallowed-positions.rs:127:18 | LL | while true..(let 0 = 0) {} | ^^^^^^^^^ @@ -266,7 +266,7 @@ LL | while true..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:125:14 + --> $DIR/disallowed-positions.rs:129:14 | LL | while ..(let 0 = 0) {} | ^^^^^^^^^ @@ -275,7 +275,7 @@ LL | while ..(let 0 = 0) {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:127:12 + --> $DIR/disallowed-positions.rs:131:12 | LL | while (let 0 = 0).. {} | ^^^^^^^^^ @@ -284,7 +284,7 @@ LL | while (let 0 = 0).. {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:131:11 + --> $DIR/disallowed-positions.rs:135:11 | LL | while let Range { start: _, end: _ } = true..true && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -293,7 +293,7 @@ LL | while let Range { start: _, end: _ } = true..true && false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:135:11 + --> $DIR/disallowed-positions.rs:139:11 | LL | while let Range { start: _, end: _ } = true..true || false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -302,7 +302,7 @@ LL | while let Range { start: _, end: _ } = true..true || false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:142:11 + --> $DIR/disallowed-positions.rs:146:11 | LL | while let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -311,7 +311,7 @@ LL | while let Range { start: F, end } = F..|| true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:150:11 + --> $DIR/disallowed-positions.rs:154:11 | LL | while let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -320,7 +320,7 @@ LL | while let Range { start: true, end } = t..&&false {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:156:22 + --> $DIR/disallowed-positions.rs:160:22 | LL | while let true = let true = true {} | ^^^^^^^^^^^^^^^ @@ -329,7 +329,7 @@ LL | while let true = let true = true {} = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:170:6 + --> $DIR/disallowed-positions.rs:174:6 | LL | &let 0 = 0; | ^^^^^^^^^ @@ -338,7 +338,7 @@ LL | &let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:172:6 + --> $DIR/disallowed-positions.rs:176:6 | LL | !let 0 = 0; | ^^^^^^^^^ @@ -347,7 +347,7 @@ LL | !let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:173:6 + --> $DIR/disallowed-positions.rs:177:6 | LL | *let 0 = 0; | ^^^^^^^^^ @@ -356,7 +356,7 @@ LL | *let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:175:6 + --> $DIR/disallowed-positions.rs:179:6 | LL | -let 0 = 0; | ^^^^^^^^^ @@ -365,7 +365,7 @@ LL | -let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:183:6 + --> $DIR/disallowed-positions.rs:188:6 | LL | (let 0 = 0)?; | ^^^^^^^^^ @@ -374,7 +374,7 @@ LL | (let 0 = 0)?; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:187:13 + --> $DIR/disallowed-positions.rs:193:13 | LL | true || let 0 = 0; | ^^^^^^^^^ @@ -383,7 +383,7 @@ LL | true || let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:188:14 + --> $DIR/disallowed-positions.rs:194:14 | LL | (true || let 0 = 0); | ^^^^^^^^^ @@ -392,7 +392,7 @@ LL | (true || let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:189:22 + --> $DIR/disallowed-positions.rs:195:22 | LL | true && (true || let 0 = 0); | ^^^^^^^^^ @@ -401,7 +401,7 @@ LL | true && (true || let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:192:9 + --> $DIR/disallowed-positions.rs:198:9 | LL | x = let 0 = 0; | ^^^^^^^^^ @@ -410,7 +410,7 @@ LL | x = let 0 = 0; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:194:12 + --> $DIR/disallowed-positions.rs:200:12 | LL | true..(let 0 = 0); | ^^^^^^^^^ @@ -419,7 +419,7 @@ LL | true..(let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:195:8 + --> $DIR/disallowed-positions.rs:201:8 | LL | ..(let 0 = 0); | ^^^^^^^^^ @@ -428,7 +428,7 @@ LL | ..(let 0 = 0); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:196:6 + --> $DIR/disallowed-positions.rs:202:6 | LL | (let 0 = 0)..; | ^^^^^^^^^ @@ -437,7 +437,7 @@ LL | (let 0 = 0)..; = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:198:6 + --> $DIR/disallowed-positions.rs:204:6 | LL | (let Range { start: _, end: _ } = true..true || false); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -446,7 +446,7 @@ LL | (let Range { start: _, end: _ } = true..true || false); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:202:6 + --> $DIR/disallowed-positions.rs:208:6 | LL | (let true = let true = true); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -455,7 +455,7 @@ LL | (let true = let true = true); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:202:17 + --> $DIR/disallowed-positions.rs:208:17 | LL | (let true = let true = true); | ^^^^^^^^^^^^^^^ @@ -464,7 +464,7 @@ LL | (let true = let true = true); = note: as well as when nested within `&&` and parenthesis in those conditions error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:207:6 + --> $DIR/disallowed-positions.rs:213:6 | LL | &let 0 = 0 | ^^^^^^^^^ @@ -472,15 +472,6 @@ LL | &let 0 = 0 = note: only supported directly in conditions of `if`- and `while`-expressions = note: as well as when nested within `&&` and parenthesis in those conditions -error: `let` expressions are not supported here - --> $DIR/disallowed-positions.rs:218:17 - | -LL | true && let 1 = 1 - | ^^^^^^^^^ - | - = note: only supported directly in conditions of `if`- and `while`-expressions - = note: as well as when nested within `&&` and parenthesis in those conditions - error: `let` expressions are not supported here --> $DIR/disallowed-positions.rs:224:17 | @@ -499,6 +490,15 @@ LL | true && let 1 = 1 = note: only supported directly in conditions of `if`- and `while`-expressions = note: as well as when nested within `&&` and parenthesis in those conditions +error: `let` expressions are not supported here + --> $DIR/disallowed-positions.rs:236:17 + | +LL | true && let 1 = 1 + | ^^^^^^^^^ + | + = note: only supported directly in conditions of `if`- and `while`-expressions + = note: as well as when nested within `&&` and parenthesis in those conditions + warning: the feature `const_generics` is incomplete and may cause the compiler to crash --> $DIR/disallowed-positions.rs:20:12 | @@ -536,17 +536,16 @@ LL | if -let 0 = 0 {} | = note: an implementation of `std::ops::Neg` might be missing for `bool` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` - --> $DIR/disallowed-positions.rs:46:8 +error[E0277]: the trait bound `bool: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:47:8 | LL | if (let 0 = 0)? {} - | ^^^^^^^^^^^^ the `?` operator cannot be applied to type `bool` + | ^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `bool` | - = help: the trait `std::ops::Try` is not implemented for `bool` = note: required by `std::ops::Try::into_result` error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) - --> $DIR/disallowed-positions.rs:46:8 + --> $DIR/disallowed-positions.rs:47:8 | LL | if (let 0 = 0)? {} | ^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` @@ -555,7 +554,7 @@ LL | if (let 0 = 0)? {} = note: required by `std::ops::Try::from_error` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:56:8 + --> $DIR/disallowed-positions.rs:58:8 | LL | if x = let 0 = 0 {} | ^^^^^^^^^^^^^ @@ -567,7 +566,7 @@ LL | if x = let 0 = 0 {} found type `()` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:59:8 + --> $DIR/disallowed-positions.rs:61:8 | LL | if true..(let 0 = 0) {} | ^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -576,7 +575,7 @@ LL | if true..(let 0 = 0) {} found type `std::ops::Range` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:61:8 + --> $DIR/disallowed-positions.rs:63:8 | LL | if ..(let 0 = 0) {} | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeTo` @@ -585,7 +584,7 @@ LL | if ..(let 0 = 0) {} found type `std::ops::RangeTo` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:63:8 + --> $DIR/disallowed-positions.rs:65:8 | LL | if (let 0 = 0).. {} | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeFrom` @@ -594,7 +593,7 @@ LL | if (let 0 = 0).. {} found type `std::ops::RangeFrom` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:67:12 + --> $DIR/disallowed-positions.rs:69:12 | LL | if let Range { start: _, end: _ } = true..true && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` @@ -605,7 +604,7 @@ LL | if let Range { start: _, end: _ } = true..true && false {} found type `std::ops::Range<_>` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:67:8 + --> $DIR/disallowed-positions.rs:69:8 | LL | if let Range { start: _, end: _ } = true..true && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -614,7 +613,7 @@ LL | if let Range { start: _, end: _ } = true..true && false {} found type `std::ops::Range` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:71:12 + --> $DIR/disallowed-positions.rs:73:12 | LL | if let Range { start: _, end: _ } = true..true || false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` @@ -625,7 +624,7 @@ LL | if let Range { start: _, end: _ } = true..true || false {} found type `std::ops::Range<_>` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:71:8 + --> $DIR/disallowed-positions.rs:73:8 | LL | if let Range { start: _, end: _ } = true..true || false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -634,7 +633,7 @@ LL | if let Range { start: _, end: _ } = true..true || false {} found type `std::ops::Range` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:78:12 + --> $DIR/disallowed-positions.rs:80:12 | LL | if let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^ expected fn pointer, found struct `std::ops::Range` @@ -643,16 +642,16 @@ LL | if let Range { start: F, end } = F..|| true {} found type `std::ops::Range<_>` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:78:41 + --> $DIR/disallowed-positions.rs:80:41 | LL | if let Range { start: F, end } = F..|| true {} | ^^^^^^^ expected bool, found closure | = note: expected type `bool` - found type `[closure@$DIR/disallowed-positions.rs:78:41: 78:48]` + found type `[closure@$DIR/disallowed-positions.rs:80:41: 80:48]` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:78:8 + --> $DIR/disallowed-positions.rs:80:8 | LL | if let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -661,7 +660,7 @@ LL | if let Range { start: F, end } = F..|| true {} found type `std::ops::Range` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:86:12 + --> $DIR/disallowed-positions.rs:88:12 | LL | if let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this match expression has type `bool` @@ -672,7 +671,7 @@ LL | if let Range { start: true, end } = t..&&false {} found type `std::ops::Range<_>` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:86:44 + --> $DIR/disallowed-positions.rs:88:44 | LL | if let Range { start: true, end } = t..&&false {} | ^^^^^^^ expected bool, found &&bool @@ -681,7 +680,7 @@ LL | if let Range { start: true, end } = t..&&false {} found type `&&bool` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:86:8 + --> $DIR/disallowed-positions.rs:88:8 | LL | if let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -689,17 +688,41 @@ LL | if let Range { start: true, end } = t..&&false {} = note: expected type `bool` found type `std::ops::Range` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` +error[E0277]: the trait bound `bool: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:47:8 + | +LL | if (let 0 = 0)? {} + | ^^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `bool` + +error[E0277]: the trait bound `{integer}: std::ops::Try` is not satisfied --> $DIR/disallowed-positions.rs:42:20 | LL | if let 0 = 0? {} - | ^^ the `?` operator cannot be applied to type `{integer}` + | ^ the trait `std::ops::Try` is not implemented for `{integer}` | - = help: the trait `std::ops::Try` is not implemented for `{integer}` + = help: the following implementations were found: + as std::ops::Try> + as std::ops::Try> + as std::ops::Try> + >> as std::ops::Try> + > as std::ops::Try> = note: required by `std::ops::Try::into_result` +error[E0277]: the trait bound `{integer}: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:42:20 + | +LL | if let 0 = 0? {} + | ^^ the trait `std::ops::Try` is not implemented for `{integer}` + | + = help: the following implementations were found: + as std::ops::Try> + as std::ops::Try> + as std::ops::Try> + >> as std::ops::Try> + > as std::ops::Try> + error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:96:11 + --> $DIR/disallowed-positions.rs:98:11 | LL | while &let 0 = 0 {} | ^^^^^^^^^^ expected bool, found &bool @@ -708,30 +731,29 @@ LL | while &let 0 = 0 {} found type `&bool` error[E0614]: type `bool` cannot be dereferenced - --> $DIR/disallowed-positions.rs:100:11 + --> $DIR/disallowed-positions.rs:102:11 | LL | while *let 0 = 0 {} | ^^^^^^^^^^ error[E0600]: cannot apply unary operator `-` to type `bool` - --> $DIR/disallowed-positions.rs:102:11 + --> $DIR/disallowed-positions.rs:104:11 | LL | while -let 0 = 0 {} | ^^^^^^^^^^ cannot apply unary operator `-` | = note: an implementation of `std::ops::Neg` might be missing for `bool` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` - --> $DIR/disallowed-positions.rs:110:11 +error[E0277]: the trait bound `bool: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:113:11 | LL | while (let 0 = 0)? {} - | ^^^^^^^^^^^^ the `?` operator cannot be applied to type `bool` + | ^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `bool` | - = help: the trait `std::ops::Try` is not implemented for `bool` = note: required by `std::ops::Try::into_result` error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) - --> $DIR/disallowed-positions.rs:110:11 + --> $DIR/disallowed-positions.rs:113:11 | LL | while (let 0 = 0)? {} | ^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` @@ -740,7 +762,7 @@ LL | while (let 0 = 0)? {} = note: required by `std::ops::Try::from_error` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:120:11 + --> $DIR/disallowed-positions.rs:124:11 | LL | while x = let 0 = 0 {} | ^^^^^^^^^^^^^ @@ -752,7 +774,7 @@ LL | while x = let 0 = 0 {} found type `()` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:123:11 + --> $DIR/disallowed-positions.rs:127:11 | LL | while true..(let 0 = 0) {} | ^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -761,7 +783,7 @@ LL | while true..(let 0 = 0) {} found type `std::ops::Range` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:125:11 + --> $DIR/disallowed-positions.rs:129:11 | LL | while ..(let 0 = 0) {} | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeTo` @@ -770,7 +792,7 @@ LL | while ..(let 0 = 0) {} found type `std::ops::RangeTo` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:127:11 + --> $DIR/disallowed-positions.rs:131:11 | LL | while (let 0 = 0).. {} | ^^^^^^^^^^^^^ expected bool, found struct `std::ops::RangeFrom` @@ -778,30 +800,10 @@ LL | while (let 0 = 0).. {} = note: expected type `bool` found type `std::ops::RangeFrom` -error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:131:15 - | -LL | while let Range { start: _, end: _ } = true..true && false {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` - | | - | expected bool, found struct `std::ops::Range` - | - = note: expected type `bool` - found type `std::ops::Range<_>` - -error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:131:11 - | -LL | while let Range { start: _, end: _ } = true..true && false {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` - | - = note: expected type `bool` - found type `std::ops::Range` - error[E0308]: mismatched types --> $DIR/disallowed-positions.rs:135:15 | -LL | while let Range { start: _, end: _ } = true..true || false {} +LL | while let Range { start: _, end: _ } = true..true && false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` | | | expected bool, found struct `std::ops::Range` @@ -812,6 +814,26 @@ LL | while let Range { start: _, end: _ } = true..true || false {} error[E0308]: mismatched types --> $DIR/disallowed-positions.rs:135:11 | +LL | while let Range { start: _, end: _ } = true..true && false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:139:15 + | +LL | while let Range { start: _, end: _ } = true..true || false {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` + | | + | expected bool, found struct `std::ops::Range` + | + = note: expected type `bool` + found type `std::ops::Range<_>` + +error[E0308]: mismatched types + --> $DIR/disallowed-positions.rs:139:11 + | LL | while let Range { start: _, end: _ } = true..true || false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` | @@ -819,7 +841,7 @@ LL | while let Range { start: _, end: _ } = true..true || false {} found type `std::ops::Range` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:142:15 + --> $DIR/disallowed-positions.rs:146:15 | LL | while let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^ expected fn pointer, found struct `std::ops::Range` @@ -828,16 +850,16 @@ LL | while let Range { start: F, end } = F..|| true {} found type `std::ops::Range<_>` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:142:44 + --> $DIR/disallowed-positions.rs:146:44 | LL | while let Range { start: F, end } = F..|| true {} | ^^^^^^^ expected bool, found closure | = note: expected type `bool` - found type `[closure@$DIR/disallowed-positions.rs:142:44: 142:51]` + found type `[closure@$DIR/disallowed-positions.rs:146:44: 146:51]` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:142:11 + --> $DIR/disallowed-positions.rs:146:11 | LL | while let Range { start: F, end } = F..|| true {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -846,7 +868,7 @@ LL | while let Range { start: F, end } = F..|| true {} found type `std::ops::Range` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:150:15 + --> $DIR/disallowed-positions.rs:154:15 | LL | while let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - this match expression has type `bool` @@ -857,7 +879,7 @@ LL | while let Range { start: true, end } = t..&&false {} found type `std::ops::Range<_>` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:150:47 + --> $DIR/disallowed-positions.rs:154:47 | LL | while let Range { start: true, end } = t..&&false {} | ^^^^^^^ expected bool, found &&bool @@ -866,7 +888,7 @@ LL | while let Range { start: true, end } = t..&&false {} found type `&&bool` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:150:11 + --> $DIR/disallowed-positions.rs:154:11 | LL | while let Range { start: true, end } = t..&&false {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected bool, found struct `std::ops::Range` @@ -874,40 +896,63 @@ LL | while let Range { start: true, end } = t..&&false {} = note: expected type `bool` found type `std::ops::Range` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` - --> $DIR/disallowed-positions.rs:106:23 +error[E0277]: the trait bound `bool: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:113:11 + | +LL | while (let 0 = 0)? {} + | ^^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `bool` + +error[E0277]: the trait bound `{integer}: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:108:23 | LL | while let 0 = 0? {} - | ^^ the `?` operator cannot be applied to type `{integer}` + | ^ the trait `std::ops::Try` is not implemented for `{integer}` | - = help: the trait `std::ops::Try` is not implemented for `{integer}` + = help: the following implementations were found: + as std::ops::Try> + as std::ops::Try> + as std::ops::Try> + >> as std::ops::Try> + > as std::ops::Try> = note: required by `std::ops::Try::into_result` +error[E0277]: the trait bound `{integer}: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:108:23 + | +LL | while let 0 = 0? {} + | ^^ the trait `std::ops::Try` is not implemented for `{integer}` + | + = help: the following implementations were found: + as std::ops::Try> + as std::ops::Try> + as std::ops::Try> + >> as std::ops::Try> + > as std::ops::Try> + error[E0614]: type `bool` cannot be dereferenced - --> $DIR/disallowed-positions.rs:173:5 + --> $DIR/disallowed-positions.rs:177:5 | LL | *let 0 = 0; | ^^^^^^^^^^ error[E0600]: cannot apply unary operator `-` to type `bool` - --> $DIR/disallowed-positions.rs:175:5 + --> $DIR/disallowed-positions.rs:179:5 | LL | -let 0 = 0; | ^^^^^^^^^^ cannot apply unary operator `-` | = note: an implementation of `std::ops::Neg` might be missing for `bool` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` - --> $DIR/disallowed-positions.rs:183:5 +error[E0277]: the trait bound `bool: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:188:5 | LL | (let 0 = 0)?; - | ^^^^^^^^^^^^ the `?` operator cannot be applied to type `bool` + | ^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `bool` | - = help: the trait `std::ops::Try` is not implemented for `bool` = note: required by `std::ops::Try::into_result` error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) - --> $DIR/disallowed-positions.rs:183:5 + --> $DIR/disallowed-positions.rs:188:5 | LL | (let 0 = 0)?; | ^^^^^^^^^^^^ cannot use the `?` operator in a function that returns `()` @@ -916,7 +961,7 @@ LL | (let 0 = 0)?; = note: required by `std::ops::Try::from_error` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:198:10 + --> $DIR/disallowed-positions.rs:204:10 | LL | (let Range { start: _, end: _ } = true..true || false); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ---- this match expression has type `bool` @@ -927,7 +972,7 @@ LL | (let Range { start: _, end: _ } = true..true || false); found type `std::ops::Range<_>` error[E0308]: mismatched types - --> $DIR/disallowed-positions.rs:207:5 + --> $DIR/disallowed-positions.rs:213:5 | LL | fn outside_if_and_while_expr() { | - help: try adding a return type: `-> &bool` @@ -938,26 +983,38 @@ LL | &let 0 = 0 = note: expected type `()` found type `&bool` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` - --> $DIR/disallowed-positions.rs:179:17 +error[E0277]: the trait bound `bool: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:188:5 + | +LL | (let 0 = 0)?; + | ^^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `bool` + +error[E0277]: the trait bound `{integer}: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:183:17 | LL | let 0 = 0?; - | ^^ the `?` operator cannot be applied to type `{integer}` + | ^ the trait `std::ops::Try` is not implemented for `{integer}` | - = help: the trait `std::ops::Try` is not implemented for `{integer}` + = help: the following implementations were found: + as std::ops::Try> + as std::ops::Try> + as std::ops::Try> + >> as std::ops::Try> + > as std::ops::Try> = note: required by `std::ops::Try::into_result` -error[E0019]: constant contains unimplemented expression type - --> $DIR/disallowed-positions.rs:218:25 +error[E0277]: the trait bound `{integer}: std::ops::Try` is not satisfied + --> $DIR/disallowed-positions.rs:183:17 | -LL | true && let 1 = 1 - | ^ - -error[E0019]: constant contains unimplemented expression type - --> $DIR/disallowed-positions.rs:218:21 +LL | let 0 = 0?; + | ^^ the trait `std::ops::Try` is not implemented for `{integer}` | -LL | true && let 1 = 1 - | ^ + = help: the following implementations were found: + as std::ops::Try> + as std::ops::Try> + as std::ops::Try> + >> as std::ops::Try> + > as std::ops::Try> error[E0019]: constant contains unimplemented expression type --> $DIR/disallowed-positions.rs:224:25 @@ -983,7 +1040,19 @@ error[E0019]: constant contains unimplemented expression type LL | true && let 1 = 1 | ^ -error: aborting due to 109 previous errors +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:236:25 + | +LL | true && let 1 = 1 + | ^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/disallowed-positions.rs:236:21 + | +LL | true && let 1 = 1 + | ^ + +error: aborting due to 115 previous errors Some errors have detailed explanations: E0019, E0277, E0308, E0600, E0614. For more information about an error, try `rustc --explain E0019`. diff --git a/src/test/ui/str/str-idx.stderr b/src/test/ui/str/str-idx.stderr index e388534f132..9f21aaaebad 100644 --- a/src/test/ui/str/str-idx.stderr +++ b/src/test/ui/str/str-idx.stderr @@ -10,20 +10,20 @@ LL | let _: u8 = s[4]; = note: required because of the requirements on the impl of `std::ops::Index<{integer}>` for `str` error[E0277]: the type `str` cannot be indexed by `{integer}` - --> $DIR/str-idx.rs:4:15 + --> $DIR/str-idx.rs:4:19 | LL | let _ = s.get(4); - | ^^^ string indices are ranges of `usize` + | ^ string indices are ranges of `usize` | = help: the trait `std::slice::SliceIndex` is not implemented for `{integer}` = note: you can use `.chars().nth()` or `.bytes().nth()` see chapter in The Book error[E0277]: the type `str` cannot be indexed by `{integer}` - --> $DIR/str-idx.rs:5:15 + --> $DIR/str-idx.rs:5:29 | LL | let _ = s.get_unchecked(4); - | ^^^^^^^^^^^^^ string indices are ranges of `usize` + | ^ string indices are ranges of `usize` | = help: the trait `std::slice::SliceIndex` is not implemented for `{integer}` = note: you can use `.chars().nth()` or `.bytes().nth()` diff --git a/src/test/ui/str/str-mut-idx.stderr b/src/test/ui/str/str-mut-idx.stderr index 08baa478b8b..372077a465e 100644 --- a/src/test/ui/str/str-mut-idx.stderr +++ b/src/test/ui/str/str-mut-idx.stderr @@ -30,20 +30,20 @@ LL | s[1usize] = bot(); = note: required because of the requirements on the impl of `std::ops::Index` for `str` error[E0277]: the type `str` cannot be indexed by `{integer}` - --> $DIR/str-mut-idx.rs:9:7 + --> $DIR/str-mut-idx.rs:9:15 | LL | s.get_mut(1); - | ^^^^^^^ string indices are ranges of `usize` + | ^ string indices are ranges of `usize` | = help: the trait `std::slice::SliceIndex` is not implemented for `{integer}` = note: you can use `.chars().nth()` or `.bytes().nth()` see chapter in The Book error[E0277]: the type `str` cannot be indexed by `{integer}` - --> $DIR/str-mut-idx.rs:11:7 + --> $DIR/str-mut-idx.rs:11:25 | LL | s.get_unchecked_mut(1); - | ^^^^^^^^^^^^^^^^^ string indices are ranges of `usize` + | ^ string indices are ranges of `usize` | = help: the trait `std::slice::SliceIndex` is not implemented for `{integer}` = note: you can use `.chars().nth()` or `.bytes().nth()` diff --git a/src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr b/src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr index 3141b1b65f9..4df639b55e5 100644 --- a/src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr +++ b/src/test/ui/suggestions/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `fn() -> impl std::future::Future {foo}: std::future::Future` is not satisfied - --> $DIR/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:9:5 + --> $DIR/async-fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:9:9 | LL | fn bar(f: impl Future) {} | --------------------------------- required by `bar` ... LL | bar(foo); - | ^^^ the trait `std::future::Future` is not implemented for `fn() -> impl std::future::Future {foo}` + | ^^^ the trait `std::future::Future` is not implemented for `fn() -> impl std::future::Future {foo}` | = help: use parentheses to call the function: `foo()` diff --git a/src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr b/src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr index 2cc4653fabe..f51f1a8215c 100644 --- a/src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr +++ b/src/test/ui/suggestions/fn-ctor-passed-as-arg-where-it-should-have-been-called.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `fn() -> impl T {foo}: T` is not satisfied - --> $DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:17:5 + --> $DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:17:9 | LL | fn bar(f: impl T) {} | ----------------------- required by `bar` ... LL | bar(foo); - | ^^^ the trait `T` is not implemented for `fn() -> impl T {foo}` + | ^^^ the trait `T` is not implemented for `fn() -> impl T {foo}` | = help: use parentheses to call the function: `foo()` diff --git a/src/test/ui/suggestions/issue-62843.stderr b/src/test/ui/suggestions/issue-62843.stderr index cc27b5b49b6..b5801e9162f 100644 --- a/src/test/ui/suggestions/issue-62843.stderr +++ b/src/test/ui/suggestions/issue-62843.stderr @@ -1,8 +1,8 @@ error[E0277]: expected a `std::ops::FnMut<(char,)>` closure, found `std::string::String` - --> $DIR/issue-62843.rs:4:27 + --> $DIR/issue-62843.rs:4:32 | LL | println!("{:?}", line.find(pattern)); - | ^^^^ expected an `FnMut<(char,)>` closure, found `std::string::String` + | ^^^^^^^ expected an `FnMut<(char,)>` closure, found `std::string::String` | = help: the trait `std::ops::FnMut<(char,)>` is not implemented for `std::string::String` = note: borrowing the `std::string::String` might fix the problem diff --git a/src/test/ui/traits/traits-inductive-overflow-supertrait-oibit.stderr b/src/test/ui/traits/traits-inductive-overflow-supertrait-oibit.stderr index 0b543616d7c..76d486a51e5 100644 --- a/src/test/ui/traits/traits-inductive-overflow-supertrait-oibit.stderr +++ b/src/test/ui/traits/traits-inductive-overflow-supertrait-oibit.stderr @@ -5,13 +5,13 @@ LL | auto trait Magic: Copy {} | ^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0277]: the trait bound `NoClone: std::marker::Copy` is not satisfied - --> $DIR/traits-inductive-overflow-supertrait-oibit.rs:15:18 + --> $DIR/traits-inductive-overflow-supertrait-oibit.rs:15:23 | LL | fn copy(x: T) -> (T, T) { (x, x) } | --------------------------------- required by `copy` ... LL | let (a, b) = copy(NoClone); - | ^^^^ the trait `std::marker::Copy` is not implemented for `NoClone` + | ^^^^^^^ the trait `std::marker::Copy` is not implemented for `NoClone` | = note: required because of the requirements on the impl of `Magic` for `NoClone` diff --git a/src/test/ui/traits/traits-negative-impls.stderr b/src/test/ui/traits/traits-negative-impls.stderr index 23bd334a3e7..022b12d256c 100644 --- a/src/test/ui/traits/traits-negative-impls.stderr +++ b/src/test/ui/traits/traits-negative-impls.stderr @@ -1,11 +1,11 @@ error[E0277]: `dummy::TestType` cannot be sent between threads safely - --> $DIR/traits-negative-impls.rs:23:5 + --> $DIR/traits-negative-impls.rs:23:11 | LL | struct Outer(T); | ------------------------- required by `Outer` ... LL | Outer(TestType); - | ^^^^^ `dummy::TestType` cannot be sent between threads safely + | ^^^^^^^^ `dummy::TestType` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dummy::TestType` @@ -21,49 +21,49 @@ LL | Outer(TestType); = help: the trait `std::marker::Send` is not implemented for `dummy::TestType` error[E0277]: `dummy1b::TestType` cannot be sent between threads safely - --> $DIR/traits-negative-impls.rs:32:5 + --> $DIR/traits-negative-impls.rs:32:13 | LL | fn is_send(_: T) {} | ------------------------- required by `is_send` ... LL | is_send(TestType); - | ^^^^^^^ `dummy1b::TestType` cannot be sent between threads safely + | ^^^^^^^^ `dummy1b::TestType` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dummy1b::TestType` error[E0277]: `dummy1c::TestType` cannot be sent between threads safely - --> $DIR/traits-negative-impls.rs:40:5 + --> $DIR/traits-negative-impls.rs:40:13 | LL | fn is_send(_: T) {} | ------------------------- required by `is_send` ... LL | is_send((8, TestType)); - | ^^^^^^^ `dummy1c::TestType` cannot be sent between threads safely + | ^^^^^^^^^^^^^ `dummy1c::TestType` cannot be sent between threads safely | = help: within `({integer}, dummy1c::TestType)`, the trait `std::marker::Send` is not implemented for `dummy1c::TestType` = note: required because it appears within the type `({integer}, dummy1c::TestType)` error[E0277]: `dummy2::TestType` cannot be sent between threads safely - --> $DIR/traits-negative-impls.rs:48:5 + --> $DIR/traits-negative-impls.rs:48:13 | LL | fn is_send(_: T) {} | ------------------------- required by `is_send` ... LL | is_send(Box::new(TestType)); - | ^^^^^^^ `dummy2::TestType` cannot be sent between threads safely + | ^^^^^^^^^^^^^^^^^^ `dummy2::TestType` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dummy2::TestType` = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique` = note: required because it appears within the type `std::boxed::Box` error[E0277]: `dummy3::TestType` cannot be sent between threads safely - --> $DIR/traits-negative-impls.rs:56:5 + --> $DIR/traits-negative-impls.rs:56:13 | LL | fn is_send(_: T) {} | ------------------------- required by `is_send` ... LL | is_send(Box::new(Outer2(TestType))); - | ^^^^^^^ `dummy3::TestType` cannot be sent between threads safely + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `dummy3::TestType` cannot be sent between threads safely | = help: within `Outer2`, the trait `std::marker::Send` is not implemented for `dummy3::TestType` = note: required because it appears within the type `Outer2` @@ -71,13 +71,13 @@ LL | is_send(Box::new(Outer2(TestType))); = note: required because it appears within the type `std::boxed::Box>` error[E0277]: `main::TestType` cannot be sent between threads safely - --> $DIR/traits-negative-impls.rs:66:5 + --> $DIR/traits-negative-impls.rs:66:13 | LL | fn is_sync(_: T) {} | ------------------------- required by `is_sync` ... LL | is_sync(Outer2(TestType)); - | ^^^^^^^ `main::TestType` cannot be sent between threads safely + | ^^^^^^^^^^^^^^^^ `main::TestType` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `main::TestType` = note: required because of the requirements on the impl of `std::marker::Sync` for `Outer2` diff --git a/src/test/ui/trivial-bounds/trivial-bounds-leak.stderr b/src/test/ui/trivial-bounds/trivial-bounds-leak.stderr index d172d5ecc4b..49393a8678e 100644 --- a/src/test/ui/trivial-bounds/trivial-bounds-leak.stderr +++ b/src/test/ui/trivial-bounds/trivial-bounds-leak.stderr @@ -19,19 +19,19 @@ LL | 3i32.test(); candidate #1: `Foo` error[E0277]: the trait bound `i32: Foo` is not satisfied - --> $DIR/trivial-bounds-leak.rs:25:5 + --> $DIR/trivial-bounds-leak.rs:25:15 | LL | fn test(&self); | --------------- required by `Foo::test` ... LL | Foo::test(&4i32); - | ^^^^^^^^^ the trait `Foo` is not implemented for `i32` + | ^^^^^ the trait `Foo` is not implemented for `i32` error[E0277]: the trait bound `i32: Foo` is not satisfied - --> $DIR/trivial-bounds-leak.rs:26:5 + --> $DIR/trivial-bounds-leak.rs:26:22 | LL | generic_function(5i32); - | ^^^^^^^^^^^^^^^^ the trait `Foo` is not implemented for `i32` + | ^^^^ the trait `Foo` is not implemented for `i32` ... LL | fn generic_function(t: T) {} | --------------------------------- required by `generic_function` diff --git a/src/test/ui/try-operator-on-main.rs b/src/test/ui/try-operator-on-main.rs index 3b48194eb44..3372fac5707 100644 --- a/src/test/ui/try-operator-on-main.rs +++ b/src/test/ui/try-operator-on-main.rs @@ -10,6 +10,7 @@ fn main() { // a non-`Try` type on a non-`Try` fn ()?; //~ ERROR the `?` operator can only + //~^ ERROR the trait bound `(): std::ops::Try` is not satisfied // an unrelated use of `Try` try_trait_generic::<()>(); //~ ERROR the trait bound @@ -19,7 +20,8 @@ fn main() { fn try_trait_generic() -> T { // and a non-`Try` object on a `Try` fn. - ()?; //~ ERROR the `?` operator can only + ()?; //~ ERROR the trait bound `(): std::ops::Try` is not satisfied + //~^ ERROR the trait bound `(): std::ops::Try` is not satisfied loop {} } diff --git a/src/test/ui/try-operator-on-main.stderr b/src/test/ui/try-operator-on-main.stderr index 6878cd80629..07d99c16dbf 100644 --- a/src/test/ui/try-operator-on-main.stderr +++ b/src/test/ui/try-operator-on-main.stderr @@ -7,17 +7,25 @@ LL | std::fs::File::open("foo")?; = help: the trait `std::ops::Try` is not implemented for `()` = note: required by `std::ops::Try::from_error` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` +error[E0277]: the trait bound `(): std::ops::Try` is not satisfied --> $DIR/try-operator-on-main.rs:12:5 | LL | ()?; - | ^^^ the `?` operator cannot be applied to type `()` + | ^^ the trait `std::ops::Try` is not implemented for `()` | - = help: the trait `std::ops::Try` is not implemented for `()` = note: required by `std::ops::Try::into_result` +error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`) + --> $DIR/try-operator-on-main.rs:12:5 + | +LL | ()?; + | ^^^ cannot use the `?` operator in a function that returns `()` + | + = help: the trait `std::ops::Try` is not implemented for `()` + = note: required by `std::ops::Try::from_error` + error[E0277]: the trait bound `(): std::ops::Try` is not satisfied - --> $DIR/try-operator-on-main.rs:15:5 + --> $DIR/try-operator-on-main.rs:16:5 | LL | try_trait_generic::<()>(); | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::ops::Try` is not implemented for `()` @@ -25,15 +33,20 @@ LL | try_trait_generic::<()>(); LL | fn try_trait_generic() -> T { | ----------------------------------- required by `try_trait_generic` -error[E0277]: the `?` operator can only be applied to values that implement `std::ops::Try` - --> $DIR/try-operator-on-main.rs:22:5 +error[E0277]: the trait bound `(): std::ops::Try` is not satisfied + --> $DIR/try-operator-on-main.rs:23:5 | LL | ()?; - | ^^^ the `?` operator cannot be applied to type `()` + | ^^ the trait `std::ops::Try` is not implemented for `()` | - = help: the trait `std::ops::Try` is not implemented for `()` = note: required by `std::ops::Try::into_result` -error: aborting due to 4 previous errors +error[E0277]: the trait bound `(): std::ops::Try` is not satisfied + --> $DIR/try-operator-on-main.rs:23:5 + | +LL | ()?; + | ^^^ the trait `std::ops::Try` is not implemented for `()` + +error: aborting due to 6 previous errors For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/type/type-check-defaults.stderr b/src/test/ui/type/type-check-defaults.stderr index 42cca76451f..742a709958f 100644 --- a/src/test/ui/type/type-check-defaults.stderr +++ b/src/test/ui/type/type-check-defaults.stderr @@ -20,30 +20,30 @@ LL | struct WellFormedNoBounds>(Z); = help: the trait `std::iter::FromIterator` is not implemented for `i32` error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied - --> $DIR/type-check-defaults.rs:11:1 + --> $DIR/type-check-defaults.rs:11:17 | LL | struct Bounds(T); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | | - | the trait `std::marker::Copy` is not implemented for `std::string::String` + | ----------------^^^^------------ + | | | + | | the trait `std::marker::Copy` is not implemented for `std::string::String` | required by `Bounds` error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied - --> $DIR/type-check-defaults.rs:14:1 + --> $DIR/type-check-defaults.rs:14:42 | LL | struct WhereClause(T) where T: Copy; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | | - | the trait `std::marker::Copy` is not implemented for `std::string::String` + | -----------------------------------------^^^^- + | | | + | | the trait `std::marker::Copy` is not implemented for `std::string::String` | required by `WhereClause` error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied - --> $DIR/type-check-defaults.rs:17:1 + --> $DIR/type-check-defaults.rs:17:20 | LL | trait TraitBound {} - | -------------------------------^^^ - | | - | the trait `std::marker::Copy` is not implemented for `std::string::String` + | -------------------^^^^-------- + | | | + | | the trait `std::marker::Copy` is not implemented for `std::string::String` | required by `TraitBound` error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied @@ -57,12 +57,12 @@ LL | trait Base: Super { } = help: consider adding a `where T: std::marker::Copy` bound error[E0277]: cannot add `u8` to `i32` - --> $DIR/type-check-defaults.rs:24:1 + --> $DIR/type-check-defaults.rs:24:66 | LL | trait ProjectionPred> where T::Item : Add {} - | ------------------------------------------------------------------------^^^ - | | - | no implementation for `i32 + u8` + | -----------------------------------------------------------------^^^^^^^ + | | | + | | no implementation for `i32 + u8` | required by `ProjectionPred` | = help: the trait `std::ops::Add` is not implemented for `i32` diff --git a/src/test/ui/typeck/typeck-unsafe-always-share.stderr b/src/test/ui/typeck/typeck-unsafe-always-share.stderr index 7ed85a14259..8b3032b088d 100644 --- a/src/test/ui/typeck/typeck-unsafe-always-share.stderr +++ b/src/test/ui/typeck/typeck-unsafe-always-share.stderr @@ -1,22 +1,22 @@ error[E0277]: `std::cell::UnsafeCell>` cannot be shared between threads safely - --> $DIR/typeck-unsafe-always-share.rs:19:5 + --> $DIR/typeck-unsafe-always-share.rs:19:10 | LL | fn test(s: T) {} | ---------------------- required by `test` ... LL | test(us); - | ^^^^ `std::cell::UnsafeCell>` cannot be shared between threads safely + | ^^ `std::cell::UnsafeCell>` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `std::cell::UnsafeCell>` error[E0277]: `std::cell::UnsafeCell` cannot be shared between threads safely - --> $DIR/typeck-unsafe-always-share.rs:23:5 + --> $DIR/typeck-unsafe-always-share.rs:23:10 | LL | fn test(s: T) {} | ---------------------- required by `test` ... LL | test(uns); - | ^^^^ `std::cell::UnsafeCell` cannot be shared between threads safely + | ^^^ `std::cell::UnsafeCell` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `std::cell::UnsafeCell` @@ -33,13 +33,13 @@ LL | test(ms); = note: required because it appears within the type `MySync` error[E0277]: `NoSync` cannot be shared between threads safely - --> $DIR/typeck-unsafe-always-share.rs:30:5 + --> $DIR/typeck-unsafe-always-share.rs:30:10 | LL | fn test(s: T) {} | ---------------------- required by `test` ... LL | test(NoSync); - | ^^^^ `NoSync` cannot be shared between threads safely + | ^^^^^^ `NoSync` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `NoSync` diff --git a/src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr b/src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr index d64e54a5484..d03397e4244 100644 --- a/src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr +++ b/src/test/ui/unboxed-closures/unboxed-closures-fnmut-as-fn.stderr @@ -1,11 +1,11 @@ error[E0277]: expected a `std::ops::Fn<(isize,)>` closure, found `S` - --> $DIR/unboxed-closures-fnmut-as-fn.rs:28:13 + --> $DIR/unboxed-closures-fnmut-as-fn.rs:28:21 | LL | fn call_itisize>(f: &F, x: isize) -> isize { | -------------------------------------------------------- required by `call_it` ... LL | let x = call_it(&S, 22); - | ^^^^^^^ expected an `Fn<(isize,)>` closure, found `S` + | ^^ expected an `Fn<(isize,)>` closure, found `S` | = help: the trait `std::ops::Fn<(isize,)>` is not implemented for `S` diff --git a/src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr b/src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr index 3d20b5df1e3..bde30729a3c 100644 --- a/src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr +++ b/src/test/ui/unboxed-closures/unboxed-closures-unsafe-extern-fn.stderr @@ -1,55 +1,55 @@ error[E0277]: expected a `std::ops::Fn<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-unsafe-extern-fn.rs:12:13 + --> $DIR/unboxed-closures-unsafe-extern-fn.rs:12:21 | LL | fn call_itisize>(_: &F, _: isize) -> isize { 0 } | --------------------------------------------------------- required by `call_it` ... LL | let x = call_it(&square, 22); - | ^^^^^^^ expected an `Fn<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` + | ^^^^^^^ expected an `Fn<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` | = help: the trait `for<'r> std::ops::Fn<(&'r isize,)>` is not implemented for `for<'r> unsafe fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-unsafe-extern-fn.rs:12:13 + --> $DIR/unboxed-closures-unsafe-extern-fn.rs:12:21 | LL | fn call_itisize>(_: &F, _: isize) -> isize { 0 } | --------------------------------------------------------- required by `call_it` ... LL | let x = call_it(&square, 22); - | ^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` + | ^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `for<'r> unsafe fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnMut<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-unsafe-extern-fn.rs:18:13 + --> $DIR/unboxed-closures-unsafe-extern-fn.rs:18:25 | LL | fn call_it_mutisize>(_: &mut F, _: isize) -> isize { 0 } | -------------------------------------------------------------------- required by `call_it_mut` ... LL | let y = call_it_mut(&mut square, 22); - | ^^^^^^^^^^^ expected an `FnMut<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` + | ^^^^^^^^^^^ expected an `FnMut<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` | = help: the trait `for<'r> std::ops::FnMut<(&'r isize,)>` is not implemented for `for<'r> unsafe fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-unsafe-extern-fn.rs:18:13 + --> $DIR/unboxed-closures-unsafe-extern-fn.rs:18:25 | LL | fn call_it_mutisize>(_: &mut F, _: isize) -> isize { 0 } | -------------------------------------------------------------------- required by `call_it_mut` ... LL | let y = call_it_mut(&mut square, 22); - | ^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` + | ^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `for<'r> unsafe fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-unsafe-extern-fn.rs:24:13 + --> $DIR/unboxed-closures-unsafe-extern-fn.rs:24:26 | LL | fn call_it_onceisize>(_: F, _: isize) -> isize { 0 } | ----------------------------------------------------------------- required by `call_it_once` ... LL | let z = call_it_once(square, 22); - | ^^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` + | ^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> unsafe fn(&'r isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `for<'r> unsafe fn(&'r isize) -> isize {square}` diff --git a/src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr b/src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr index f435a05e049..7b393b35f29 100644 --- a/src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr +++ b/src/test/ui/unboxed-closures/unboxed-closures-wrong-abi.stderr @@ -1,55 +1,55 @@ error[E0277]: expected a `std::ops::Fn<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-abi.rs:12:13 + --> $DIR/unboxed-closures-wrong-abi.rs:12:21 | LL | fn call_itisize>(_: &F, _: isize) -> isize { 0 } | --------------------------------------------------------- required by `call_it` ... LL | let x = call_it(&square, 22); - | ^^^^^^^ expected an `Fn<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` + | ^^^^^^^ expected an `Fn<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` | = help: the trait `for<'r> std::ops::Fn<(&'r isize,)>` is not implemented for `for<'r> extern "C" fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-abi.rs:12:13 + --> $DIR/unboxed-closures-wrong-abi.rs:12:21 | LL | fn call_itisize>(_: &F, _: isize) -> isize { 0 } | --------------------------------------------------------- required by `call_it` ... LL | let x = call_it(&square, 22); - | ^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` + | ^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `for<'r> extern "C" fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnMut<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-abi.rs:18:13 + --> $DIR/unboxed-closures-wrong-abi.rs:18:25 | LL | fn call_it_mutisize>(_: &mut F, _: isize) -> isize { 0 } | -------------------------------------------------------------------- required by `call_it_mut` ... LL | let y = call_it_mut(&mut square, 22); - | ^^^^^^^^^^^ expected an `FnMut<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` + | ^^^^^^^^^^^ expected an `FnMut<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` | = help: the trait `for<'r> std::ops::FnMut<(&'r isize,)>` is not implemented for `for<'r> extern "C" fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-abi.rs:18:13 + --> $DIR/unboxed-closures-wrong-abi.rs:18:25 | LL | fn call_it_mutisize>(_: &mut F, _: isize) -> isize { 0 } | -------------------------------------------------------------------- required by `call_it_mut` ... LL | let y = call_it_mut(&mut square, 22); - | ^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` + | ^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `for<'r> extern "C" fn(&'r isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-abi.rs:24:13 + --> $DIR/unboxed-closures-wrong-abi.rs:24:26 | LL | fn call_it_onceisize>(_: F, _: isize) -> isize { 0 } | ----------------------------------------------------------------- required by `call_it_once` ... LL | let z = call_it_once(square, 22); - | ^^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` + | ^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `for<'r> extern "C" fn(&'r isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `for<'r> extern "C" fn(&'r isize) -> isize {square}` diff --git a/src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr b/src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr index efdb2e8efa4..68fc0d45b9a 100644 --- a/src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr +++ b/src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr @@ -1,55 +1,55 @@ error[E0277]: expected a `std::ops::Fn<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:13:13 + --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:13:21 | LL | fn call_itisize>(_: &F, _: isize) -> isize { 0 } | --------------------------------------------------------- required by `call_it` ... LL | let x = call_it(&square, 22); - | ^^^^^^^ expected an `Fn<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` + | ^^^^^^^ expected an `Fn<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` | = help: the trait `for<'r> std::ops::Fn<(&'r isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:13:13 + --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:13:21 | LL | fn call_itisize>(_: &F, _: isize) -> isize { 0 } | --------------------------------------------------------- required by `call_it` ... LL | let x = call_it(&square, 22); - | ^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` + | ^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}` error[E0277]: expected a `std::ops::FnMut<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:19:13 + --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:19:25 | LL | fn call_it_mutisize>(_: &mut F, _: isize) -> isize { 0 } | -------------------------------------------------------------------- required by `call_it_mut` ... LL | let y = call_it_mut(&mut square, 22); - | ^^^^^^^^^^^ expected an `FnMut<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` + | ^^^^^^^^^^^ expected an `FnMut<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` | = help: the trait `for<'r> std::ops::FnMut<(&'r isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:19:13 + --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:19:25 | LL | fn call_it_mutisize>(_: &mut F, _: isize) -> isize { 0 } | -------------------------------------------------------------------- required by `call_it_mut` ... LL | let y = call_it_mut(&mut square, 22); - | ^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` + | ^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}` error[E0277]: expected a `std::ops::FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` - --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:25:13 + --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:25:26 | LL | fn call_it_onceisize>(_: F, _: isize) -> isize { 0 } | ----------------------------------------------------------------- required by `call_it_once` ... LL | let z = call_it_once(square, 22); - | ^^^^^^^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` + | ^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}` | = help: the trait `std::ops::FnOnce<(&isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}` diff --git a/src/test/ui/unsized3.stderr b/src/test/ui/unsized3.stderr index 9064aa14d42..f381cacadf9 100644 --- a/src/test/ui/unsized3.stderr +++ b/src/test/ui/unsized3.stderr @@ -1,8 +1,8 @@ error[E0277]: the size for values of type `X` cannot be known at compilation time - --> $DIR/unsized3.rs:7:5 + --> $DIR/unsized3.rs:7:13 | LL | f2::(x); - | ^^^^^^^ doesn't have a size known at compile-time + | ^ doesn't have a size known at compile-time ... LL | fn f2(x: &X) { | --------------- required by `f2` @@ -12,10 +12,10 @@ LL | fn f2(x: &X) { = help: consider adding a `where X: std::marker::Sized` bound error[E0277]: the size for values of type `X` cannot be known at compilation time - --> $DIR/unsized3.rs:18:5 + --> $DIR/unsized3.rs:18:13 | LL | f4::(x); - | ^^^^^^^ doesn't have a size known at compile-time + | ^ doesn't have a size known at compile-time ... LL | fn f4(x: &X) { | ------------------ required by `f4` @@ -25,13 +25,13 @@ LL | fn f4(x: &X) { = help: consider adding a `where X: std::marker::Sized` bound error[E0277]: the size for values of type `X` cannot be known at compilation time - --> $DIR/unsized3.rs:33:5 + --> $DIR/unsized3.rs:33:8 | LL | fn f5(x: &Y) {} | --------------- required by `f5` ... LL | f5(x1); - | ^^ doesn't have a size known at compile-time + | ^^ doesn't have a size known at compile-time | = help: within `S`, the trait `std::marker::Sized` is not implemented for `X` = note: to learn more, visit @@ -39,10 +39,10 @@ LL | f5(x1); = note: required because it appears within the type `S` error[E0277]: the size for values of type `X` cannot be known at compilation time - --> $DIR/unsized3.rs:40:5 + --> $DIR/unsized3.rs:40:8 | LL | f5(&(*x1, 34)); - | ^^ doesn't have a size known at compile-time + | ^^^^^^^^^^ doesn't have a size known at compile-time | = help: within `S`, the trait `std::marker::Sized` is not implemented for `X` = note: to learn more, visit @@ -64,13 +64,13 @@ LL | f5(&(32, *x1)); = note: tuples must have a statically known size to be initialized error[E0277]: the size for values of type `X` cannot be known at compilation time - --> $DIR/unsized3.rs:45:5 + --> $DIR/unsized3.rs:45:8 | LL | fn f5(x: &Y) {} | --------------- required by `f5` ... LL | f5(&(32, *x1)); - | ^^ doesn't have a size known at compile-time + | ^^^^^^^^^^ doesn't have a size known at compile-time | = help: within `({integer}, S)`, the trait `std::marker::Sized` is not implemented for `X` = note: to learn more, visit diff --git a/src/test/ui/vtable-res-trait-param.stderr b/src/test/ui/vtable-res-trait-param.stderr index 58a88979b2f..bff64813268 100644 --- a/src/test/ui/vtable-res-trait-param.stderr +++ b/src/test/ui/vtable-res-trait-param.stderr @@ -1,8 +1,8 @@ error[E0277]: the trait bound `{integer}: TraitA` is not satisfied - --> $DIR/vtable-res-trait-param.rs:17:7 + --> $DIR/vtable-res-trait-param.rs:17:18 | LL | b.gimme_an_a(y) - | ^^^^^^^^^^ the trait `TraitA` is not implemented for `{integer}` + | ^ the trait `TraitA` is not implemented for `{integer}` error: aborting due to previous error diff --git a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr b/src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr index f923c679882..118caf8ccce 100644 --- a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr +++ b/src/test/ui/where-clauses/where-clause-constraints-are-local-for-inherent-impl.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied - --> $DIR/where-clause-constraints-are-local-for-inherent-impl.rs:13:9 + --> $DIR/where-clause-constraints-are-local-for-inherent-impl.rs:13:22 | LL | fn require_copy(x: T) {} | ------------------------------ required by `require_copy` ... LL | require_copy(self.x); - | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` + | ^^^^^^ the trait `std::marker::Copy` is not implemented for `T` | = help: consider adding a `where T: std::marker::Copy` bound diff --git a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr b/src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr index 32736836ef8..d1cb4e1cc7d 100644 --- a/src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr +++ b/src/test/ui/where-clauses/where-clause-constraints-are-local-for-trait-impl.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied - --> $DIR/where-clause-constraints-are-local-for-trait-impl.rs:18:9 + --> $DIR/where-clause-constraints-are-local-for-trait-impl.rs:18:22 | LL | fn require_copy(x: T) {} | ------------------------------ required by `require_copy` ... LL | require_copy(self.x); - | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` + | ^^^^^^ the trait `std::marker::Copy` is not implemented for `T` | = help: consider adding a `where T: std::marker::Copy` bound diff --git a/src/test/ui/where-clauses/where-clauses-method-unsatisfied.stderr b/src/test/ui/where-clauses/where-clauses-method-unsatisfied.stderr index 60bcba09e97..6fd38728777 100644 --- a/src/test/ui/where-clauses/where-clauses-method-unsatisfied.stderr +++ b/src/test/ui/where-clauses/where-clauses-method-unsatisfied.stderr @@ -1,8 +1,8 @@ error[E0277]: the trait bound `Bar: std::cmp::Eq` is not satisfied - --> $DIR/where-clauses-method-unsatisfied.rs:18:7 + --> $DIR/where-clauses-method-unsatisfied.rs:18:14 | LL | x.equals(&x); - | ^^^^^^ the trait `std::cmp::Eq` is not implemented for `Bar` + | ^^ the trait `std::cmp::Eq` is not implemented for `Bar` error: aborting due to previous error