Rollup merge of #100978 - nnethercote:fix-100948, r=petrochenkov

Handle `Err` in `ast::LitKind::to_token_lit`.

Fixes #100948.

r? ``@petrochenkov``
This commit is contained in:
Yuki Okushi 2022-08-26 09:51:46 +09:00 committed by GitHub
commit d4a5ec17a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 1 deletions

View File

@ -199,7 +199,9 @@ pub fn to_token_lit(&self) -> token::Lit {
let symbol = if value { kw::True } else { kw::False };
(token::Bool, symbol, None)
}
LitKind::Err => unreachable!(),
// This only shows up in places like `-Zunpretty=hir` output, so we
// don't bother to produce something useful.
LitKind::Err => (token::Err, Symbol::intern("<bad-literal>"), None),
};
token::Lit::new(kind, symbol, suffix)

View File

@ -0,0 +1,8 @@
// compile-flags: -Zunpretty=hir
// check-fail
// In #100948 this caused an ICE with -Zunpretty=hir.
fn main() {
1u;
//~^ ERROR invalid suffix `u` for number literal
}

View File

@ -0,0 +1,10 @@
error: invalid suffix `u` for number literal
--> $DIR/bad-literal.rs:6:5
|
LL | 1u;
| ^^ invalid suffix `u`
|
= help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
error: aborting due to previous error

View File

@ -0,0 +1,11 @@
#[prelude_import]
use ::std::prelude::rust_2015::*;
#[macro_use]
extern crate std;
// compile-flags: -Zunpretty=hir
// check-fail
// In #100948 this caused an ICE with -Zunpretty=hir.
fn main() {
<bad-literal>;
}