mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 22:54:58 +00:00
handle #[cfg]
s on generic parameters
This commit is contained in:
parent
b64e5b3919
commit
008b639ef5
3 changed files with 65 additions and 4 deletions
|
@ -605,6 +605,41 @@ impl<'a> Ctx<'a> {
|
|||
generics.fill(&self.body_ctx, node);
|
||||
|
||||
generics.shrink_to_fit();
|
||||
|
||||
if let Some(params) = node.generic_param_list() {
|
||||
let params_by_name: FxHashMap<_, _> = params
|
||||
.generic_params()
|
||||
.filter_map(|param| {
|
||||
let name = match ¶m {
|
||||
ast::GenericParam::ConstParam(param) => param.name()?.as_name(),
|
||||
ast::GenericParam::LifetimeParam(param) => {
|
||||
Name::new_lifetime(¶m.lifetime()?)
|
||||
}
|
||||
ast::GenericParam::TypeParam(param) => param.name()?.as_name(),
|
||||
};
|
||||
Some((name, param))
|
||||
})
|
||||
.collect();
|
||||
for (idx, param) in generics.type_or_consts.iter() {
|
||||
if let Some(name) = param.name() {
|
||||
if let Some(param) = params_by_name.get(name) {
|
||||
self.add_attrs(
|
||||
idx.into(),
|
||||
RawAttrs::new(self.db.upcast(), param, self.hygiene()),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (idx, param) in generics.lifetimes.iter() {
|
||||
if let Some(param) = params_by_name.get(¶m.name) {
|
||||
self.add_attrs(
|
||||
idx.into(),
|
||||
RawAttrs::new(self.db.upcast(), param, self.hygiene()),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Interned::new(generics)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue