Skip to content

Commit

Permalink
try-back-block-type test: Use TryFromSliceError for From test
Browse files Browse the repository at this point in the history
Using `i32` is rather fragile because it has many implementations -
and indeed I'm about to add one.

TryFromSliceError is nice because it doesn't seem likely to grow new
conversions.  We still have one conversion, from Infallible.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
  • Loading branch information
ijackson committed Feb 17, 2021
1 parent ee88f46 commit 8ae05df
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/test/ui/try-block/try-block-bad-type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#![feature(try_blocks)]

pub fn main() {
let res: Result<u32, i32> = try {
let res: Result<u32, std::array::TryFromSliceError> = try {
Err("")?; //~ ERROR `?` couldn't convert the error
5
};
Expand Down
10 changes: 3 additions & 7 deletions src/test/ui/try-block/try-block-bad-type.stderr
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
error[E0277]: `?` couldn't convert the error to `i32`
error[E0277]: `?` couldn't convert the error to `TryFromSliceError`
--> $DIR/try-block-bad-type.rs:7:16
|
LL | Err("")?;
| ^ the trait `From<&str>` is not implemented for `i32`
| ^ the trait `From<&str>` is not implemented for `TryFromSliceError`
|
= note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
= help: the following implementations were found:
<i32 as From<NonZeroI32>>
<i32 as From<bool>>
<i32 as From<i16>>
<i32 as From<i8>>
and 2 others
<TryFromSliceError as From<Infallible>>
= note: required by `from`

error[E0271]: type mismatch resolving `<Result<i32, i32> as Try>::Ok == &str`
Expand Down

0 comments on commit 8ae05df

Please sign in to comment.