Auto merge of #17741 - Veykril:include-raw, r=Veykril

fix: Fix builtin includes rejecting raw string literals

Fixes https://github.com/rust-lang/rust-analyzer/issues/17701
This commit is contained in:
bors 2024-07-30 06:21:07 +00:00
commit 5fa145eab9
2 changed files with 14 additions and 2 deletions

View File

@ -439,7 +439,7 @@ macro_rules! include_bytes {
($file:expr,) => {{ /* compiler built-in */ }}; ($file:expr,) => {{ /* compiler built-in */ }};
} }
fn main() { include_bytes("foo"); } fn main() { include_bytes("foo");include_bytes(r"foo"); }
"#, "#,
expect![[r##" expect![[r##"
#[rustc_builtin_macro] #[rustc_builtin_macro]
@ -448,7 +448,7 @@ macro_rules! include_bytes {
($file:expr,) => {{ /* compiler built-in */ }}; ($file:expr,) => {{ /* compiler built-in */ }};
} }
fn main() { include_bytes("foo"); } fn main() { include_bytes("foo");include_bytes(r"foo"); }
"##]], "##]],
); );
} }

View File

@ -714,6 +714,12 @@ fn parse_string(tt: &tt::Subtree) -> Result<(Symbol, Span), ExpandError> {
kind: tt::LitKind::Str, kind: tt::LitKind::Str,
suffix: _, suffix: _,
})) => Ok((unescape_str(text), *span)), })) => Ok((unescape_str(text), *span)),
tt::TokenTree::Leaf(tt::Leaf::Literal(tt::Literal {
symbol: text,
span,
kind: tt::LitKind::StrRaw(_),
suffix: _,
})) => Ok((text.clone(), *span)),
// FIXME: We wrap expression fragments in parentheses which can break this expectation // FIXME: We wrap expression fragments in parentheses which can break this expectation
// here // here
// Remove this once we handle none delims correctly // Remove this once we handle none delims correctly
@ -725,6 +731,12 @@ fn parse_string(tt: &tt::Subtree) -> Result<(Symbol, Span), ExpandError> {
kind: tt::LitKind::Str, kind: tt::LitKind::Str,
suffix: _, suffix: _,
})) => Some((unescape_str(text), *span)), })) => Some((unescape_str(text), *span)),
tt::TokenTree::Leaf(tt::Leaf::Literal(tt::Literal {
symbol: text,
span,
kind: tt::LitKind::StrRaw(_),
suffix: _,
})) => Some((text.clone(), *span)),
_ => None, _ => None,
}) })
} }