diff --git a/src/uu/tr/src/operation.rs b/src/uu/tr/src/operation.rs index a9d1f528739..2f45bc9b990 100644 --- a/src/uu/tr/src/operation.rs +++ b/src/uu/tr/src/operation.rs @@ -304,19 +304,17 @@ impl Sequence { return Err(BadSequence::ComplementMoreThanOneUniqueInSet2); } - if set2_solved.len() < set1_solved.len() - && !truncate_set1_flag - && matches!( + if set2_solved.len() < set1_solved.len() { + if truncate_set1_flag { + set1_solved.truncate(set2_solved.len()); + } else if matches!( set2.last().copied(), Some(Self::Class(Class::Upper | Class::Lower)) - ) - { - return Err(BadSequence::Set1LongerSet2EndsInClass); - } - //Truncation is done dead last. It has no influence on the other conversion steps - if truncate_set1_flag { - set1_solved.truncate(set2_solved.len()); + ) { + return Err(BadSequence::Set1LongerSet2EndsInClass); + } } + Ok((set1_solved, set2_solved)) } }