mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 00:03:43 +00:00
Don't bail on parse errors in macro input for builtin expansion
This commit is contained in:
parent
b02027d4fe
commit
e7e87fc69d
@ -792,6 +792,23 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_format_args_expand_with_broken_member_access() {
|
||||
check_expansion(
|
||||
r#"
|
||||
#[rustc_builtin_macro]
|
||||
macro_rules! format_args {
|
||||
($fmt:expr) => ({ /* compiler built-in */ });
|
||||
($fmt:expr, $($args:tt)*) => ({ /* compiler built-in */ })
|
||||
}
|
||||
format_args!("{} {:?}", a.);
|
||||
"#,
|
||||
expect![[
|
||||
r#"unsafe{std::fmt::Arguments::new_v1(&[], &[std::fmt::ArgumentV1::new(&(a.),std::fmt::Display::fmt),])}"#
|
||||
]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_include_bytes_expand() {
|
||||
check_expansion(
|
||||
|
@ -90,7 +90,7 @@ pub fn parse_to_token_tree(text: &str) -> Option<(tt::Subtree, TokenMap)> {
|
||||
Some((subtree, conv.id_alloc.map))
|
||||
}
|
||||
|
||||
/// Split token tree with seperate expr: $($e:expr)SEP*
|
||||
/// Split token tree with separate expr: $($e:expr)SEP*
|
||||
pub fn parse_exprs_with_sep(tt: &tt::Subtree, sep: char) -> Vec<tt::Subtree> {
|
||||
if tt.token_trees.is_empty() {
|
||||
return Vec::new();
|
||||
@ -101,9 +101,6 @@ pub fn parse_exprs_with_sep(tt: &tt::Subtree, sep: char) -> Vec<tt::Subtree> {
|
||||
|
||||
while iter.peek_n(0).is_some() {
|
||||
let expanded = iter.expect_fragment(ParserEntryPoint::Expr);
|
||||
if expanded.err.is_some() {
|
||||
break;
|
||||
}
|
||||
|
||||
res.push(match expanded.value {
|
||||
None => break,
|
||||
|
Loading…
Reference in New Issue
Block a user