mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-12 08:52:07 +00:00
Merge pull request #20185 from ChayimFriedman2/variant-symbols
feat: Include enum variants in world symbols
This commit is contained in:
commit
5bae4f5c81
2 changed files with 75 additions and 0 deletions
|
|
@ -125,6 +125,13 @@ impl<'a> SymbolCollector<'a> {
|
||||||
}
|
}
|
||||||
ModuleDefId::AdtId(AdtId::EnumId(id)) => {
|
ModuleDefId::AdtId(AdtId::EnumId(id)) => {
|
||||||
this.push_decl(id, name, false, None);
|
this.push_decl(id, name, false, None);
|
||||||
|
let enum_name = this.db.enum_signature(id).name.as_str().to_smolstr();
|
||||||
|
this.with_container_name(Some(enum_name), |this| {
|
||||||
|
let variants = id.enum_variants(this.db);
|
||||||
|
for (variant_id, variant_name, _) in &variants.variants {
|
||||||
|
this.push_decl(*variant_id, variant_name, true, None);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
ModuleDefId::AdtId(AdtId::UnionId(id)) => {
|
ModuleDefId::AdtId(AdtId::UnionId(id)) => {
|
||||||
this.push_decl(id, name, false, None);
|
this.push_decl(id, name, false, None);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,40 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
|
FileSymbol {
|
||||||
|
name: "A",
|
||||||
|
def: Variant(
|
||||||
|
Variant {
|
||||||
|
id: EnumVariantId(
|
||||||
|
7800,
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
loc: DeclarationLocation {
|
||||||
|
hir_file_id: FileId(
|
||||||
|
EditionedFileId(
|
||||||
|
Id(2000),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
ptr: SyntaxNodePtr {
|
||||||
|
kind: VARIANT,
|
||||||
|
range: 201..202,
|
||||||
|
},
|
||||||
|
name_ptr: AstPtr(
|
||||||
|
SyntaxNodePtr {
|
||||||
|
kind: NAME,
|
||||||
|
range: 201..202,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
container_name: Some(
|
||||||
|
"Enum",
|
||||||
|
),
|
||||||
|
is_alias: false,
|
||||||
|
is_assoc: true,
|
||||||
|
is_import: false,
|
||||||
|
do_not_complete: Yes,
|
||||||
|
},
|
||||||
FileSymbol {
|
FileSymbol {
|
||||||
name: "Alias",
|
name: "Alias",
|
||||||
def: TypeAlias(
|
def: TypeAlias(
|
||||||
|
|
@ -42,6 +76,40 @@
|
||||||
is_import: false,
|
is_import: false,
|
||||||
do_not_complete: Yes,
|
do_not_complete: Yes,
|
||||||
},
|
},
|
||||||
|
FileSymbol {
|
||||||
|
name: "B",
|
||||||
|
def: Variant(
|
||||||
|
Variant {
|
||||||
|
id: EnumVariantId(
|
||||||
|
7801,
|
||||||
|
),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
loc: DeclarationLocation {
|
||||||
|
hir_file_id: FileId(
|
||||||
|
EditionedFileId(
|
||||||
|
Id(2000),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
ptr: SyntaxNodePtr {
|
||||||
|
kind: VARIANT,
|
||||||
|
range: 204..205,
|
||||||
|
},
|
||||||
|
name_ptr: AstPtr(
|
||||||
|
SyntaxNodePtr {
|
||||||
|
kind: NAME,
|
||||||
|
range: 204..205,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
container_name: Some(
|
||||||
|
"Enum",
|
||||||
|
),
|
||||||
|
is_alias: false,
|
||||||
|
is_assoc: true,
|
||||||
|
is_import: false,
|
||||||
|
do_not_complete: Yes,
|
||||||
|
},
|
||||||
FileSymbol {
|
FileSymbol {
|
||||||
name: "CONST",
|
name: "CONST",
|
||||||
def: Const(
|
def: Const(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue