refactor: extract final rustc_parse touchpoint from macros.rs

This commit is contained in:
Caleb Cartwright 2021-12-20 19:44:23 -06:00 committed by Caleb Cartwright
parent c8cf454173
commit 62987562e2
2 changed files with 11 additions and 4 deletions

View file

@ -29,7 +29,7 @@ use crate::expr::{rewrite_array, rewrite_assign_rhs, RhsAssignKind};
use crate::lists::{itemize_list, write_list, ListFormatting};
use crate::overflow;
use crate::parse::macros::lazy_static::parse_lazy_static;
use crate::parse::macros::{build_parser, parse_macro_args, ParsedMacroArgs};
use crate::parse::macros::{parse_expr, parse_macro_args, ParsedMacroArgs};
use crate::rewrite::{Rewrite, RewriteContext};
use crate::shape::{Indent, Shape};
use crate::source_map::SpanUtils;
@ -1060,11 +1060,10 @@ pub(crate) fn convert_try_mac(
let path = &pprust::path_to_string(&mac.path);
if path == "try" || path == "r#try" {
let ts = mac.args.inner_tokens();
let mut parser = build_parser(context, ts);
Some(ast::Expr {
id: ast::NodeId::root(), // dummy value
kind: ast::ExprKind::Try(parser.parse_expr().ok()?),
kind: ast::ExprKind::Try(parse_expr(context, ts)?),
span: mac.span(), // incorrect span, but shouldn't matter too much
attrs: ast::AttrVec::new(),
tokens: None,

View file

@ -13,7 +13,7 @@ use crate::rewrite::{Rewrite, RewriteContext};
pub(crate) mod lazy_static;
pub(crate) fn build_parser<'a>(context: &RewriteContext<'a>, tokens: TokenStream) -> Parser<'a> {
fn build_parser<'a>(context: &RewriteContext<'a>, tokens: TokenStream) -> Parser<'a> {
stream_to_parser(context.parse_sess.inner(), tokens, MACRO_ARGUMENTS)
}
@ -155,6 +155,14 @@ pub(crate) fn parse_macro_args(
})
}
pub(crate) fn parse_expr(
context: &RewriteContext<'_>,
tokens: TokenStream,
) -> Option<ptr::P<ast::Expr>> {
let mut parser = build_parser(context, tokens);
parser.parse_expr().ok()
}
const RUST_KW: [Symbol; 59] = [
kw::PathRoot,
kw::DollarCrate,