mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-30 03:27:44 +00:00
Merge Trait and TraitAlias handling
This commit is contained in:
parent
a9450ebba3
commit
82f174fbd9
74 changed files with 68 additions and 577 deletions
|
|
@ -125,7 +125,6 @@ pub fn generic_def_for_node(
|
|||
hir::PathResolution::Def(hir::ModuleDef::Adt(it)) => it.into(),
|
||||
hir::PathResolution::Def(hir::ModuleDef::Function(it)) => it.into(),
|
||||
hir::PathResolution::Def(hir::ModuleDef::Trait(it)) => it.into(),
|
||||
hir::PathResolution::Def(hir::ModuleDef::TraitAlias(it)) => it.into(),
|
||||
hir::PathResolution::Def(hir::ModuleDef::TypeAlias(it)) => it.into(),
|
||||
hir::PathResolution::Def(hir::ModuleDef::Variant(it)) => {
|
||||
variant = Some(it);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use hir::{
|
|||
ExternCrateDecl, Field, Function, GenericDef, GenericParam, GenericSubstitution, HasContainer,
|
||||
HasVisibility, HirDisplay, Impl, InlineAsmOperand, ItemContainer, Label, Local, Macro, Module,
|
||||
ModuleDef, Name, PathResolution, Semantics, Static, StaticLifetime, Struct, ToolModule, Trait,
|
||||
TraitAlias, TupleField, TypeAlias, Variant, VariantDef, Visibility,
|
||||
TupleField, TypeAlias, Variant, VariantDef, Visibility,
|
||||
};
|
||||
use span::Edition;
|
||||
use stdx::{format_to, impl_from};
|
||||
|
|
@ -40,7 +40,6 @@ pub enum Definition {
|
|||
Const(Const),
|
||||
Static(Static),
|
||||
Trait(Trait),
|
||||
TraitAlias(TraitAlias),
|
||||
TypeAlias(TypeAlias),
|
||||
SelfType(Impl),
|
||||
GenericParam(GenericParam),
|
||||
|
|
@ -83,7 +82,6 @@ impl Definition {
|
|||
Definition::Const(it) => it.module(db),
|
||||
Definition::Static(it) => it.module(db),
|
||||
Definition::Trait(it) => it.module(db),
|
||||
Definition::TraitAlias(it) => it.module(db),
|
||||
Definition::TypeAlias(it) => it.module(db),
|
||||
Definition::Variant(it) => it.module(db),
|
||||
Definition::SelfType(it) => it.module(db),
|
||||
|
|
@ -122,7 +120,6 @@ impl Definition {
|
|||
Definition::Const(it) => container_to_definition(it.container(db)),
|
||||
Definition::Static(it) => container_to_definition(it.container(db)),
|
||||
Definition::Trait(it) => container_to_definition(it.container(db)),
|
||||
Definition::TraitAlias(it) => container_to_definition(it.container(db)),
|
||||
Definition::TypeAlias(it) => container_to_definition(it.container(db)),
|
||||
Definition::Variant(it) => Some(Adt::Enum(it.parent_enum(db)).into()),
|
||||
Definition::SelfType(it) => Some(it.module(db).into()),
|
||||
|
|
@ -151,7 +148,6 @@ impl Definition {
|
|||
Definition::Const(it) => it.visibility(db),
|
||||
Definition::Static(it) => it.visibility(db),
|
||||
Definition::Trait(it) => it.visibility(db),
|
||||
Definition::TraitAlias(it) => it.visibility(db),
|
||||
Definition::TypeAlias(it) => it.visibility(db),
|
||||
Definition::Variant(it) => it.visibility(db),
|
||||
Definition::ExternCrateDecl(it) => it.visibility(db),
|
||||
|
|
@ -185,7 +181,6 @@ impl Definition {
|
|||
Definition::Const(it) => it.name(db)?,
|
||||
Definition::Static(it) => it.name(db),
|
||||
Definition::Trait(it) => it.name(db),
|
||||
Definition::TraitAlias(it) => it.name(db),
|
||||
Definition::TypeAlias(it) => it.name(db),
|
||||
Definition::BuiltinType(it) => it.name(),
|
||||
Definition::TupleField(it) => it.name(),
|
||||
|
|
@ -230,7 +225,6 @@ impl Definition {
|
|||
Definition::Const(it) => it.docs_with_rangemap(db),
|
||||
Definition::Static(it) => it.docs_with_rangemap(db),
|
||||
Definition::Trait(it) => it.docs_with_rangemap(db),
|
||||
Definition::TraitAlias(it) => it.docs_with_rangemap(db),
|
||||
Definition::TypeAlias(it) => {
|
||||
it.docs_with_rangemap(db).or_else(|| {
|
||||
// docs are missing, try to fall back to the docs of the aliased item.
|
||||
|
|
@ -321,7 +315,6 @@ impl Definition {
|
|||
Definition::Const(it) => it.display(db, display_target).to_string(),
|
||||
Definition::Static(it) => it.display(db, display_target).to_string(),
|
||||
Definition::Trait(it) => it.display(db, display_target).to_string(),
|
||||
Definition::TraitAlias(it) => it.display(db, display_target).to_string(),
|
||||
Definition::TypeAlias(it) => it.display(db, display_target).to_string(),
|
||||
Definition::BuiltinType(it) => {
|
||||
it.name().display(db, display_target.edition).to_string()
|
||||
|
|
@ -589,7 +582,6 @@ impl<'db> NameClass<'db> {
|
|||
ast::Item::Module(it) => Definition::Module(sema.to_def(&it)?),
|
||||
ast::Item::Static(it) => Definition::Static(sema.to_def(&it)?),
|
||||
ast::Item::Trait(it) => Definition::Trait(sema.to_def(&it)?),
|
||||
ast::Item::TraitAlias(it) => Definition::TraitAlias(sema.to_def(&it)?),
|
||||
ast::Item::TypeAlias(it) => Definition::TypeAlias(sema.to_def(&it)?),
|
||||
ast::Item::Enum(it) => Definition::Adt(hir::Adt::Enum(sema.to_def(&it)?)),
|
||||
ast::Item::Struct(it) => Definition::Adt(hir::Adt::Struct(sema.to_def(&it)?)),
|
||||
|
|
@ -895,7 +887,7 @@ impl<'db> NameRefClass<'db> {
|
|||
}
|
||||
|
||||
impl_from!(
|
||||
Field, Module, Function, Adt, Variant, Const, Static, Trait, TraitAlias, TypeAlias, BuiltinType, Local,
|
||||
Field, Module, Function, Adt, Variant, Const, Static, Trait, TypeAlias, BuiltinType, Local,
|
||||
GenericParam, Label, Macro, ExternCrateDecl
|
||||
for Definition
|
||||
);
|
||||
|
|
@ -975,7 +967,6 @@ impl From<ModuleDef> for Definition {
|
|||
ModuleDef::Const(it) => Definition::Const(it),
|
||||
ModuleDef::Static(it) => Definition::Static(it),
|
||||
ModuleDef::Trait(it) => Definition::Trait(it),
|
||||
ModuleDef::TraitAlias(it) => Definition::TraitAlias(it),
|
||||
ModuleDef::TypeAlias(it) => Definition::TypeAlias(it),
|
||||
ModuleDef::Macro(it) => Definition::Macro(it),
|
||||
ModuleDef::BuiltinType(it) => Definition::BuiltinType(it),
|
||||
|
|
@ -1017,7 +1008,6 @@ impl From<GenericDef> for Definition {
|
|||
GenericDef::Function(it) => it.into(),
|
||||
GenericDef::Adt(it) => it.into(),
|
||||
GenericDef::Trait(it) => it.into(),
|
||||
GenericDef::TraitAlias(it) => it.into(),
|
||||
GenericDef::TypeAlias(it) => it.into(),
|
||||
GenericDef::Impl(it) => it.into(),
|
||||
GenericDef::Const(it) => it.into(),
|
||||
|
|
@ -1033,7 +1023,6 @@ impl TryFrom<Definition> for GenericDef {
|
|||
Definition::Function(it) => Ok(it.into()),
|
||||
Definition::Adt(it) => Ok(it.into()),
|
||||
Definition::Trait(it) => Ok(it.into()),
|
||||
Definition::TraitAlias(it) => Ok(it.into()),
|
||||
Definition::TypeAlias(it) => Ok(it.into()),
|
||||
Definition::SelfType(it) => Ok(it.into()),
|
||||
Definition::Const(it) => Ok(it.into()),
|
||||
|
|
|
|||
|
|
@ -195,8 +195,7 @@ macro_rules! impl_has_docs {
|
|||
}
|
||||
|
||||
impl_has_docs![
|
||||
Variant, Field, Static, Const, Trait, TraitAlias, TypeAlias, Macro, Function, Adt, Module,
|
||||
Impl, Crate,
|
||||
Variant, Field, Static, Const, Trait, TypeAlias, Macro, Function, Adt, Module, Impl, Crate,
|
||||
];
|
||||
|
||||
macro_rules! impl_has_docs_enum {
|
||||
|
|
|
|||
|
|
@ -475,8 +475,6 @@ fn validate_resolvable(
|
|||
}
|
||||
// FIXME
|
||||
ModuleDef::Trait(_) => return None,
|
||||
// FIXME
|
||||
ModuleDef::TraitAlias(_) => return None,
|
||||
ModuleDef::TypeAlias(alias) => alias.ty(db),
|
||||
ModuleDef::BuiltinType(builtin) => builtin.ty(db),
|
||||
ModuleDef::Adt(adt) => adt.ty(db),
|
||||
|
|
|
|||
|
|
@ -273,7 +273,6 @@ pub enum SymbolKind {
|
|||
Struct,
|
||||
ToolModule,
|
||||
Trait,
|
||||
TraitAlias,
|
||||
TypeAlias,
|
||||
TypeParam,
|
||||
Union,
|
||||
|
|
@ -306,7 +305,6 @@ impl From<hir::ModuleDef> for SymbolKind {
|
|||
hir::ModuleDef::Adt(hir::Adt::Enum(..)) => SymbolKind::Enum,
|
||||
hir::ModuleDef::Adt(hir::Adt::Union(..)) => SymbolKind::Union,
|
||||
hir::ModuleDef::Trait(..) => SymbolKind::Trait,
|
||||
hir::ModuleDef::TraitAlias(..) => SymbolKind::TraitAlias,
|
||||
hir::ModuleDef::TypeAlias(..) => SymbolKind::TypeAlias,
|
||||
hir::ModuleDef::BuiltinType(..) => SymbolKind::TypeAlias,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -163,7 +163,6 @@ impl Definition {
|
|||
Definition::Const(it) => name_range(it, sema).and_then(syn_ctx_is_root),
|
||||
Definition::Static(it) => name_range(it, sema).and_then(syn_ctx_is_root),
|
||||
Definition::Trait(it) => name_range(it, sema).and_then(syn_ctx_is_root),
|
||||
Definition::TraitAlias(it) => name_range(it, sema).and_then(syn_ctx_is_root),
|
||||
Definition::TypeAlias(it) => name_range(it, sema).and_then(syn_ctx_is_root),
|
||||
Definition::Local(it) => {
|
||||
name_range(it.primary_source(sema.db), sema).and_then(syn_ctx_is_root)
|
||||
|
|
|
|||
|
|
@ -352,7 +352,6 @@ impl Definition {
|
|||
hir::GenericDef::Function(it) => it.source(db).map(|src| src.syntax().cloned()),
|
||||
hir::GenericDef::Adt(it) => it.source(db).map(|src| src.syntax().cloned()),
|
||||
hir::GenericDef::Trait(it) => it.source(db).map(|src| src.syntax().cloned()),
|
||||
hir::GenericDef::TraitAlias(it) => it.source(db).map(|src| src.syntax().cloned()),
|
||||
hir::GenericDef::TypeAlias(it) => it.source(db).map(|src| src.syntax().cloned()),
|
||||
hir::GenericDef::Impl(it) => it.source(db).map(|src| src.syntax().cloned()),
|
||||
hir::GenericDef::Const(it) => it.source(db).map(|src| src.syntax().cloned()),
|
||||
|
|
|
|||
|
|
@ -357,7 +357,6 @@ impl Query {
|
|||
hir::ModuleDef::Adt(..)
|
||||
| hir::ModuleDef::TypeAlias(..)
|
||||
| hir::ModuleDef::BuiltinType(..)
|
||||
| hir::ModuleDef::TraitAlias(..)
|
||||
| hir::ModuleDef::Trait(..)
|
||||
);
|
||||
if non_type_for_type_only_query || !self.matches_assoc_mode(symbol.is_assoc) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue