Rollup merge of #105078 - TaKO8Ki:fix-105011, r=nnethercote
Fix `expr_to_spanned_string` ICE Fixes #105011
This commit is contained in:
commit
741f8c9166
4 changed files with 19 additions and 8 deletions
|
@ -16,6 +16,7 @@ use rustc_errors::{
|
||||||
use rustc_lint_defs::builtin::PROC_MACRO_BACK_COMPAT;
|
use rustc_lint_defs::builtin::PROC_MACRO_BACK_COMPAT;
|
||||||
use rustc_lint_defs::{BufferedEarlyLint, BuiltinLintDiagnostics};
|
use rustc_lint_defs::{BufferedEarlyLint, BuiltinLintDiagnostics};
|
||||||
use rustc_parse::{self, parser, MACRO_ARGUMENTS};
|
use rustc_parse::{self, parser, MACRO_ARGUMENTS};
|
||||||
|
use rustc_session::errors::report_lit_error;
|
||||||
use rustc_session::{parse::ParseSess, Limit, Session};
|
use rustc_session::{parse::ParseSess, Limit, Session};
|
||||||
use rustc_span::def_id::{CrateNum, DefId, LocalDefId};
|
use rustc_span::def_id::{CrateNum, DefId, LocalDefId};
|
||||||
use rustc_span::edition::Edition;
|
use rustc_span::edition::Edition;
|
||||||
|
@ -1245,7 +1246,10 @@ pub fn expr_to_spanned_string<'a>(
|
||||||
Some((err, true))
|
Some((err, true))
|
||||||
}
|
}
|
||||||
Ok(ast::LitKind::Err) => None,
|
Ok(ast::LitKind::Err) => None,
|
||||||
Err(_) => None,
|
Err(err) => {
|
||||||
|
report_lit_error(&cx.sess.parse_sess, err, token_lit, expr.span);
|
||||||
|
None
|
||||||
|
}
|
||||||
_ => Some((cx.struct_span_err(expr.span, err_msg), false)),
|
_ => Some((cx.struct_span_err(expr.span, err_msg), false)),
|
||||||
},
|
},
|
||||||
ast::ExprKind::Err => None,
|
ast::ExprKind::Err => None,
|
||||||
|
|
|
@ -197,12 +197,12 @@ pub enum UnleashedFeatureHelp {
|
||||||
|
|
||||||
#[derive(Diagnostic)]
|
#[derive(Diagnostic)]
|
||||||
#[diag(session_invalid_literal_suffix)]
|
#[diag(session_invalid_literal_suffix)]
|
||||||
pub(crate) struct InvalidLiteralSuffix {
|
pub(crate) struct InvalidLiteralSuffix<'a> {
|
||||||
#[primary_span]
|
#[primary_span]
|
||||||
#[label]
|
#[label]
|
||||||
pub span: Span,
|
pub span: Span,
|
||||||
// FIXME(#100717)
|
// FIXME(#100717)
|
||||||
pub kind: String,
|
pub kind: &'a str,
|
||||||
pub suffix: Symbol,
|
pub suffix: Symbol,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,11 +311,7 @@ pub fn report_lit_error(sess: &ParseSess, err: LitError, lit: token::Lit, span:
|
||||||
LitError::LexerError => {}
|
LitError::LexerError => {}
|
||||||
LitError::InvalidSuffix => {
|
LitError::InvalidSuffix => {
|
||||||
if let Some(suffix) = suffix {
|
if let Some(suffix) = suffix {
|
||||||
sess.emit_err(InvalidLiteralSuffix {
|
sess.emit_err(InvalidLiteralSuffix { span, kind: kind.descr(), suffix });
|
||||||
span,
|
|
||||||
kind: format!("{}", kind.descr()),
|
|
||||||
suffix,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LitError::InvalidIntSuffix => {
|
LitError::InvalidIntSuffix => {
|
||||||
|
|
3
src/test/ui/macros/issue-105011.rs
Normal file
3
src/test/ui/macros/issue-105011.rs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
fn main() {
|
||||||
|
println!(""y); //~ ERROR suffixes on string literals are invalid
|
||||||
|
}
|
8
src/test/ui/macros/issue-105011.stderr
Normal file
8
src/test/ui/macros/issue-105011.stderr
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
error: suffixes on string literals are invalid
|
||||||
|
--> $DIR/issue-105011.rs:2:14
|
||||||
|
|
|
||||||
|
LL | println!(""y);
|
||||||
|
| ^^^ invalid suffix `y`
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue