Handling the integer parsing properly instead of just unwrapping.
Note that the test is not catching the ICE because plain UI tests
[currently hide ICEs][compiletest_issue]. Once that issue is fixed, this
test would fail properly again.
[compiletest_issue]: https://github.com/laumann/compiletest-rs/issues/169
then {
let digit_info = DigitInfo::new(&src, false);
if digit_info.radix == Radix::Decimal {
then {
let digit_info = DigitInfo::new(&src, false);
if digit_info.radix == Radix::Decimal {
- let val = digit_info.digits
+ if let Ok(val) = digit_info.digits
.chars()
.filter(|&c| c != '_')
.collect::<String>()
.chars()
.filter(|&c| c != '_')
.collect::<String>()
- .parse::<u128>().unwrap();
- if val < u128::from(self.threshold) {
- return
+ .parse::<u128>() {
+ if val < u128::from(self.threshold) {
+ return
+ }
+ let hex = format!("{:#X}", val);
+ let digit_info = DigitInfo::new(&hex[..], false);
+ let _ = Self::do_lint(digit_info.digits).map_err(|warning_type| {
+ warning_type.display(&digit_info.grouping_hint(), cx, lit.span)
+ });
- let hex = format!("{:#X}", val);
- let digit_info = DigitInfo::new(&hex[..], false);
- let _ = Self::do_lint(digit_info.digits).map_err(|warning_type| {
- warning_type.display(&digit_info.grouping_hint(), cx, lit.span)
- });
--- /dev/null
+error: invalid suffix `x` for numeric literal
+ --> $DIR/ice-3891.rs:2:5
+ |
+LL | 1x;
+ | ^^ invalid suffix `x`
+ |
+ = help: the suffix must be one of the integral types (`u32`, `isize`, etc)
+
+error: aborting due to previous error
+