mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-15 02:09:36 +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
|
|
@ -225,7 +225,6 @@ pub(crate) fn resolve_doc_path_for_def(
|
|||
Definition::Const(it) => it.resolve_doc_path(db, link, ns, is_inner_doc),
|
||||
Definition::Static(it) => it.resolve_doc_path(db, link, ns, is_inner_doc),
|
||||
Definition::Trait(it) => it.resolve_doc_path(db, link, ns, is_inner_doc),
|
||||
Definition::TraitAlias(it) => it.resolve_doc_path(db, link, ns, is_inner_doc),
|
||||
Definition::TypeAlias(it) => it.resolve_doc_path(db, link, ns, is_inner_doc),
|
||||
Definition::Macro(it) => it.resolve_doc_path(db, link, ns, is_inner_doc),
|
||||
Definition::Field(it) => it.resolve_doc_path(db, link, ns, is_inner_doc),
|
||||
|
|
@ -671,11 +670,9 @@ fn filename_and_frag_for_def(
|
|||
None => String::from("index.html"),
|
||||
},
|
||||
Definition::Trait(t) => {
|
||||
// FIXME(trait-alias): url should be traitalias. for aliases
|
||||
format!("trait.{}.html", t.name(db).as_str())
|
||||
}
|
||||
Definition::TraitAlias(t) => {
|
||||
format!("traitalias.{}.html", t.name(db).as_str())
|
||||
}
|
||||
Definition::TypeAlias(t) => {
|
||||
format!("type.{}.html", t.name(db).as_str())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -162,7 +162,6 @@ fn structure_node(node: &SyntaxNode, config: &FileStructureConfig) -> Option<Str
|
|||
ast::Enum(it) => decl(it, StructureNodeKind::SymbolKind(SymbolKind::Enum)),
|
||||
ast::Variant(it) => decl(it, StructureNodeKind::SymbolKind(SymbolKind::Variant)),
|
||||
ast::Trait(it) => decl(it, StructureNodeKind::SymbolKind(SymbolKind::Trait)),
|
||||
ast::TraitAlias(it) => decl(it, StructureNodeKind::SymbolKind(SymbolKind::TraitAlias)),
|
||||
ast::Module(it) => decl(it, StructureNodeKind::SymbolKind(SymbolKind::Module)),
|
||||
ast::Macro(it) => decl(it, StructureNodeKind::SymbolKind(SymbolKind::Macro)),
|
||||
ast::TypeAlias(it) => decl_with_type_ref(&it, it.ty(), StructureNodeKind::SymbolKind(SymbolKind::TypeAlias)),
|
||||
|
|
@ -553,7 +552,7 @@ fn let_statements() {
|
|||
navigation_range: 251..256,
|
||||
node_range: 245..262,
|
||||
kind: SymbolKind(
|
||||
TraitAlias,
|
||||
Trait,
|
||||
),
|
||||
detail: None,
|
||||
deprecated: false,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ pub enum FoldKind {
|
|||
Consts,
|
||||
Statics,
|
||||
TypeAliases,
|
||||
TraitAliases,
|
||||
ExternCrates,
|
||||
// endregion: item runs
|
||||
}
|
||||
|
|
@ -147,11 +146,6 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec<Fold> {
|
|||
res.push(Fold { range, kind: FoldKind::TypeAliases })
|
||||
}
|
||||
},
|
||||
ast::TraitAlias(alias) => {
|
||||
if let Some(range) = contiguous_range_for_item_group(alias, &mut visited_nodes) {
|
||||
res.push(Fold { range, kind: FoldKind::TraitAliases })
|
||||
}
|
||||
},
|
||||
ast::ExternCrate(extern_crate) => {
|
||||
if let Some(range) = contiguous_range_for_item_group(extern_crate, &mut visited_nodes) {
|
||||
res.push(Fold { range, kind: FoldKind::ExternCrates })
|
||||
|
|
@ -351,7 +345,6 @@ mod tests {
|
|||
FoldKind::ReturnType => "returntype",
|
||||
FoldKind::MatchArm => "matcharm",
|
||||
FoldKind::Function => "function",
|
||||
FoldKind::TraitAliases => "traitaliases",
|
||||
FoldKind::ExternCrates => "externcrates",
|
||||
};
|
||||
assert_eq!(kind, &attr.unwrap());
|
||||
|
|
|
|||
|
|
@ -401,7 +401,6 @@ fn definition_owner_name(db: &RootDatabase, def: Definition, edition: Edition) -
|
|||
Definition::GenericParam(generic_param) => match generic_param.parent() {
|
||||
hir::GenericDef::Adt(it) => Some(it.name(db)),
|
||||
hir::GenericDef::Trait(it) => Some(it.name(db)),
|
||||
hir::GenericDef::TraitAlias(it) => Some(it.name(db)),
|
||||
hir::GenericDef::TypeAlias(it) => Some(it.name(db)),
|
||||
|
||||
hir::GenericDef::Impl(i) => i.self_ty(db).as_adt().map(|adt| adt.name(db)),
|
||||
|
|
|
|||
|
|
@ -209,7 +209,6 @@ pub(crate) fn def_to_kind(db: &RootDatabase, def: Definition) -> SymbolInformati
|
|||
Definition::Const(..) => Constant,
|
||||
Definition::Static(..) => StaticVariable,
|
||||
Definition::Trait(..) => Trait,
|
||||
Definition::TraitAlias(..) => Trait,
|
||||
Definition::TypeAlias(it) => {
|
||||
if it.as_assoc_item(db).is_some() {
|
||||
AssociatedType
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ fn find_ancestors(item: SyntaxElement, direction: Direction, range: TextRange) -
|
|||
SyntaxKind::MACRO_CALL,
|
||||
SyntaxKind::TYPE_ALIAS,
|
||||
SyntaxKind::TRAIT,
|
||||
SyntaxKind::TRAIT_ALIAS,
|
||||
SyntaxKind::IMPL,
|
||||
SyntaxKind::MACRO_DEF,
|
||||
SyntaxKind::STRUCT,
|
||||
|
|
|
|||
|
|
@ -226,9 +226,6 @@ impl TryToNav for FileSymbol {
|
|||
hir::ModuleDef::Trait(it) => {
|
||||
Some(it.display(db, display_target).to_string())
|
||||
}
|
||||
hir::ModuleDef::TraitAlias(it) => {
|
||||
Some(it.display(db, display_target).to_string())
|
||||
}
|
||||
hir::ModuleDef::TypeAlias(it) => {
|
||||
Some(it.display(db, display_target).to_string())
|
||||
}
|
||||
|
|
@ -261,7 +258,6 @@ impl TryToNav for Definition {
|
|||
Definition::Const(it) => it.try_to_nav(db),
|
||||
Definition::Static(it) => it.try_to_nav(db),
|
||||
Definition::Trait(it) => it.try_to_nav(db),
|
||||
Definition::TraitAlias(it) => it.try_to_nav(db),
|
||||
Definition::TypeAlias(it) => it.try_to_nav(db),
|
||||
Definition::ExternCrateDecl(it) => it.try_to_nav(db),
|
||||
Definition::InlineAsmOperand(it) => it.try_to_nav(db),
|
||||
|
|
@ -287,7 +283,6 @@ impl TryToNav for hir::ModuleDef {
|
|||
hir::ModuleDef::Const(it) => it.try_to_nav(db),
|
||||
hir::ModuleDef::Static(it) => it.try_to_nav(db),
|
||||
hir::ModuleDef::Trait(it) => it.try_to_nav(db),
|
||||
hir::ModuleDef::TraitAlias(it) => it.try_to_nav(db),
|
||||
hir::ModuleDef::TypeAlias(it) => it.try_to_nav(db),
|
||||
hir::ModuleDef::Macro(it) => it.try_to_nav(db),
|
||||
hir::ModuleDef::BuiltinType(_) => None,
|
||||
|
|
@ -366,12 +361,6 @@ impl ToNavFromAst for hir::Trait {
|
|||
container_name(db, self, self.krate(db).edition(db))
|
||||
}
|
||||
}
|
||||
impl ToNavFromAst for hir::TraitAlias {
|
||||
const KIND: SymbolKind = SymbolKind::TraitAlias;
|
||||
fn container_name(self, db: &RootDatabase) -> Option<SmolStr> {
|
||||
container_name(db, self, self.krate(db).edition(db))
|
||||
}
|
||||
}
|
||||
|
||||
impl<D> TryToNav for D
|
||||
where
|
||||
|
|
|
|||
|
|
@ -1783,7 +1783,7 @@ trait Bar$0 = Foo where Self: ;
|
|||
fn foo<T: Bar>(_: impl Bar, _: &dyn Bar) {}
|
||||
"#,
|
||||
expect![[r#"
|
||||
Bar TraitAlias FileId(0) 13..42 19..22
|
||||
Bar Trait FileId(0) 13..42 19..22
|
||||
|
||||
FileId(0) 53..56
|
||||
FileId(0) 66..69
|
||||
|
|
|
|||
|
|
@ -493,7 +493,6 @@ fn module_def_doctest(db: &RootDatabase, def: Definition) -> Option<Runnable> {
|
|||
Definition::Const(it) => it.attrs(db),
|
||||
Definition::Static(it) => it.attrs(db),
|
||||
Definition::Trait(it) => it.attrs(db),
|
||||
Definition::TraitAlias(it) => it.attrs(db),
|
||||
Definition::TypeAlias(it) => it.attrs(db),
|
||||
Definition::Macro(it) => it.attrs(db),
|
||||
Definition::SelfType(it) => it.attrs(db),
|
||||
|
|
|
|||
|
|
@ -339,10 +339,6 @@ fn signature_help_for_generics(
|
|||
res.doc = it.docs(db);
|
||||
format_to!(res.signature, "trait {}", it.name(db).display(db, edition));
|
||||
}
|
||||
hir::GenericDef::TraitAlias(it) => {
|
||||
res.doc = it.docs(db);
|
||||
format_to!(res.signature, "trait {}", it.name(db).display(db, edition));
|
||||
}
|
||||
hir::GenericDef::TypeAlias(it) => {
|
||||
res.doc = it.docs(db);
|
||||
format_to!(res.signature, "type {}", it.name(db).display(db, edition));
|
||||
|
|
|
|||
|
|
@ -576,7 +576,6 @@ pub(super) fn highlight_def(
|
|||
h
|
||||
}
|
||||
Definition::Trait(_) => Highlight::new(HlTag::Symbol(SymbolKind::Trait)),
|
||||
Definition::TraitAlias(_) => Highlight::new(HlTag::Symbol(SymbolKind::TraitAlias)),
|
||||
Definition::TypeAlias(type_) => {
|
||||
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::TypeAlias));
|
||||
|
||||
|
|
@ -780,7 +779,6 @@ fn highlight_name_by_syntax(name: ast::Name) -> Highlight {
|
|||
MACRO_RULES => SymbolKind::Macro,
|
||||
CONST_PARAM => SymbolKind::ConstParam,
|
||||
SELF_PARAM => SymbolKind::SelfParam,
|
||||
TRAIT_ALIAS => SymbolKind::TraitAlias,
|
||||
ASM_OPERAND_NAMED => SymbolKind::Local,
|
||||
_ => return default.into(),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -311,7 +311,6 @@ fn module_def_to_hl_tag(def: Definition) -> HlTag {
|
|||
Definition::Const(_) => SymbolKind::Const,
|
||||
Definition::Static(_) => SymbolKind::Static,
|
||||
Definition::Trait(_) => SymbolKind::Trait,
|
||||
Definition::TraitAlias(_) => SymbolKind::TraitAlias,
|
||||
Definition::TypeAlias(_) => SymbolKind::TypeAlias,
|
||||
Definition::BuiltinLifetime(_) => SymbolKind::LifetimeParam,
|
||||
Definition::BuiltinType(_) => return HlTag::BuiltinType,
|
||||
|
|
|
|||
|
|
@ -160,7 +160,6 @@ impl HlTag {
|
|||
SymbolKind::Struct => "struct",
|
||||
SymbolKind::ToolModule => "tool_module",
|
||||
SymbolKind::Trait => "trait",
|
||||
SymbolKind::TraitAlias => "trait_alias",
|
||||
SymbolKind::TypeAlias => "type_alias",
|
||||
SymbolKind::TypeParam => "type_param",
|
||||
SymbolKind::Union => "union",
|
||||
|
|
|
|||
|
|
@ -78,8 +78,8 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
|
|||
<span class="brace">}</span>
|
||||
|
||||
<span class="keyword">use</span> <span class="unresolved_reference">foo</span><span class="operator">::</span><span class="unresolved_reference">bar</span> <span class="keyword">as</span> <span class="variable declaration">baz</span><span class="semicolon">;</span>
|
||||
<span class="keyword">trait</span> <span class="trait_alias declaration">Bar</span> <span class="operator">=</span> <span class="unresolved_reference">Baz</span><span class="semicolon">;</span>
|
||||
<span class="keyword">trait</span> <span class="trait_alias declaration">Foo</span> <span class="operator">=</span> <span class="trait_alias">Bar</span><span class="semicolon">;</span>
|
||||
<span class="keyword">trait</span> <span class="trait declaration">Bar</span> <span class="operator">=</span> <span class="unresolved_reference">Baz</span><span class="semicolon">;</span>
|
||||
<span class="keyword">trait</span> <span class="trait declaration">Foo</span> <span class="operator">=</span> <span class="trait">Bar</span><span class="semicolon">;</span>
|
||||
|
||||
<span class="keyword">fn</span> <span class="function declaration">main</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="brace">{</span>
|
||||
<span class="keyword">let</span> <span class="variable declaration">a</span> <span class="operator">=</span> <span class="char_literal">'</span><span class="escape_sequence">\n</span><span class="char_literal">'</span><span class="semicolon">;</span>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue