Remove impl_trait_in_bindings handling on inference error reporting

This commit is contained in:
Santiago Pastorino 2021-07-14 16:55:31 -03:00
parent 4d2d90307d
commit 962ac8183d
No known key found for this signature in database
GPG Key ID: 8131A24E0C79EFAF
4 changed files with 2 additions and 120 deletions

View File

@ -491,11 +491,8 @@ pub fn emit_inference_failure_err(
span
};
let is_named_and_not_impl_trait = |ty: Ty<'_>| {
&ty.to_string() != "_" &&
// FIXME: Remove this check after `impl_trait_in_bindings` is stabilized. #63527
(!ty.is_impl_trait() || self.tcx.features().impl_trait_in_bindings)
};
let is_named_and_not_impl_trait =
|ty: Ty<'_>| &ty.to_string() != "_" && !ty.is_impl_trait();
let ty_msg = match (local_visitor.found_node_ty, local_visitor.found_exact_method_call) {
(_, Some(_)) => String::new(),

View File

@ -1,77 +0,0 @@
error[E0435]: attempt to use a non-constant value in a constant
--> $DIR/bindings.rs:5:29
|
LL | const foo: impl Clone = x;
| --------- ^ non-constant value
| |
| help: consider using `let` instead of `const`: `let foo`
error[E0435]: attempt to use a non-constant value in a constant
--> $DIR/bindings.rs:11:33
|
LL | const foo: impl Clone = x;
| --------- ^ non-constant value
| |
| help: consider using `let` instead of `const`: `let foo`
error[E0435]: attempt to use a non-constant value in a constant
--> $DIR/bindings.rs:18:33
|
LL | const foo: impl Clone = x;
| --------- ^ non-constant value
| |
| help: consider using `let` instead of `const`: `let foo`
error[E0435]: attempt to use a non-constant value in a constant
--> $DIR/bindings.rs:25:33
|
LL | const foo: impl Clone = x;
| --------- ^ non-constant value
| |
| help: consider using `let` instead of `const`: `let foo`
error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
--> $DIR/bindings.rs:5:16
|
LL | const foo: impl Clone = x;
| ^^^^^^^^^^
|
= help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
--> $DIR/bindings.rs:11:20
|
LL | const foo: impl Clone = x;
| ^^^^^^^^^^
|
= help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
--> $DIR/bindings.rs:18:20
|
LL | const foo: impl Clone = x;
| ^^^^^^^^^^
|
= help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
error[E0562]: `impl Trait` not allowed outside of function and inherent method return types
--> $DIR/bindings.rs:25:20
|
LL | const foo: impl Clone = x;
| ^^^^^^^^^^
|
= help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/bindings.rs:1:12
|
LL | #![feature(impl_trait_in_bindings)]
| ^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(incomplete_features)]` on by default
= note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
error: aborting due to 8 previous errors; 1 warning emitted
Some errors have detailed explanations: E0435, E0562.
For more information about an error, try `rustc --explain E0435`.

View File

@ -1,17 +0,0 @@
// edition:2018
#![feature(impl_trait_in_bindings)]
//~^ WARN the feature `impl_trait_in_bindings` is incomplete
use std::io::Error;
fn make_unit() -> Result<(), Error> {
Ok(())
}
fn main() {
let fut = async {
make_unit()?;
Ok(()) //~ ERROR type annotations needed
};
}

View File

@ -1,21 +0,0 @@
warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/cannot-infer-async-enabled-impl-trait-bindings.rs:2:12
|
LL | #![feature(impl_trait_in_bindings)]
| ^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(incomplete_features)]` on by default
= note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
error[E0282]: type annotations needed for `impl Future`
--> $DIR/cannot-infer-async-enabled-impl-trait-bindings.rs:15:9
|
LL | let fut = async {
| --- consider giving `fut` the explicit type `impl Future`, where the type parameter `E` is specified
...
LL | Ok(())
| ^^ cannot infer type for type parameter `E` declared on the enum `Result`
error: aborting due to previous error; 1 warning emitted
For more information about this error, try `rustc --explain E0282`.