Auto merge of #102944 - nnethercote:ast-Lit-third-time-lucky, r=petrochenkov
Use `token::Lit` in `ast::ExprKind::Lit`. Instead of `ast::Lit`. Literal lowering now happens at two different times. Expression literals are lowered when HIR is crated. Attribute literals are lowered during parsing. r? `@petrochenkov`
This commit is contained in:
commit
bebd57a960
45 changed files with 786 additions and 507 deletions
|
@ -98,9 +98,10 @@ fn pierce_parens(mut expr: &ast::Expr) -> &ast::Expr {
|
|||
impl EarlyLintPass for WhileTrue {
|
||||
fn check_expr(&mut self, cx: &EarlyContext<'_>, e: &ast::Expr) {
|
||||
if let ast::ExprKind::While(cond, _, label) = &e.kind
|
||||
&& let ast::ExprKind::Lit(ref lit) = pierce_parens(cond).kind
|
||||
&& let ast::LitKind::Bool(true) = lit.kind
|
||||
&& !lit.span.from_expansion()
|
||||
&& let cond = pierce_parens(cond)
|
||||
&& let ast::ExprKind::Lit(token_lit) = cond.kind
|
||||
&& let token::Lit { kind: token::Bool, symbol: kw::True, .. } = token_lit
|
||||
&& !cond.span.from_expansion()
|
||||
{
|
||||
let condition_span = e.span.with_hi(cond.span.hi());
|
||||
cx.struct_span_lint(
|
||||
|
|
|
@ -123,23 +123,22 @@ impl EarlyLintPass for HiddenUnicodeCodepoints {
|
|||
|
||||
fn check_expr(&mut self, cx: &EarlyContext<'_>, expr: &ast::Expr) {
|
||||
// byte strings are already handled well enough by `EscapeError::NonAsciiCharInByteString`
|
||||
let (text, span, padding) = match &expr.kind {
|
||||
ast::ExprKind::Lit(ast::Lit { token_lit, kind, span }) => {
|
||||
match &expr.kind {
|
||||
ast::ExprKind::Lit(token_lit) => {
|
||||
let text = token_lit.symbol;
|
||||
if !contains_text_flow_control_chars(text.as_str()) {
|
||||
return;
|
||||
}
|
||||
let padding = match kind {
|
||||
let padding = match token_lit.kind {
|
||||
// account for `"` or `'`
|
||||
ast::LitKind::Str(_, ast::StrStyle::Cooked) | ast::LitKind::Char(_) => 1,
|
||||
ast::token::LitKind::Str | ast::token::LitKind::Char => 1,
|
||||
// account for `r###"`
|
||||
ast::LitKind::Str(_, ast::StrStyle::Raw(val)) => *val as u32 + 2,
|
||||
ast::token::LitKind::StrRaw(n) => n as u32 + 2,
|
||||
_ => return,
|
||||
};
|
||||
(text, span, padding)
|
||||
self.lint_text_direction_codepoint(cx, text, expr.span, padding, true, "literal");
|
||||
}
|
||||
_ => return,
|
||||
_ => {}
|
||||
};
|
||||
self.lint_text_direction_codepoint(cx, text, *span, padding, true, "literal");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue