mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
Update builtin tool list
This commit is contained in:
parent
aaa5426fec
commit
cd9e90cc71
4 changed files with 16 additions and 25 deletions
|
@ -12,9 +12,6 @@ use std::sync::OnceLock;
|
|||
|
||||
use rustc_hash::FxHashMap;
|
||||
|
||||
/// Ignored attribute namespaces used by tools.
|
||||
pub const TOOL_MODULES: &[&str] = &["rustfmt", "clippy"];
|
||||
|
||||
pub struct BuiltinAttribute {
|
||||
pub name: &'static str,
|
||||
pub template: AttributeTemplate,
|
||||
|
|
|
@ -84,6 +84,14 @@ use crate::{
|
|||
LocalModuleId, Lookup, MacroExpander, MacroId, ModuleId, ProcMacroId, UseId,
|
||||
};
|
||||
|
||||
const PREDEFINED_TOOLS: &[SmolStr] = &[
|
||||
SmolStr::new_static("clippy"),
|
||||
SmolStr::new_static("rustfmt"),
|
||||
SmolStr::new_static("diagnostic"),
|
||||
SmolStr::new_static("miri"),
|
||||
SmolStr::new_static("rust_analyzer"),
|
||||
];
|
||||
|
||||
/// Contains the results of (early) name resolution.
|
||||
///
|
||||
/// A `DefMap` stores the module tree and the definitions that are in scope in every module after
|
||||
|
@ -160,7 +168,7 @@ impl DefMapCrateData {
|
|||
fn_proc_macro_mapping: FxHashMap::default(),
|
||||
proc_macro_loading_error: None,
|
||||
registered_attrs: Vec::new(),
|
||||
registered_tools: Vec::new(),
|
||||
registered_tools: PREDEFINED_TOOLS.into(),
|
||||
unstable_features: FxHashSet::default(),
|
||||
rustc_coherence_is_core: false,
|
||||
no_core: false,
|
||||
|
|
|
@ -10,7 +10,7 @@ use syntax::{ast, SmolStr};
|
|||
use triomphe::Arc;
|
||||
|
||||
use crate::{
|
||||
attr::builtin::{find_builtin_attr_idx, TOOL_MODULES},
|
||||
attr::builtin::find_builtin_attr_idx,
|
||||
db::DefDatabase,
|
||||
item_scope::BuiltinShadowMode,
|
||||
nameres::path_resolution::ResolveMode,
|
||||
|
@ -82,8 +82,7 @@ impl DefMap {
|
|||
let name = name.to_smol_str();
|
||||
let pred = |n: &_| *n == name;
|
||||
|
||||
let registered = self.data.registered_tools.iter().map(SmolStr::as_str);
|
||||
let is_tool = TOOL_MODULES.iter().copied().chain(registered).any(pred);
|
||||
let is_tool = self.data.registered_tools.iter().map(SmolStr::as_str).any(pred);
|
||||
// FIXME: tool modules can be shadowed by actual modules
|
||||
if is_tool {
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue