mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 11:31:15 +00:00
Support #[rustc_builtin_macro = "builtin_name"]
This commit is contained in:
parent
6198eb74b2
commit
5742cdf3f1
@ -1402,8 +1402,18 @@ impl ModCollector<'_, '_> {
|
|||||||
|
|
||||||
// Case 1: builtin macros
|
// Case 1: builtin macros
|
||||||
if attrs.by_key("rustc_builtin_macro").exists() {
|
if attrs.by_key("rustc_builtin_macro").exists() {
|
||||||
|
// `#[rustc_builtin_macro = "builtin_name"]` overrides the `macro_rules!` name.
|
||||||
|
let name;
|
||||||
|
let name = match attrs.by_key("rustc_builtin_macro").string_value() {
|
||||||
|
Some(it) => {
|
||||||
|
// FIXME: a hacky way to create a Name from string.
|
||||||
|
name = tt::Ident { text: it.clone(), id: tt::TokenId::unspecified() }.as_name();
|
||||||
|
&name
|
||||||
|
}
|
||||||
|
None => &mac.name,
|
||||||
|
};
|
||||||
let krate = self.def_collector.def_map.krate;
|
let krate = self.def_collector.def_map.krate;
|
||||||
if let Some(macro_id) = find_builtin_macro(&mac.name, krate, ast_id) {
|
if let Some(macro_id) = find_builtin_macro(name, krate, ast_id) {
|
||||||
self.def_collector.define_macro_rules(
|
self.def_collector.define_macro_rules(
|
||||||
self.module_id,
|
self.module_id,
|
||||||
mac.name.clone(),
|
mac.name.clone(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user