Skip to content

Commit 266a726

Browse files
committed
Simple library test updates
1 parent ca92b5a commit 266a726

File tree

4 files changed

+24
-39
lines changed

4 files changed

+24
-39
lines changed

library/core/src/ops/try_trait.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ use crate::ops::ControlFlow;
4141
/// output type that we want:
4242
/// ```
4343
/// # #![feature(try_trait_v2)]
44-
/// # #![feature(try_trait_transition)]
45-
/// # use std::ops::TryV2 as Try;
44+
/// # use std::ops::Try;
4645
/// fn simple_try_fold_1<A, T, R: Try<Output = A>>(
4746
/// iter: impl Iterator<Item = T>,
4847
/// mut accum: A,
@@ -56,9 +55,8 @@ use crate::ops::ControlFlow;
5655
/// into the return type using [`Try::from_output`]:
5756
/// ```
5857
/// # #![feature(try_trait_v2)]
59-
/// # #![feature(try_trait_transition)]
6058
/// # #![feature(control_flow_enum)]
61-
/// # use std::ops::{ControlFlow, TryV2 as Try};
59+
/// # use std::ops::{ControlFlow, Try};
6260
/// fn simple_try_fold_2<A, T, R: Try<Output = A>>(
6361
/// iter: impl Iterator<Item = T>,
6462
/// mut accum: A,
@@ -81,9 +79,8 @@ use crate::ops::ControlFlow;
8179
/// recreated from their corresponding residual, so we'll just call it:
8280
/// ```
8381
/// # #![feature(try_trait_v2)]
84-
/// # #![feature(try_trait_transition)]
8582
/// # #![feature(control_flow_enum)]
86-
/// # use std::ops::{ControlFlow, TryV2 as Try};
83+
/// # use std::ops::{ControlFlow, Try};
8784
/// pub fn simple_try_fold_3<A, T, R: Try<Output = A>>(
8885
/// iter: impl Iterator<Item = T>,
8986
/// mut accum: A,
@@ -103,10 +100,9 @@ use crate::ops::ControlFlow;
103100
/// But this "call `branch`, then `match` on it, and `return` if it was a
104101
/// `Break`" is exactly what happens inside the `?` operator. So rather than
105102
/// do all this manually, we can just use `?` instead:
106-
/// ```compile_fail (enable again once ? converts to the new trait)
103+
/// ```
107104
/// # #![feature(try_trait_v2)]
108-
/// # #![feature(try_trait_transition)]
109-
/// # use std::ops::TryV2 as Try;
105+
/// # use std::ops::Try;
110106
/// fn simple_try_fold<A, T, R: Try<Output = A>>(
111107
/// iter: impl Iterator<Item = T>,
112108
/// mut accum: A,
@@ -160,8 +156,7 @@ pub trait Try: FromResidual {
160156
/// ```
161157
/// #![feature(try_trait_v2)]
162158
/// #![feature(control_flow_enum)]
163-
/// #![feature(try_trait_transition)]
164-
/// use std::ops::TryV2 as Try;
159+
/// use std::ops::Try;
165160
///
166161
/// assert_eq!(<Result<_, String> as Try>::from_output(3), Ok(3));
167162
/// assert_eq!(<Option<_> as Try>::from_output(4), Some(4));
@@ -193,8 +188,7 @@ pub trait Try: FromResidual {
193188
/// ```
194189
/// #![feature(try_trait_v2)]
195190
/// #![feature(control_flow_enum)]
196-
/// #![feature(try_trait_transition)]
197-
/// use std::ops::{ControlFlow, TryV2 as Try};
191+
/// use std::ops::{ControlFlow, Try};
198192
///
199193
/// assert_eq!(Ok::<_, String>(3).branch(), ControlFlow::Continue(3));
200194
/// assert_eq!(Err::<String, _>(3).branch(), ControlFlow::Break(Err(3)));

library/core/tests/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#![feature(test)]
4646
#![feature(trusted_len)]
4747
#![feature(try_trait)]
48+
#![feature(try_trait_v2)]
4849
#![feature(slice_internals)]
4950
#![feature(slice_partition_dedup)]
5051
#![feature(int_error_matching)]

library/core/tests/option.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -301,18 +301,6 @@ fn test_try() {
301301
Some(val)
302302
}
303303
assert_eq!(try_option_none(), None);
304-
305-
fn try_option_ok() -> Result<u8, NoneError> {
306-
let val = Some(1)?;
307-
Ok(val)
308-
}
309-
assert_eq!(try_option_ok(), Ok(1));
310-
311-
fn try_option_err() -> Result<u8, NoneError> {
312-
let val = None?;
313-
Ok(val)
314-
}
315-
assert_eq!(try_option_err(), Err(NoneError));
316304
}
317305

318306
#[test]

library/core/tests/result.rs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -249,26 +249,14 @@ pub fn test_into_err() {
249249

250250
#[test]
251251
fn test_try() {
252-
fn try_result_some() -> Option<u8> {
253-
let val = Ok(1)?;
254-
Some(val)
255-
}
256-
assert_eq!(try_result_some(), Some(1));
257-
258-
fn try_result_none() -> Option<u8> {
259-
let val = Err(NoneError)?;
260-
Some(val)
261-
}
262-
assert_eq!(try_result_none(), None);
263-
264-
fn try_result_ok() -> Result<u8, u8> {
252+
fn try_result_ok() -> Result<u8, u32> {
265253
let result: Result<u8, u8> = Ok(1);
266254
let val = result?;
267255
Ok(val)
268256
}
269257
assert_eq!(try_result_ok(), Ok(1));
270258

271-
fn try_result_err() -> Result<u8, u8> {
259+
fn try_result_err() -> Result<u8, u32> {
272260
let result: Result<u8, u8> = Err(1);
273261
let val = result?;
274262
Ok(val)
@@ -401,3 +389,17 @@ fn result_opt_conversions() {
401389

402390
assert_eq!(res, Err(BadNumErr))
403391
}
392+
393+
#[test]
394+
#[cfg(not(bootstrap))] // Needs the V2 trait
395+
fn result_try_trait_v2_branch() {
396+
use core::num::NonZeroU32;
397+
use core::ops::{ControlFlow::*, Try};
398+
assert_eq!(Ok::<i32, i32>(4).branch(), Continue(4));
399+
assert_eq!(Err::<i32, i32>(4).branch(), Break(Err(4)));
400+
let one = NonZeroU32::new(1).unwrap();
401+
assert_eq!(Ok::<(), NonZeroU32>(()).branch(), Continue(()));
402+
assert_eq!(Err::<(), NonZeroU32>(one).branch(), Break(Err(one)));
403+
assert_eq!(Ok::<NonZeroU32, ()>(one).branch(), Continue(one));
404+
assert_eq!(Err::<NonZeroU32, ()>(()).branch(), Break(Err(())));
405+
}

0 commit comments

Comments
 (0)